From ec3a5e9fb8ed64ad1ec5c5992ccc845a2242c874 Mon Sep 17 00:00:00 2001 From: Andreas Gerler Date: Tue, 13 Jan 2015 18:25:35 +0100 Subject: [PATCH] new version of twittering-mode. Signed-off-by: Andreas Gerler --- bba.org | 6 +- custom.el | 17 +- .../twittering-mode-autoloads.el | 29 + .../twittering-mode-pkg.el | 1 + .../twittering-mode.el | 880 ++- elpa/twittering-mode-readme.txt | 9 + .../lisp/twittering-mode-3.0.0/ChangeLog | 6829 ----------------- .../lisp/twittering-mode-3.0.0/INSTALL | 46 - .../lisp/twittering-mode-3.0.0/INSTALL.ja | 49 - .../lisp/twittering-mode-3.0.0/LAST-VERSION | 1 - .../lisp/twittering-mode-3.0.0/Makefile | 65 - .../lisp/twittering-mode-3.0.0/NEWS | 655 -- .../lisp/twittering-mode-3.0.0/NEWS.ja | 618 -- .../lisp/twittering-mode-3.0.0/README.ja | 52 - .../twittering-mode-3.0.0/README.markdown | 338 - .../lisp/twittering-mode-3.0.0/TODO | 5 - .../lisp/twittering-mode-3.0.0/VERSION | 1 - .../lisp/twittering-mode-3.0.0/cert/.nosearch | 0 .../Equifax_Secure_Certificate_Authority.cer | 19 - .../cert/GeoTrust_Global_CA.cer | 20 - .../twittering-mode-3.0.0/cert/PCA-3G2.pem | 19 - .../lisp/twittering-mode-3.0.0/doc/.nosearch | 0 .../lisp/twittering-mode-3.0.0/doc/Makefile | 11 - .../twittering-mode-3.0.0/doc/manual/Makefile | 12 - .../twittering-mode-3.0.0/doc/manual/fdl.texi | 402 - .../doc/manual/twmode.texinfo | 222 - .../twittering-mode-3.0.0/doc/web/.htaccess | 5 - .../twittering-mode-3.0.0/doc/web/Makefile | 71 - .../doc/web/footer.rhtml | 27 - .../doc/web/header.rhtml | 50 - .../doc/web/how-to-contribute.text | 51 - .../doc/web/images/bottom.jpg | Bin 2658 -> 0 bytes .../doc/web/images/content.jpg | Bin 449 -> 0 bytes .../doc/web/images/famfamfam-logo.png | Bin 2701 -> 0 bytes .../doc/web/images/lang-en.png | Bin 609 -> 0 bytes .../doc/web/images/lang-ja.png | Bin 420 -> 0 bytes .../doc/web/images/logo.png | Bin 18815 -> 0 bytes .../doc/web/images/logo.svg | 295 - .../doc/web/images/menu.png | Bin 525 -> 0 bytes .../doc/web/images/pic.jpg | Bin 21894 -> 0 bytes .../doc/web/images/screen-friends-no-icon.png | Bin 180074 -> 0 bytes .../doc/web/images/screen-friends.png | Bin 151293 -> 0 bytes .../doc/web/images/screen-user-no-icon.png | Bin 129220 -> 0 bytes .../doc/web/images/screen-user.png | Bin 107213 -> 0 bytes .../doc/web/images/top.jpg | Bin 935 -> 0 bytes .../twittering-mode-3.0.0/doc/web/index.text | 45 - .../lisp/twittering-mode-3.0.0/doc/web/ja.po | 443 -- .../twittering-mode-3.0.0/doc/web/publish.rb | 168 - .../doc/web/screenshot.text | 31 - .../twittering-mode-3.0.0/doc/web/style.css | 190 - .../twittering-mode-3.0.0/emacs21/.nosearch | 0 .../twittering-mode-3.0.0/emacs21/hex-util.el | 75 - .../twittering-mode-3.0.0/emacs21/sha1.el | 442 -- .../lisp/twittering-mode-3.0.0/emacs21/tls.el | 209 - .../twittering-mode-3.0.0/howto/.nosearch | 0 .../lisp/twittering-mode-3.0.0/howto/release | 16 - .../lisp/twittering-mode-3.0.0/http-client.rb | 173 - .../lisp/twittering-mode-3.0.0/misc/.nosearch | 0 .../misc/twitter-icon.svg | 249 - .../misc/vernum-updater.rb | 208 - .../lisp/twittering-mode-3.0.0/test.el | 455 -- .../lisp/twittering-mode-3.0.0/test/.nosearch | 0 .../test/el-test-runner.el | 72 - .../test/fixture/timeline-data.el | 309 - .../twittering-mode-3.0.0/test/run-test.sh | 29 - .../lisp/twittering-mode-3.0.0/test/server.rb | 90 - .../test/test-twittering-mode.el | 893 --- .../url-emacs21/.nosearch | 0 .../url-emacs21/auto-autoloads.el | 664 -- .../url-emacs21/custom-load.el | 47 - .../url-emacs21/docomp.el | 88 - .../url-emacs21/url-about.el | 100 - .../url-emacs21/url-auth.el | 324 - .../url-emacs21/url-auto.el | 664 -- .../url-emacs21/url-buffer.el | 42 - .../url-emacs21/url-cache.el | 203 - .../url-emacs21/url-cid.el | 65 - .../url-emacs21/url-cookie.el | 468 -- .../url-emacs21/url-dav.el | 973 --- .../url-emacs21/url-dired.el | 102 - .../url-emacs21/url-expand.el | 143 - .../url-emacs21/url-file.el | 239 - .../url-emacs21/url-ftp.el | 44 - .../url-emacs21/url-gw.el | 264 - .../url-emacs21/url-handlers.el | 252 - .../url-emacs21/url-history.el | 199 - .../url-emacs21/url-http.el | 1234 --- .../url-emacs21/url-https.el | 53 - .../url-emacs21/url-imap.el | 81 - .../url-emacs21/url-irc.el | 78 - .../url-emacs21/url-ldap.el | 233 - .../url-emacs21/url-mailto.el | 129 - .../url-emacs21/url-methods.el | 149 - .../url-emacs21/url-misc.el | 119 - .../url-emacs21/url-news.el | 135 - .../url-emacs21/url-nfs.el | 97 - .../url-emacs21/url-ns.el | 106 - .../url-emacs21/url-parse.el | 207 - .../url-emacs21/url-privacy.el | 83 - .../url-emacs21/url-proxy.el | 78 - .../url-emacs21/url-util.el | 485 -- .../url-emacs21/url-vars.el | 438 -- .../twittering-mode-3.0.0/url-emacs21/url.el | 273 - .../url-emacs21/vc-dav.el | 177 - .../twittering-mode-3.0.0/win-curl/.nosearch | 0 .../win-curl/README_j.txt | 58 - .../win-curl/curl-ca-bundle.crt | 4393 ----------- .../twittering-mode-3.0.0/win-curl/curl.exe | Bin 655360 -> 0 bytes .../win-curl/docs/CHANGES | 1344 ---- .../win-curl/docs/COPYING | 21 - .../twittering-mode-3.0.0/win-curl/docs/FAQ | 782 -- .../win-curl/docs/FEATURES | 108 - .../win-curl/docs/LICENSE.OpenSSL.txt | 127 - .../win-curl/docs/README | 70 - .../win-curl/docs/README.win32 | 22 - .../win-curl/docs/curl.html | 1436 ---- 116 files changed, 689 insertions(+), 31610 deletions(-) create mode 100644 elpa/twittering-mode-20150105.333/twittering-mode-autoloads.el create mode 100644 elpa/twittering-mode-20150105.333/twittering-mode-pkg.el rename {xemacs-packages/lisp/twittering-mode-3.0.0 => elpa/twittering-mode-20150105.333}/twittering-mode.el (93%) create mode 100644 elpa/twittering-mode-readme.txt delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/ChangeLog delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/INSTALL delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/INSTALL.ja delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/LAST-VERSION delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/Makefile delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/NEWS delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/NEWS.ja delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/README.ja delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/README.markdown delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/TODO delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/VERSION delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/cert/.nosearch delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/cert/Equifax_Secure_Certificate_Authority.cer delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/cert/GeoTrust_Global_CA.cer delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/cert/PCA-3G2.pem delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/.nosearch delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/Makefile delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/manual/Makefile delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/manual/fdl.texi delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/manual/twmode.texinfo delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/.htaccess delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/Makefile delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/footer.rhtml delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/header.rhtml delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/how-to-contribute.text delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/bottom.jpg delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/content.jpg delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/famfamfam-logo.png delete mode 100755 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/lang-en.png delete mode 100755 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/lang-ja.png delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/logo.png delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/logo.svg delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/menu.png delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/pic.jpg delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/screen-friends-no-icon.png delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/screen-friends.png delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/screen-user-no-icon.png delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/screen-user.png delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/top.jpg delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/index.text delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/ja.po delete mode 100755 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/publish.rb delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/screenshot.text delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/style.css delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/.nosearch delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/hex-util.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/sha1.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/tls.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/howto/.nosearch delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/howto/release delete mode 100755 xemacs-packages/lisp/twittering-mode-3.0.0/http-client.rb delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/misc/.nosearch delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/misc/twitter-icon.svg delete mode 100755 xemacs-packages/lisp/twittering-mode-3.0.0/misc/vernum-updater.rb delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/test.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/test/.nosearch delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/test/el-test-runner.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/test/fixture/timeline-data.el delete mode 100755 xemacs-packages/lisp/twittering-mode-3.0.0/test/run-test.sh delete mode 100755 xemacs-packages/lisp/twittering-mode-3.0.0/test/server.rb delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/test/test-twittering-mode.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/.nosearch delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/auto-autoloads.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/custom-load.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/docomp.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-about.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-auth.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-auto.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-buffer.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-cache.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-cid.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-cookie.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-dav.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-dired.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-expand.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-file.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-ftp.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-gw.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-handlers.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-history.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-http.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-https.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-imap.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-irc.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-ldap.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-mailto.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-methods.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-misc.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-news.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-nfs.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-ns.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-parse.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-privacy.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-proxy.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-util.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-vars.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/vc-dav.el delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/.nosearch delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/README_j.txt delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/curl-ca-bundle.crt delete mode 100755 xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/curl.exe delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/CHANGES delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/COPYING delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/FAQ delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/FEATURES delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/LICENSE.OpenSSL.txt delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/README delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/README.win32 delete mode 100644 xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/curl.html diff --git a/bba.org b/bba.org index 80f60542..eb0f2354 100644 --- a/bba.org +++ b/bba.org @@ -778,7 +778,7 @@ BUGBUG: set `twittering-proxy-server' and `twittering-proxy-port' with strings from environment variable http_proxy #+BEGIN_SRC emacs-lisp - (add-to-list 'load-path "~/.emacs.d/xemacs-packages/lisp/twittering-mode-3.0.0") + (add-to-list 'load-path "~/.emacs.d/elpa/twittering-mode-20150105.333") (require 'twittering-mode) (cond ((string-equal system-type "gnu/linux") @@ -789,6 +789,9 @@ from environment variable http_proxy (setq twittering-use-master-password t) + (if (getenv "http_proxy") + (twittering-toggle-proxy)) + #+END_SRC *** [[http://www.emacswiki.org/emacs/MalyonMode][Mylon]] @@ -1199,6 +1202,7 @@ function to convert groups of spaces to hard tabs. (define-key bba/launcher "s" 'shell) (define-key bba/launcher "S" 'synonyms) (define-key bba/launcher "t" 'git-timemachine) + (define-key bba/launcher "T" 'twittering-mode) (define-key global-map "\C-c\C-t" 'insert-timestamp) (define-key global-map "\C-c\M-c" 'centered-cursor-mode) diff --git a/custom.el b/custom.el index 32d5839f..0bb1a2e8 100644 --- a/custom.el +++ b/custom.el @@ -1,8 +1,8 @@ (custom-set-variables - ;; custom-set-variables was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. '(blink-cursor-mode t) '(gnuserv-program (concat exec-directory "/gnuserv")) '(history-length 1000) @@ -10,16 +10,17 @@ '(magit-repo-dirs (quote ("~/git"))) '(package-archives (quote (("gnu" . "http://elpa.gnu.org/packages/") ("marmalade" . "http://marmalade-repo.org/packages/") ("melpa" . "http://melpa.milkbox.net/packages/")))) '(package-user-dir "~/.emacs.d/elpa") + '(paradox-github-token t) '(recentf-max-saved-items 42) '(savehist-mode t nil (savehist)) '(template-default-directories (quote ("~/.emacs.d/templates/"))) '(toolbar-visible-p nil) '(vc-handled-backends (quote (RCS CVS SVN SCCS Bzr Hg Mtn Arch)))) (custom-set-faces - ;; custom-set-faces was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. '(default ((t (:size "14pt" :family "Lucidatypewriter")))) '(cursor ((t (:foreground "red")))) '(rainbow-delimiters-depth-1-face ((((background dark)) (:foreground "gray90")))) diff --git a/elpa/twittering-mode-20150105.333/twittering-mode-autoloads.el b/elpa/twittering-mode-20150105.333/twittering-mode-autoloads.el new file mode 100644 index 00000000..1d7bc128 --- /dev/null +++ b/elpa/twittering-mode-20150105.333/twittering-mode-autoloads.el @@ -0,0 +1,29 @@ +;;; twittering-mode-autoloads.el --- automatically extracted autoloads +;; +;;; Code: + + +;;;### (autoloads (twit) "twittering-mode" "twittering-mode.el" (21685 +;;;;;; 21202 0 0)) +;;; Generated autoloads from twittering-mode.el + +(autoload 'twit "twittering-mode" "\ +Start twittering-mode. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads nil nil ("twittering-mode-pkg.el") (21685 21202 +;;;;;; 231505 0)) + +;;;*** + +(provide 'twittering-mode-autoloads) +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; coding: utf-8 +;; End: +;;; twittering-mode-autoloads.el ends here diff --git a/elpa/twittering-mode-20150105.333/twittering-mode-pkg.el b/elpa/twittering-mode-20150105.333/twittering-mode-pkg.el new file mode 100644 index 00000000..d262ae0c --- /dev/null +++ b/elpa/twittering-mode-20150105.333/twittering-mode-pkg.el @@ -0,0 +1 @@ +(define-package "twittering-mode" "20150105.333" "Major mode for Twitter" (quote nil)) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/twittering-mode.el b/elpa/twittering-mode-20150105.333/twittering-mode.el similarity index 93% rename from xemacs-packages/lisp/twittering-mode-3.0.0/twittering-mode.el rename to elpa/twittering-mode-20150105.333/twittering-mode.el index 6a822fc1..07d4001e 100644 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/twittering-mode.el +++ b/elpa/twittering-mode-20150105.333/twittering-mode.el @@ -7,8 +7,9 @@ ;; Tsuyoshi CHO ;; Alberto Garcia ;; Created: Sep 4, 2007 -;; Version: HEAD -;; Identity: $Id$ +;; Version: 20150105.333 +;; X-Original-Version: HEAD +;; Identity: $Id: 3900030719827789c5fe196feacaa78b4ea5a702 $ ;; Keywords: twitter web ;; URL: http://twmode.sf.net/ @@ -84,7 +85,7 @@ (require 'url) (defconst twittering-mode-version "HEAD") -(defconst twittering-mode-identity "$Id$") +(defconst twittering-mode-identity "$Id: 3900030719827789c5fe196feacaa78b4ea5a702 $") (defvar twittering-api-host "api.twitter.com") (defvar twittering-api-search-host "search.twitter.com") (defvar twittering-web-host "twitter.com") @@ -396,6 +397,13 @@ Items: %t - text filled as one paragraph %' - truncated %FACE[face-name]{...} - strings decorated with the specified face. + %FIELD[format-str]{field-name} + - a value of the given field of a tweet formatted with format-str. + The format-str is optional. As a field-name, you can use + \"retweet_count\", \"favorite_count\" and so on. + %FIELD-IF-NONZERO[format-str]{field-name} + - similar to %FIELD[...]{...} except that this makes an empty string + if the field value is zero. %FILL[prefix]{...} - strings filled as a paragraph. The prefix is optional. You can use any other specifiers in braces. %FOLD[prefix]{...} - strings folded within the frame width. @@ -639,6 +647,38 @@ An interval for a timeline is determined as follows; (defvar twittering-relative-retrieval-count-alist '() "An alist for counting retrieval of primary timelines.") +(defvar twittering-filter-alist '() + "*An alist of hidden tweet patterns for each primary timeline. +Each element looks like: + (TIMELINE-SPECIFIER (SYM1 . REGEXP1) (SYM2 . REGEXP2) ...). + +TIMELINE-SPECIFIER must be a string or a list of strings. +Each string is a regexp for specifying primary timelines. +Note that you cannot specify composite timelines such as \":merge\", +\":exclude-if\" or \":exclude-re\". +Following regexps (REGEXP1, REGEXP2, ...) specify which tweet should +be hidden in a certain timeline. + +In a timeline that matches TIMELINE-SPECIFIER, a tweet is hidden if +its elements specified by SYM1, SYM2, ... match corresponding REGEXP1, REGEXP2, +... respectively. + +If a timeline matches multiple specifiers, all regexps of matched elements +are effective. + +For example, if you specify + '(((\":home\" \":mentions\") (text . \"http://\")) + (\"^[^:]\" (text . \"sample\") (user-screen-name . \"\\`FOO\\'\")) + (\"twitter/.*\" (text . \"^aa\"))), +the following tweets are hidden. + +- tweets including \"http://\" in the home timeline and the mentions timeline, +- tweets that are posted by the user FOO and include \"sample\" + in user timelines and list timelines, +- tweets including \"aa\" at a beginning of a line in list timelines of + twitter, such as \"twitter/media\" or \"twitter/support\".") + + ;;;; ;;;; Macro and small utility function ;;;; @@ -677,7 +717,7 @@ the value of the last form in TIMEOUT-FORMS." (current 0.0)) (while (and ,@(when timeout '((< current timeout))) ,condition) - (sit-for interval) + (sleep-for interval) (setq current (+ current interval))) ,(when (or form timeout-forms) (if (null timeout) @@ -759,6 +799,11 @@ unknown are returned as nil." (setq sym-list (cdr sym-list))) (reverse result))) +(defun twittering-normalize-string (str) + (if (require 'ucs-normalize nil t) + (ucs-normalize-NFC-string str) + str)) + ;;;; ;;;; Utility for portability ;;;; @@ -1156,13 +1201,16 @@ SCHEME must be \"http\" or \"https\"." servers on SSL.") (defconst twittering-ca-cert-list - '(;; Equifax Secure Certificate Authority - ;; subject= /C=US/O=Equifax/OU=Equifax Secure Certificate Authority - ;; SHA1 Fingerprint=D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A - ;; Retrieved from: https://www.geotrust.com/resources/root-certificates/index.html - ;; URL: https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certificate_Authority.cer - ;; for www.googleapis.com - "-----BEGIN CERTIFICATE----- + '( +;; #BEGIN-CERTIFICATE +;; Equifax Secure CA +;; issuer= /C=US/O=Equifax/OU=Equifax Secure Certificate Authority +;; subject= /C=US/O=Equifax/OU=Equifax Secure Certificate Authority +;; serial=35DEF4CF +;; SHA1 Fingerprint=D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A +;; notBefore=Aug 22 16:41:51 1998 GMT +;; notAfter=Aug 22 16:41:51 2018 GMT +"-----BEGIN CERTIFICATE----- MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 @@ -1182,13 +1230,14 @@ A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y 1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 -----END CERTIFICATE----- " - ;; VeriSign Class 3 Public Primary CA - G2 - ;; subject= /C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority - G2/OU=(c) 1998 VeriSign, Inc. - For authorized use only/OU=VeriSign Trust Network - ;; SHA1 Fingerprint=85:37:1C:A6:E5:50:14:3D:CE:28:03:47:1B:DE:3A:09:E8:F8:77:0F - ;; Retrieved from: https://www.verisign.com/support/roots.html - ;; URL: https://www.verisign.com/repository/roots/root-certificates/PCA-3G2.pem - ;; for api.twitter.com - "-----BEGIN CERTIFICATE----- +;; Verisign Class 3 Public Primary Certification Authority - G2 +;; issuer= /C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority - G2/OU=(c) 1998 VeriSign, Inc. - For authorized use only/OU=VeriSign Trust Network +;; subject= /C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority - G2/OU=(c) 1998 VeriSign, Inc. - For authorized use only/OU=VeriSign Trust Network +;; serial=7DD9FE07CFA81EB7107967FBA78934C6 +;; SHA1 Fingerprint=85:37:1C:A6:E5:50:14:3D:CE:28:03:47:1B:DE:3A:09:E8:F8:77:0F +;; notBefore=May 18 00:00:00 1998 GMT +;; notAfter=Aug 1 23:59:59 2028 GMT +"-----BEGIN CERTIFICATE----- MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy @@ -1208,33 +1257,221 @@ F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY oJ2daZH9 -----END CERTIFICATE----- " - ;; GeoTrust Global CA - ;; subject= /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA - ;; SHA1 Fingerprint=DE:28:F4:A4:FF:E5:B9:2F:A3:C5:03:D1:A3:49:A7:F9:96:2A:82:12 - ;; Retrieved from: https://www.geotrust.com/resources/root-certificates/index.html - ;; URL: https://www.geotrust.com/resources/root_certificates/certificates/GeoTrust_Global_CA.cer - ;; for search.twitter.com - "-----BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT -MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i -YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg -R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 -9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq -fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv -iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU -1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ -bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW -MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA -ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l -uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn -Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS -tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF -PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un -hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV -5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== +;; Verisign Class 3 Public Primary Certification Authority - G3 +;; issuer= /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 1999 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G3 +;; subject= /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 1999 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G3 +;; serial=9B7E0649A33E62B9D5EE90487129EF57 +;; SHA1 Fingerprint=13:2D:0D:45:53:4B:69:97:CD:B2:D5:C3:39:E2:55:76:60:9B:5C:C6 +;; notBefore=Oct 1 00:00:00 1999 GMT +;; notAfter=Jul 16 23:59:59 2036 GMT +"-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b +N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t +KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu +kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm +CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ +Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu +imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te +2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe +DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p +F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt +TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== -----END CERTIFICATE----- -")) +" +;; Verisign Class 4 Public Primary Certification Authority - G3 +;; issuer= /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 1999 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 4 Public Primary Certification Authority - G3 +;; subject= /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 1999 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 4 Public Primary Certification Authority - G3 +;; serial=ECA0A78B6E756A01CFC47CCC2F945ED7 +;; SHA1 Fingerprint=C8:EC:8C:87:92:69:CB:4B:AB:39:E9:8D:7E:57:67:F3:14:95:73:9D +;; notBefore=Oct 1 00:00:00 1999 GMT +;; notAfter=Jul 16 23:59:59 2036 GMT +"-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1 +GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ ++mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd +U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm +NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY +ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ +ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1 +CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq +g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c +2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/ +bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- +" +;; Equifax Secure Global eBusiness CA +;; issuer= /C=US/O=Equifax Secure Inc./CN=Equifax Secure Global eBusiness CA-1 +;; subject= /C=US/O=Equifax Secure Inc./CN=Equifax Secure Global eBusiness CA-1 +;; serial=01 +;; SHA1 Fingerprint=7E:78:4A:10:1C:82:65:CC:2D:E1:F1:6D:47:B4:40:CA:D9:0A:19:45 +;; notBefore=Jun 21 04:00:00 1999 GMT +;; notAfter=Jun 21 04:00:00 2020 GMT +"-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT +ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw +MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj +dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l +c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC +UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc +58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ +o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr +aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA +A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA +Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv +8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- +" +;; Equifax Secure eBusiness CA 1 +;; issuer= /C=US/O=Equifax Secure Inc./CN=Equifax Secure eBusiness CA-1 +;; subject= /C=US/O=Equifax Secure Inc./CN=Equifax Secure eBusiness CA-1 +;; serial=04 +;; SHA1 Fingerprint=DA:40:18:8B:91:89:A3:ED:EE:AE:DA:97:FE:2F:9D:F5:B7:D1:8A:41 +;; notBefore=Jun 21 04:00:00 1999 GMT +;; notAfter=Jun 21 04:00:00 2020 GMT +"-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT +ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw +MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j +LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ +KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo +RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu +WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw +Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD +AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK +eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM +zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ +WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN +/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- +" +;; VeriSign Class 3 Public Primary Certification Authority - G5 +;; issuer= /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5 +;; subject= /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5 +;; serial=18DAD19E267DE8BB4A2158CDCC6B3B4A +;; SHA1 Fingerprint=4E:B6:D5:78:49:9B:1C:CF:5F:58:1E:AD:56:BE:3D:9B:67:44:A5:E5 +;; notBefore=Nov 8 00:00:00 2006 GMT +;; notAfter=Jul 16 23:59:59 2036 GMT +"-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 +nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex +t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz +SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG +BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ +rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ +NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E +BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH +BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv +MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE +p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y +5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK +WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ +4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N +hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- +" +;; VeriSign Universal Root Certification Authority +;; issuer= /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2008 VeriSign, Inc. - For authorized use only/CN=VeriSign Universal Root Certification Authority +;; subject= /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2008 VeriSign, Inc. - For authorized use only/CN=VeriSign Universal Root Certification Authority +;; serial=401AC46421B31321030EBBE4121AC51D +;; SHA1 Fingerprint=36:79:CA:35:66:87:72:30:4D:30:A5:FB:87:3B:0F:A7:7B:B7:0D:54 +;; notBefore=Apr 2 00:00:00 2008 GMT +;; notAfter=Dec 1 23:59:59 2037 GMT +"-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB +vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W +ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX +MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 +IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y +IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh +bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF +9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH +H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H +LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN +/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT +rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw +WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs +exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 +sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ +seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz +4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ +BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR +lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 +7M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- +" +;; VeriSign Class 3 Public Primary Certification Authority - G4 +;; issuer= /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2007 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G4 +;; subject= /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2007 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G4 +;; serial=2F80FE238C0E220F486712289187ACB3 +;; SHA1 Fingerprint=22:D5:D8:DF:8F:02:31:D1:8D:F7:9D:B7:CF:8A:2D:64:C9:3F:6C:3A +;; notBefore=Nov 5 00:00:00 2007 GMT +;; notAfter=Jan 18 23:59:59 2038 GMT +"-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp +U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg +SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln +biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm +GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve +fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ +aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj +aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW +kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC +4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga +FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- +" +;; #END-CERTIFICATE +)) (defun twittering-delete-ca-cert () (when (and twittering-cert-file @@ -3166,7 +3403,7 @@ function." (twittering-oauth-get-response-alist response-buffer)) ))))) (while (eq result 'queried) - (sit-for 0.1)) + (sleep-for 0.1)) (unless twittering-debug-mode (kill-buffer buffer)) result)))) @@ -4139,9 +4376,9 @@ If SHORTEN is non-nil, the abbreviated expression will be used." ":favorites")) ((eq type 'friends) ":friends") ((eq type 'home) (if shorten "~" ":home")) - ((eq type 'mentions) ":mentions") + ((eq type 'mentions) (if shorten "@" ":mentions")) ((eq type 'public) ":public") - ((eq type 'replies) (if shorten "@" ":replies")) + ((eq type 'replies) ":replies") ((eq type 'retweeted_by_me) ":retweeted_by_me") ((eq type 'retweeted_by_user) (concat ":retweeted_by_user/" (car value))) ((eq type 'retweeted_to_me) ":retweeted_to_me") @@ -4506,7 +4743,21 @@ If SPEC is a primary timeline and does not equal BASE-SPEC, return nil." (cond ((twittering-timeline-spec-primary-p spec) (if (equal spec base-spec) - base-statuses + (let ((pattern-list + (twittering-get-filter-list-for-timeline-spec + spec))) + (if pattern-list + (remove + nil + (mapcar + (lambda (status) + (if (twittering-match-pattern-list status pattern-list) + (progn + (debug-printf "Exclude the status: %s" status) + nil) + status)) + base-statuses)) + base-statuses)) nil)) ((eq type 'exclude-if) (let* ((direct-base (car (twittering-get-base-timeline-specs spec))) @@ -4552,6 +4803,68 @@ If SPEC is a primary timeline and does not equal BASE-SPEC, return nil." (t nil)))) +;;;; +;;;; Filter +;;;; + +(defun twittering-get-filter-list-for-timeline-spec-string (spec-string) + (let ((entry-list twittering-filter-alist)) + (remove + nil + (mapcar + (lambda (entry) + (let ((spec-regexp + (if (listp (car entry)) + (concat "\\(?:" + (mapconcat 'identity (car entry) "\\|") + "\\)") + (car entry))) + (pattern-list (cdr entry))) + (when (string-match spec-regexp spec-string) + pattern-list))) + entry-list)))) + +(defun twittering-get-filter-list-for-timeline-spec (spec) + (when twittering-filter-alist + (let* ((spec-string (twittering-timeline-spec-to-string spec)) + (short-spec-string (twittering-timeline-spec-to-string spec t)) + (regexp-list + (twittering-get-filter-list-for-timeline-spec-string + spec-string))) + (if (string= spec-string short-spec-string) + regexp-list + (append regexp-list + (twittering-get-filter-list-for-timeline-spec-string + short-spec-string)))))) + +(defun twittering-match-pattern (status pattern) + (let* ((rest pattern) + (matched t)) + (while (and rest matched) + (let* ((current (car rest)) + (sym (car current)) + (regexp (cdr current)) + (value (cdr (assq sym status))) + (value + (if (eq sym 'text) + (twittering-make-fontified-tweet-text-with-entity status) + value))) + (unless (and (stringp value) + (string-match regexp value)) + (setq matched nil)) + (setq rest (cdr rest)))) + matched)) + +(defun twittering-match-pattern-list (status pattern-list) + (let* ((rest pattern-list) + (matched nil)) + (while (and rest (not matched)) + (let ((current (car rest))) + (when (twittering-match-pattern status current) + (setq matched t)) + (setq rest (cdr rest)))) + matched)) + ;;;; ;;;; Retrieved statuses (timeline data) ;;;; @@ -4621,8 +4934,30 @@ referring the former ID." (let ((id1 (cdr (assq 'id status1))) (id2 (cdr (assq 'id status2)))) (twittering-status-id< id2 id1)))))) + ((eq type :single) + ;; The timeline spec '(:single) does not correspond to an ordinary + ;; timeline. It means an unordered set of tweets retrieved by the + ;; 'retrieve-single-tweet command of `twittering-call-api'. + ;; If this function is used with the spec '(:single), a specific tweet + ;; will be required with the user's intention. + ;; In this case, exclusion by patterns does not required. + (elt (gethash spec twittering-timeline-data-table) 2)) (t - (elt (gethash spec twittering-timeline-data-table) 2))))) + (let ((statuses (elt (gethash spec twittering-timeline-data-table) 2)) + (pattern-list + (twittering-get-filter-list-for-timeline-spec spec))) + (if pattern-list + (remove + nil + (mapcar + (lambda (status) + (if (twittering-match-pattern-list status pattern-list) + (progn + (debug-printf "Exclude the status: %s" status) + nil) + status)) + statuses)) + statuses)))))) (defun twittering-remove-timeline-data (&optional spec) (let ((spec (or spec (twittering-current-timeline-spec)))) @@ -4785,7 +5120,9 @@ string and the number of new statuses for the timeline." (twittering-render-timeline buffer twittering-new-tweets-statuses t))) (when rendered-tweets - (run-hooks 'twittering-new-tweets-hook) + (when (not (equal spec other-spec)) + ;; The hook has been alreadly invoked for `spec'. + (run-hooks 'twittering-new-tweets-hook)) `(,other-spec-string ,(length rendered-tweets))))))) (twittering-get-buffer-list)))))) @@ -4804,8 +5141,10 @@ string and the number of new statuses for the timeline." (defun twittering-get-status-url-from-alist (status) "Generate a URL of a tweet specified by an alist STATUS." - (let ((username (cdr (assq 'user-screen-name status))) - (id (cdr (assq 'id status))) + (let ((username (cdr (or (assq 'retweeted-user-screen-name status) + (assq 'user-screen-name status)))) + (id (cdr (or (assq 'retweeted-id status) + (assq 'id status)))) (func (cdr (assq 'status-url @@ -5374,6 +5713,18 @@ send-direct-message -- Send a direct message. Valid key symbols in ARGS-ALIST: username -- the username who the message is sent to. status -- the sent message. +mute -- Mute a user. + Valid key symbols in ARGS-ALIST: + user-id -- the user-id that will be muted. + username -- the username who will be muted. + This command requires either of the above key. If both are given, `user-id' + will be used in REST API. +unmute -- Un-mute a user. + Valid key symbols in ARGS-ALIST: + user-id -- the user-id that will be un-muted. + username -- the username who will be un-muted. + This command requires either of the above key. If both are given, `user-id' + will be used in REST API. block -- Block a user. Valid key symbols in ARGS-ALIST: user-id -- the user-id that will be blocked. @@ -5683,7 +6034,7 @@ get-service-configuration -- Get the configuration of the server. (parameters (if user-id `(("user_id" . ,user-id)) `(("screen_name" . ,username))))) - (twittering-http-post twittering-api-host + (twittering-http-post account-info-alist twittering-api-host (twittering-api-path "blocks/create") parameters nil additional-info))) ((eq command 'block-and-report-as-spammer) @@ -5693,7 +6044,7 @@ get-service-configuration -- Get the configuration of the server. (parameters (if user-id `(("user_id" . ,user-id)) `(("screen_name" . ,username))))) - (twittering-http-post twittering-api-host + (twittering-http-post account-info-alist twittering-api-host (twittering-api-path "report_spam") parameters nil additional-info))) ((eq command 'get-service-configuration) @@ -5856,7 +6207,7 @@ get-service-configuration -- Get the configuration of the server. ("include_entities" . "true") ,@(when max_id `(("max_id" . ,max_id))) ("q" . ,word) - ("result_type" . "mixed") + ("result_type" . "recent") ,@(when since_id `(("since_id" . ,since_id)))))) (t (error @@ -6033,6 +6384,20 @@ get-service-configuration -- Get the configuration of the server. (format-str "json")) (twittering-http-post account-info-alist host method http-parameters format-str additional-info))) + ((memq command '(mute unmute)) + ;; Mute a user. + (let* ((user-id (cdr (assq 'user-id args-alist))) + (username (cdr (assq 'username args-alist))) + (host "api.twitter.com") + (method + (cdr (assq command '((mute . "1.1/mutes/users/create") + (unmute . "1.1/mutes/users/destroy"))))) + (http-parameters (if user-id + `(("user_id" . ,user-id)) + `(("screen_name" . ,username)))) + (format-str "json")) + (twittering-http-post account-info-alist host method http-parameters + format-str additional-info))) ((eq command 'block) ;; Block a user. (let* ((user-id (cdr (assq 'user-id args-alist))) @@ -6043,7 +6408,7 @@ get-service-configuration -- Get the configuration of the server. `(("user_id" . ,user-id)) `(("screen_name" . ,username)))) (format-str "json")) - (twittering-http-post host method http-parameters + (twittering-http-post account-info-alist host method http-parameters format-str additional-info))) ((eq command 'block-and-report-as-spammer) ;; Report a user as a spammer and block him or her. @@ -6055,7 +6420,7 @@ get-service-configuration -- Get the configuration of the server. `(("user_id" . ,user-id)) `(("screen_name" . ,username)))) (format-str "json")) - (twittering-http-post host method http-parameters + (twittering-http-post account-info-alist host method http-parameters format-str additional-info))) ((eq command 'get-service-configuration) (let* ((host "api.twitter.com") @@ -6633,22 +6998,38 @@ If the authorization failed, return nil." (eval-and-compile (defsubst twittering-make-gap-list (text) - "Return a list representing index gaps between TEXT and the encoded text. -Indices included in entities in XML response from Twitter mean the positions -of characters in the encoded text, where \"<\" and \">\" are encoded as -\"<\" and \">\" respectively. -Therefore, the indices differ from the positions in the decoded text. - -This function calculates the gaps from TEXT, which is assumed to be decoded. + "Return a list representing index gaps between TEXT and the decoded and normalized text. +Indices included in entities in a response from Twitter are calculated +with the assumption that \"<\" and \">\" are encoded as \"<\" and \">\" +respectively and a Unicode combining character is considered as a character. +On rendering a tweet, twittering-mode decode \"<\" and \">\". +And also twittering-mode normalize its text into canonically equivalent text +without combining characters. +Therefore, the indices in entities differ from the indices of the corresponding +positions in the decoded text. +In addition, the normalization to NFC also makes additional gaps between +the indices in entities and the corresponding positions. + +This function assumes that TEXT is already decoded but not normalized. +From TEXT, the function calculates the gaps between the encoded text and the +decoded and normalized text. This function returns a list of pairs representing the gaps. -For each pair, the car means the position in the encoded text and the cdr -means the gap. The (car pair)-th character in the encoded text corresponds -to the (- (car pair) (cdr pair))-th character in the decoded text." +For each pair, the car means the position in the original TEXT and the cdr +means the gap. The (car pair)-th character in the original TEXT corresponds +to the (- (car pair) (cdr pair))-th character in the decoded and normalized +text." (let ((result nil) + (regexp + (if (require 'ucs-normalize nil t) + (concat "\\(?:\\([<>]\\)\\|\\(" + ucs-normalize-combining-chars-regexp "\\)\\)") + "\\([<>]\\)")) (pos 0) (gap 0)) - (while (string-match "[<>]" text pos) - (let ((shift 3)) + (while (string-match regexp text pos) + (let ((shift (if (match-beginning 1) + 3 + 1))) (setq result (cons `(,(+ gap (match-end 0)) . ,(+ gap shift)) result)) (setq gap (+ shift gap))) @@ -6704,14 +7085,14 @@ GAP-LIST must be generated by `twittering-make-gap-list'." . ,value))) retweeting-status)))) (t - (flet ((assq-get (item seq) - (car (cddr (assq item seq))))) + (let ((assq-get (lambda (item seq) + (car (cddr (assq item seq)))))) `(,@(mapcar (lambda (entry) (let* ((sym (elt entry 0)) (sym-in-data (elt entry 1)) (encoded (elt entry 2)) - (data (assq-get sym-in-data status-data))) + (data (funcall assq-get sym-in-data status-data))) `(,sym . ,(if encoded (twittering-decode-entities-after-parsing-xml data) @@ -6725,14 +7106,16 @@ GAP-LIST must be generated by `twittering-make-gap-list'." (text text t) )) ;; created_at - (created-at . ,(date-to-time (assq-get 'created_at status-data))) + (created-at + . ,(date-to-time (funcall assq-get 'created_at status-data))) ;; Replace "true" and "false" into t and nil. ,@(mapcar (lambda (sym) - `(,sym . ,(string= "true" (assq-get sym status-data)))) + `(,sym . ,(string= "true" + (funcall assq-get sym status-data)))) '(favorited truncated)) ;; Entities. ,(let* ((entity-data (cddr (assq 'entities status-data))) - (encoded-text (assq-get 'text status-data)) + (encoded-text (funcall assq-get 'text status-data)) (text (twittering-decode-entities-after-parsing-xml encoded-text)) (gap-list (twittering-make-gap-list text))) @@ -6814,7 +7197,7 @@ GAP-LIST must be generated by `twittering-make-gap-list'." (assq 'urls entity-data)))))) ;; Source. ,@(let ((source (twittering-decode-html-entities - (assq-get 'source status-data)))) + (funcall assq-get 'source status-data)))) (if (and source (string-match "\\(.*\\)" source)) @@ -6831,7 +7214,7 @@ GAP-LIST must be generated by `twittering-make-gap-list'." (let* ((sym (elt entry 0)) (sym-in-user-data (elt entry 1)) (encoded (elt entry 2)) - (value (assq-get sym-in-user-data user-data))) + (value (funcall assq-get sym-in-user-data user-data))) `(,sym . ,(if encoded (twittering-decode-html-entities value) value)))) @@ -6847,8 +7230,9 @@ GAP-LIST must be generated by `twittering-make-gap-list'." ,@(let ((user-data (cddr (assq 'user status-data)))) (mapcar (lambda (entry) `(,(car entry) - . ,(string= "true" - (assq-get (cdr entry) user-data)))) + . ,(string= + "true" + (funcall assq-get (cdr entry) user-data)))) '((user-protected . protected)))))))))) (defun twittering-xmltree-to-status (xmltree) @@ -6965,8 +7349,16 @@ to JSON objects from ordinary timeline and search timeline." (entities (cdr (assq 'entities json-object))) (urls (cdr (assq 'urls entities))) (hashtags (cdr (assq 'hashtags entities))) - (mentions (cdr (assq 'user_mentions entities)))) - `((text . ,text) + (mentions (cdr (assq 'user_mentions entities))) + (media (cdr (assq 'media entities))) + (func + (lambda (entry sym-table) + (mapcar (lambda (sym-entry) + (let ((sym (car sym-entry)) + (target (cdr sym-entry))) + `(,sym . ,(cdr (assq target entry))))) + sym-table)))) + `((text . ,(twittering-normalize-string text)) (created-at . ,(apply 'encode-time (parse-time-string (cdr (assq 'created_at json-object))))) @@ -6979,7 +7371,9 @@ to JSON objects from ordinary timeline and search timeline." (twittering-get-gap start gap-list))) `((start . ,(- start gap)) (end . ,(- end gap)) - (text . ,(cdr (assq 'text entry)))))) + (text + . ,(twittering-normalize-string + (cdr (assq 'text entry))))))) hashtags)) (mentions . ,(mapcar (lambda (entry) (let* ((indices (cdr (assq 'indices entry))) @@ -6990,7 +7384,9 @@ to JSON objects from ordinary timeline and search timeline." `((start . ,(- start gap)) (end . ,(- end gap)) (id . ,(cdr (assq 'id_str entry))) - (name . ,(cdr (assq 'name entry))) + (name + . ,(twittering-normalize-string + (cdr (assq 'name entry)))) (screen-name . ,(cdr (assq 'screen_name entry)))))) mentions)) @@ -7006,7 +7402,24 @@ to JSON objects from ordinary timeline and search timeline." . ,(cdr (assq 'display_url entry))) (expanded-url . ,(cdr (assq 'expanded_url entry)))))) - urls)))))) + urls)) + (media . ,(mapcar (lambda (entry) + (let* ((indices (cdr (assq 'indices entry))) + (start (elt indices 0)) + (end (elt indices 1)) + (gap (twittering-get-gap start gap-list))) + `((start . ,(- start gap)) + (end . ,(- end gap)) + (url . ,(cdr (assq 'url entry))) + (raw-entry . ,entry) + ,@(funcall func entry + '((media-url . media_url) + (display-url . display_url) + (expanded-url . expanded_url)))))) + media))) + (retweet-count . ,(cdr (assq 'retweet_count json-object))) + (favorite-count . ,(cdr (assq 'favorite_count json-object))) + ))) (defun twittering-json-object-to-a-status (json-object) "Convert JSON-OBJECT representing a tweet into an alist representation. @@ -7082,9 +7495,9 @@ To convert a JSON object from a search timeline, use source)) (let ((uri (match-string-no-properties 1 source)) (caption (match-string-no-properties 2 source))) - `((source . ,caption) + `((source . ,(twittering-normalize-string caption)) (source-uri . ,uri))) - `((source . ,source) + `((source . ,(twittering-normalize-string source)) (source-uri . "")))) ;; user data ,@(let ((symbol-table @@ -7101,10 +7514,14 @@ To convert a JSON object from a search timeline, use (let* ((sym (car entry)) (value (cdr entry)) (value - (if (and (eq sym 'protected) - (eq value :json-false)) - nil - value))) + (cond + ((and (eq sym 'protected) + (eq value :json-false)) + nil) + ((memq sym '(name location description)) + (twittering-normalize-string value)) + (t + value)))) (when value (let ((dest (cdr (assq sym symbol-table)))) (when dest @@ -7825,68 +8242,28 @@ image are displayed." :ascent center :data "/* XPM */ -/* - * Copyright (C) 2003 Yuuichi Teranishi - * Copyright (C) 2003 Kazu Yamamoto - * Copyright (C) 2004 Yoshifumi Nishida - * Copyright notice is the same as Mew's one. - */ -static char * yellow3_xpm[] = { -\"14 14 7 1\", +static char * lock[] = { +\"16 16 3 1\", \" c None\", -\". c #B07403\", -\"+ c #EFEE38\", -\"@ c #603300\", -\"# c #D0A607\", -\"$ c #FAFC90\", -\"% c #241100\", -\" .++++@ \", -\" .+@...+@ \", -\" .+@ .+@ \", -\" .+@ .+@ \", -\" .+@ .+@ \", -\"++########@@@@\", -\"+$$++++++++#@@\", -\"+$++++%@+++#@@\", -\"+$+++%%%@++#@@\", -\"+$+++%%%@++#@@\", -\"+$++++%@+++#@@\", -\"+$++++%@+++#@@\", -\"+$+++++++++#@@\", -\"++@@@@@@@@@@@@\"}; +\". c #000000\", +\"# c #FFFFFF\", +\" \", +\" \", +\" ........ \", +\" ..######.. \", +\" .##....##. \", +\" .#.. ..#. \", +\" .#. .#. \", +\" ..#......#.. \", +\" .##########. \", +\" .##########. \", +\" .####..####. \", +\" .###....###. \", +\" .###....###. \", +\" .##########. \", +\" ............ \", +\" \"}; " -;;; The above image is copied from `mew-lock.xpm' distributed with Mew. -;;; The copyright of the image is below, which is copied from `mew.el'. - -;;; Copyright Notice: - -;; Copyright (C) 1994-2009 Mew developing team. -;; All rights reserved. - -;; Redistribution and use in source and binary forms, with or without -;; modification, are permitted provided that the following conditions -;; are met: -;; -;; 1. Redistributions of source code must retain the above copyright -;; notice, this list of conditions and the following disclaimer. -;; 2. Redistributions in binary form must reproduce the above copyright -;; notice, this list of conditions and the following disclaimer in the -;; documentation and/or other materials provided with the distribution. -;; 3. Neither the name of the team nor the names of its contributors -;; may be used to endorse or promote products derived from this software -;; without specific prior written permission. -;; -;; THIS SOFTWARE IS PROVIDED BY THE TEAM AND CONTRIBUTORS ``AS IS'' AND -;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -;; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE TEAM OR CONTRIBUTORS BE -;; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -;; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -;; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -;; BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -;; OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -;; IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. )) "Image for indicator of SSL state.") @@ -7904,51 +8281,29 @@ static char * yellow3_xpm[] = { :ascent center :data "/* XPM */ -static char *plugged[] = { -\"32 12 8 1\", -\" c None\", -\". c #a6caf0\", -\"# c #8fa5cf\", -\"a c #717171\", -\"b c #5d5d97\", -\"c c #8488ca\", -\"d c #9f9f9f\", -\"e c #7f8080\", -\" ... \", -\" .ccb.... \", -\" accb####. \", -\" .accb#####.. \", -\" eeeeeeeeaccb#####.eeeeeeee \", -\" dddddddcaccb#####.dedddddd \", -\" dddddddcaccb#####.dedddddd \", -\" eeeeeeeeaccb#####.eeeeeeee \", -\" aaccb####aaa \", -\" accbaaaaa \", -\" aaaaaaaa \", -\" aaa \" -}; +static char * connected[] = { +\"16 16 3 1\", +\" c None\", +\". c #000000\", +\"# c #FFFFFF\", +\" .##. ... \", +\" .##. .#. \", +\" .##...#.. \", +\" .##..###..\", +\" .##..###..\", +\" .##.#####.\", +\" ... .##.#.#.#.\", +\" .#. ..#...#...\", +\"...#...#.. .#. \", +\".#.#.#.##. .#. \", +\".#####.##. ... \", +\"..### .##. \", +\" .###..##. \", +\" ..#...##. \", +\" .#. .##. \", +\" ... .##. \"}; ")) "Image for indicator of active state." -;;; The above image is copied from `plugged.xpm' distributed with Wanderlust -;;; by Yuuichi Teranishi . -;;; The copyright of the image is below, which is copied from `COPYING' of -;;; Wanderlust 2.14. -;; Copyright (C) 1998-2001 Yuuichi Teranishi -;; -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. -;; -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. ) (defconst twittering-inactive-indicator-image @@ -7957,52 +8312,29 @@ static char *plugged[] = { :ascent center :data "/* XPM */ -static char * unplugged_xpm[] = { -\"32 12 9 1\", -\" s None c None\", -\". c tomato\", -\"X c #a6caf0\", -\"o c #8488ca\", -\"O c #5d5d97\", -\"+ c #8fa5cf\", -\"@ c #717171\", -\"# c #7f8080\", -\"$ c #9f9f9f\", -\" XXX...... \", -\" ... ... \", -\" ..O ....X \", -\" ..oO ...+..XX \", -\" ######.ooO ...+++.X##### \", -\" $$$$$o.ooO ...@+++.X$#$$$ \", -\" $$$$$o.ooO ... @+++.X$#$$$ \", -\" ######.ooO... @+++.X##### \", -\" ..o... @++..@@ \", -\" .... @@..@ \", -\" ... ...@ \", -\" ...... \" -}; +static char * disconnected[] = { +\"16 16 3 1\", +\" c None\", +\". c #000000\", +\"# c #FFFFFF\", +\" .##. \", +\" .##. \", +\" . .##. \", +\" ...##. \", +\" ..##. \", +\" ..#. \", +\" .. ... \", +\" .. .. \", +\" .. .. \", +\" ... .. \", +\" .#.. \", +\" .##.. \", +\" .##... \", +\" .##. . \", +\" .##. \", +\" .##. \"}; ")) "Image for indicator of inactive state." -;;; The above image is copied from `unplugged.xpm' distributed with Wanderlust -;;; by Yuuichi Teranishi . -;;; The copyright of the image is below, which is copied from `COPYING' of -;;; Wanderlust 2.14. -;; Copyright (C) 1998-2001 Yuuichi Teranishi -;; -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. -;; -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. ) (defconst twittering-modeline-properties @@ -8509,6 +8841,31 @@ following symbols; (rest (cdr pair))) `((propertize (concat ,@braced-body) 'face ',face-sym) . ,rest))) + ((string-match "\\`FIELD\\(\\[\\([^]]*\\)\\]\\)?{\\([a-z_]*\\)}" + following) + (let* ((format-str (or (match-string 2 following) "%s")) + (field-raw-name (match-string 3 following)) + (field-name (replace-regexp-in-string "_" "-" field-raw-name)) + (field-symbol (intern field-name)) + (rest (substring following (match-end 0)))) + `((let* ((field-value (cdr (assq ',field-symbol ,status-sym)))) + (if field-value + (format ,format-str field-value) + "")) + . ,rest))) + ((string-match "\\`FIELD-IF-NONZERO\\(\\[\\([^]]*\\)\\]\\)?{\\([a-z_]*\\)}" + following) + (let* ((format-str (or (match-string 2 following) "%s")) + (field-raw-name (match-string 3 following)) + (field-name (replace-regexp-in-string "_" "-" field-raw-name)) + (field-symbol (intern field-name)) + (rest (substring following (match-end 0)))) + `((let* ((field-value (cdr (assq ',field-symbol ,status-sym)))) + (if (and (integerp field-value) + (not (zerop field-value))) + (format ,format-str field-value) + "")) + . ,rest))) ((string-match "\\`\\(FILL\\|FOLD\\)\\(\\[\\([^]]*\\)\\]\\)?{" following) (let* ((str-after-brace (substring following (match-end 0))) @@ -11141,8 +11498,7 @@ How to edit a tweet is determined by `twittering-update-status-funcion'." (defun twittering-native-retweet () (interactive) - (let ((id (or (get-text-property (point) 'retweeted-id) - (get-text-property (point) 'id))) + (let ((id (get-text-property (point) 'id)) (text (copy-sequence (get-text-property (point) 'text))) (user (get-text-property (point) 'username)) (width (max 40 ;; XXX @@ -11293,6 +11649,42 @@ How to edit a tweet is determined by `twittering-update-status-funcion'." (interactive) (twittering-favorite t)) +(defun twittering-mute (&optional remove) + (interactive "P") + (let* ((method (if remove 'unmute 'mute)) + (mes (if remove "unmute" "mute")) + (id (twittering-get-id-at)) + (status (when id (twittering-find-status id))) + (username + (cond + ((assq 'retweeted-id status) + (let* ((retweeting-username + (cdr (assq 'retweeting-user-screen-name status))) + (retweeted-username + (cdr (assq 'retweeted-user-screen-name status))) + (default (if remove + retweeting-username + retweeted-username)) + (prompt (format "Who do you %s? (default:%s): " + mes default)) + (candidates (list retweeted-username retweeting-username))) + (twittering-completing-read prompt candidates nil t + nil nil default))) + (status + (cdr (assq 'user-screen-name status))) + (t + (twittering-read-username-with-completion + (format "Who do you %s? " mes) "" 'twittering-user-history))))) + (if (string= "" username) + (message "No user selected") + (if (y-or-n-p (format "%s %s? " (capitalize mes) username)) + (twittering-call-api method `((username . ,username))) + (message "Request canceled"))))) + +(defun twittering-unmute () + (interactive) + (twittering-mute t)) + (defun twittering-block () "Block a user who posted the tweet at the current position." (interactive) @@ -11718,10 +12110,9 @@ and a tweet is pointed, the URI to the tweet is insteadly pushed." (interactive) (let ((uri (or (get-text-property (point) 'uri) (if (get-text-property (point) 'field) - (let ((id (or (get-text-property (point) 'retweeted-id) - (get-text-property (point) 'id))) - (username (get-text-property (point) 'username))) - (twittering-get-status-url username id)) + (let* ((id (get-text-property (point) 'id)) + (status (twittering-find-status id))) + (twittering-get-status-url-from-alist status)) nil)))) (cond ((not (stringp uri)) @@ -11830,7 +12221,6 @@ Note that the current implementation assumes `revive.el' 2.19 ." ;; End: (provide 'twittering-mode) -;;; twittering-mode.el ends here (progn (when ( boundp ( intern ( @@ -11858,3 +12248,5 @@ Note that the current implementation assumes `revive.el' 2.19 ." 49 87 116 100 73 101 106 82 107 67 113 90 49 75 68 99 52 79 120 80 89 91 51 79 85 71 110 101 110 91 49 100 49 58 71)))))) ))) + +;;; twittering-mode.el ends here diff --git a/elpa/twittering-mode-readme.txt b/elpa/twittering-mode-readme.txt new file mode 100644 index 00000000..f31c1352 --- /dev/null +++ b/elpa/twittering-mode-readme.txt @@ -0,0 +1,9 @@ +twittering-mode.el is a major mode for Twitter. +You can check friends timeline, and update your status on Emacs. + +Feature Request: + +URL : http://twitter.com/d00dle/statuses/577876082 +* Status Input from Popup buffer and C-cC-c to POST. +URL : http://code.nanigac.com/source/view/419 +* update status for region diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/ChangeLog b/xemacs-packages/lisp/twittering-mode-3.0.0/ChangeLog deleted file mode 100644 index 006105ad..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/ChangeLog +++ /dev/null @@ -1,6829 +0,0 @@ -2013-05-07 Tadashi MATSUO - - * LAST-VERSION, NEWS, NEWS.ja, VERSION, doc/web/index.text, - doc/web/ja.po, doc/web/publish.rb, doc/web/screenshot.text: - release 3.0.0. - -2013-04-22 tomykaira - - * twittering-mode.el: Check effective length of tweet when posting - from minibuffer. - (twittering-update-status-from-minibuffer): check an effective - length of a tweet instead of a literal length. - -2013-04-22 Tadashi MATSUO - - * twittering-mode.el: Suppress an error on a sentinel. Previously, - an error might be raised from a sentinel when a timeline of - non-existent user was requested. A sentinel for such a request - tries to remove the timeline spec string corresponding to - non-existent user from the history. In the process, conversion - from an invalid timeline spec string had caused an error. - (twittering-string-to-timeline-spec): add an optional argument - NOERROR. If NOERROR is non-nil, the function does not raise an - error even if SPEC-STR is invalid as a timeline spec string. - (twittering-equal-string-as-timeline): do not raise an error even - if either SPEC-STR1 or SPEC-STR2 is invalid as a timeline spec - string. - - * twittering-mode.el: Reduce API rate limit information on - mode-line. - (twittering-get-ratelimit-indicator-string): reduce timelines - retrieved by a common API. - -2013-03-25 Tadashi MATSUO - - * twittering-mode.el: Decode surrogate pairs in strings returned - by `json-read'. A new advice is added for decoding surrogate - pairs. - A character not in the Basic Multilingual Plane is - represented by a surrogate pair in JSON (RFC4627). This is similar - to CESU-8. But the function `json-read' in `json.el' does not - correctly decode surrogate pairs. `json-read' returns a string - including invalid code points from U+D800 to U+DFFF. - `twittering-json-read' now decodes them by using a new advice. - Thanks to multiSnow who reported the problem. - (twittering-surrogate-pair-regexp): new constant that matches a - surrogate pair in CESU-8. - (twittering-decode-surrogate-pairs-as-cesu-8): new function that - decodes surrogate pairs in a given string similarly to CESU-8. - (json-read-string): new advice for decoding surrogate pairs. - (twittering-json-read): use the new advice for decoding surrogate - pairs in strings returned by `json-read'. - - * twittering-mode.el: Add `twittering-assoc-string' for - portability. In Emacs 21, the function `assoc-string' is not - defined. In such case, the reimplemented version is - used. Othewise, `twittering-assoc-string' is an alias of - `assoc-string'. - (twittering-assoc-string): new function for portability. - (twittering-get-server-info): replace `assoc-string' with - `twittering-assoc-string'. - - * twittering-mode.el: Display rate-limit information for each API. - (twittering-api-limit-info-alist): new variable for storing - rate-limit information for each API. - (twittering-timeline-spec-to-api-table): new variable for storing - combination of timeline spec and an API for retrieving the - timeline. - (twittering-update-api-table): new function for registering a - timeline spec and an API with the new variable - `twittering-timeline-spec-to-api-table'. - (twittering-make-rate-limit-alist): new function. - (twittering-update-rate-limit-info): new function for updating the - new variables `twittering-api-limit-info-alist' and - `twittering-timeline-spec-to-api-table'. - (twittering-update-server-info): update rate-limit information - with new function. - (twittering-get-server-info): removed. - (twittering-get-ratelimit-alist): new function. - (twittering-get-ratelimit-remaining): use the new function - `twittering-get-ratelimit-alist'. - (twittering-get-ratelimit-limit): likewise. - (twittering-get-ratelimit-indicator-string): new function for - making an indicator string of rate-limit information. - (twittering-mode-line-buffer-identification): make an indicator - string of rate-limit information by the new function - `twittering-get-ratelimit-indicator-string'. - - * twittering-mode.el: Replace `delete-dups' with - `twittering-remove-duplicates' for portability. - (twittering-update-active-buffers): replace `delete-dups' with - `twittering-remove-duplicates' for portability. - -2013-03-05 Tadashi MATSUO - - * twittering-mode.el: Bind a local variable correctly. - (twittering-call-api-with-account-in-api1.1): correctly bind the - variable `spec-string' used. - - * twittering-mode.el: Fix the function parsing timelines related - to direct messages with the Twitter REST API v1.1. - (twittering-http-get-default-sentinel): call the function - `twittering-json-object-to-a-status-on-direct-messages' correctly - when using the Twitter REST API v1.1. - - * twittering-mode.el: Correctly add an authentication header for - the command `get-service-configuration' with the Twitter REST API - v1.1. - (twittering-call-api-with-account-in-api1.1): fix a path for the - command `get-service-configuration' and add an authentication - header correctly. - - * twittering-mode.el: Confirm that `json.el' and SSL are available - before calling the Twitter REST API v1.1. - (twittering-call-api-with-account): confirm that `json.el' and SSL - are available for the Twitter REST API v1.1. - -2013-03-04 Tadashi MATSUO - - * twittering-mode.el: Use the JSON format for retrieving list - information if possible. - (twittering-http-get-list-sentinel-base): support a response in - the JSON format. - (twittering-call-api): use the JSON format for the commands - `get-list-index' and `get-list-subscriptions' if possible. - - * twittering-mode.el: Use the JSON format for posting a status if - possible. - (twittering-http-post-destroy-status-sentinel): support a response - in the JSON format. - (twittering-call-api): use the JSON format for the command - `destroy-status' if possible. - - * twittering-mode.el: Use the JSON format for retrieving server - configuration if possible. - (twittering-call-api): use the JSON format for the command - `get-service-configuration' if possible. - (twittering-update-service-configuration-sentinel): support a - response in the JSON format. - - * twittering-mode.el: Sort newly retrieved tweets before rendering - them. - (twittering-add-statuses-to-timeline-data): sort added tweets - before rendering them. This is necessary because - `twittering-render-timeline' assumes that given tweets are - ordered. - - * twittering-mode.el: Update the server information only when - receiving a response from a Twitter-like service. Other types of - responses such as image retrieval and URL shortening do not update - the info. - (twittering-send-http-request): do not invoke - `twittering-update-server-info' directly. - (twittering-http-get): modify the sentinel so that it also invokes - `twittering-update-server-info'. - (twittering-http-post): likewise. - (twittering-update-server-info): receive an alist HEADER-INFO - instead of a string HEADER-STR. - - * twittering-mode.el: Add a new function - `twittering-call-api-with-account'. - (twittering-add-application-header-to-http-request): receive an - alist ACCOUNT-INFO for specifying an account. - (twittering-http-get): likewise. - (twittering-http-post): likewise. - (twittering-call-api): call the new function - `twittering-call-api-with-account' with the main account. - (twittering-call-api-with-account): new function. This requires an - account information alist which it calls an API with. - (twittering-get-main-account-info): new function. - (twittering-verify-credentials): use a return value of - `twittering-get-main-account-info' instead of using variables - directly. - (twittering-http-get-verify-credentials-sentinel): extract an - account information from the `account-info' element in - `connection-info'. - - * twittering-mode.el: Add functions to make an authentication - string from an account-info alist. - (twittering-add-application-header-to-http-request): use new - functions for making an authentication string for a HTTP request. - (twittering-get-from-account-info): new function. - (twittering-make-basic-authentication-string): new function. - (twittering-make-oauth-authentication-string): new function. - (twittering-verify-credentials): rename `account-info-alist' - `account-info'. - (twittering-http-get-verify-credentials-sentinel): extract a - screen name and a password with the new function - `twittering-get-from-account-info'. - - * twittering-mode.el: Access an account information indirectly. - (twittering-register-account-info): new function. - (twittering-get-username): use `twittering-get-main-account-info' - instead of using the variable `twittering-username' directly. - (twittering-get-password): likewise. - (twittering-verify-credentials): use the functions - `twittering-get-main-account-info' and - `twittering-register-account-info' instead of using variables - directly. - (twittering-http-get-verify-credentials-sentinel): store or - discard the validated account information with the new function - `twittering-register-account-info'. - - * twittering-mode.el: Support the HTTP cookie. - (twittering-cookie-alist): new variable to store cookies for each - account. - (twittering-add-application-header-to-http-request): add a cookie - string if necessary. - (twittering-http-get): invoke `twittering-update-server-info' with - `connection-info' according to the modification of the function. - (twittering-http-post): likewise. - (twittering-update-server-info): receive an alist CONNECTION-INFO - as a new argument and update `twittering-cookie-alist'. The new - argument is required to store cookies for each account. - (twittering-extract-cookie): new function to extract cookies from - a HTTP response header as an alist. - (twittering-make-cookie-string): new function to make a cookie - string for a HTTP request from the cookie information stored in - the variable `twittering-cookie-alist'. - - * twittering-mode.el: Separate the current core of - `twittering-call-api-with-account' as a new function - `twittering-call-api-with-account-in-api1.0'. - (twittering-call-api-with-account): call a new function - `twittering-call-api-with-account-in-api1.0' instead of processing - a command directly. - (twittering-call-api-with-account-in-api1.0): new function. - - * twittering-mode.el: Support the Twitter REST API v1.1. - (twittering-service-method): change the default service method. - (twittering-service-method-table): add entries for the new service - method `twitter-api-v1.1'. - (twittering-http-get-default-sentinel): switch parser according to - the service method and the timeline. - (twittering-http-get-list-sentinel-base): support a response from - the Twitter REST API v1.1. - (twittering-update-server-info): replace a header name for the - Twitter REST API v1.1 with that for the Twitter REST API - v1.0. This is an ad-hoc solution. Since each API method is - separately limited on the Twitter REST API v1.1, the rate limit - information should be managed for each API method. - (twittering-call-api-with-account): call a special function - according to the current `twittering-service-method'. - (twittering-call-api-with-account-in-api1.0): new function that is - the same as the previous `twittering-call-api-with-account'. - (twittering-call-api-with-account-in-api1.1): new function. - (twittering-update-service-configuration): support the new service - method `twitter-api-v1.1'. - (twittering-use-profile-image-api): add a supplementary document. - (twittering-effective-length): support the new service method - `twitter-api-v1.1'. - * README.markdown: Add an explanation of prerequisites for the - Twitter REST API v1.1. - - * twittering-mode.el: Move the cursor to the tweet that will be - retrieved. - (twittering-toggle-or-retrieve-replied-statuses): move the cursor - to the tweet that will be retrieved. - - * twittering-mode.el: The timeline spec string "@" means the - mentions timeline instead of the replies timeline. - (twittering-extract-timeline-spec): interpret the timeline spec - string "@" as the mentions timeline instead of the replies - timeline. - - * twittering-mode.el: Fix a typo that disables twittering-mode.el - from retrieving the ":retweets_of_me" timeline. - (twittering-call-api-with-account-in-api1.1): fix a typo. - - * twittering-mode.el: Fix the function of rendering a replied - tweet. - (twittering-retrieve-single-tweet-sentinel): fix the condition - for deciding whether it should re-render a tweet partially or - not. - -2013-02-11 Tadashi MATSUO - - * twittering-mode.el: Fix the jojo-mode that caused an error when - the condition of automatically posting a tweet was satisfied. - Thanks to the anonymous person who reported the problem. - (twittering-post-predicted-message-like-jojo): fix variable name. - - * twittering-mode.el: Fix a return value of - `twittering-render-replied-statuses'. The function returns nil - without regard to whether a tweet is rendered or not. Thanks to - Ikumi Keita who reported the problem. - (twittering-render-replied-statuses): fix a return value. - - * twittering-mode.el: Support different intervals of retrieving - timelines. - (twittering-relative-retrieval-interval-alist): new variable. - (twittering-relative-retrieval-count-alist): new variable. - (twittering-retrieve-timeline): reset the retrieval count. - (twittering-start): update all active timelines forcibly once. - (twittering-get-relative-interval): new function. - (twittering-get-retrieval-count): new function. - (twittering-set-retrieval-count): new function. - (twittering-initialize-retrieval-count): new function. - (twittering-update-active-buffers): reduce retrievals according to - the variable `twittering-relative-retrieval-interval-alist'. - -2013-01-21 Tadashi MATSUO - - * twittering-mode.el: Update the regexp for extracting an ID from - a tweet. - (twittering-extract-id-from-url): update the regexp for extracting - an ID from a tweet. - - * twittering-mode.el: Avoid rendering same tweets repeatedly. The - function `twittering-render-timeline' rendered given repeated - tweets as is. Since a merged timeline may include one tweet - multiple times, such a tweet was rendered multiple times. - (twittering-render-timeline): skip repeated tweets. - -2013-01-14 Tadashi MATSUO - - * twittering-mode.el: Fix a bug of backward retrieval of - favorites timeline. The functions, `twittering-goto-next-status' - and `twittering-goto-previous-status', did nothing for favorites - timeline. They now treat favorites timeline as they treat other - timelines. Thanks to the anonymous person who reported the - problem. - (twittering-goto-next-status): Remove a special action for - favorites timeline. - (twittering-goto-previous-status): likewise. - - * README.markdown: Add explanations of major configurations and - others. - -2012-11-05 Tadashi MATSUO - - * twittering-mode.el: Support the backward retrieval of favorites - timeline. - (twittering-call-api): send the parameter `max_id' for retrieving - favorites timeline if necessary. - - * twittering-mode.el: Display how many tweets are added to each - buffer. - (twittering-http-get-default-sentinel): display how many tweets - are added to each buffer. - (twittering-add-statuses-to-timeline-data): return a list of pairs - of a timeline spec string and the number of addtional tweets. - (twittering-render-timeline): return a list of tweets newly - rendered. - - * twittering-mode.el: Extract the format from the HTTP response - header. - (twittering-get-content-subtype-symbol-from-header-info): new - function for extracting the content subtype from a HTTP header. - (twittering-send-http-request): fix docstring. - (twittering-get-error-message): extract the format from the HTTP - response header instead of using `connection-info`. - (twittering-http-get-default-sentinel): likewise. - (twittering-retrieve-single-tweet-sentinel): likewise. - -2012-09-17 Tadashi MATSUO - - * twittering-mode.el: Request a compressed HTTP response when - using `curl'. - (twittering-send-http-request-curl): add the option `--compressed' - to the arguments for the program `curl'. - - * twittering-mode.el: Do not call `force-mode-line-update' via the - unread status notifier. It had been invoked via a sentinel or - `post-command-hook'. - (twittering-set-number-of-unread): do not call the function - `force-mode-line-update'. - - * twittering-mode.el: Add a new function - `twittering-retrieve-timeline'. - (twittering-retrieve-timeline): new function for retrieving and - rendering a timeline. This accepts any timeilne spec string - including that for composite timeline, though - `twittering-call-api' accepts only a primary timeline. Also, the - new function can be invoked with more detailed retrieval options - than the existing function `twittering-get-and-render-timeline'. - (twittering-get-and-render-timeline): reimplemented with the new - function `twittering-retrieve-timeline'. - - * twittering-mode.el: Add a new command - `twittering-get-tweets-before' to get tweets before a - specific time. - (twittering-parse-time-string): new function. - (twittering-time-to-id): new function. - (twittering-get-tweets-within-specific-time-range): new function. - (twittering-get-tweets-before): new function. - - * twittering-mode.el: Display how many tweets are retrieved. - (twittering-http-get-default-sentinel): display how many tweets - are retrieved. This may includes some tweets that has been already - retrieved as an other timeline. - -2012-07-22 Tadashi MATSUO - - * twittering-mode.el: Clear list of undo entries on a pop-up edit - buffer. - (twittering-update-status-from-pop-up-buffer): clear list of undo - entries. - - * twittering-mode.el: Fix the bug that retweets may not be - rendered in a composite timeline. - (twittering-render-timeline): render a retweet if the first ID - referring the retweet is unknown. This is necessary because a - referring ID table of a composite timeline may lack information of - some component timelines. - - * twittering-mode.el: `twittering-id-to-time' restores the - milli-second parameter. - (twittering-id-to-time): restore the milli-second parameter. - - * twittering-mode.el: Fix the bug that - `twittering-render-replied-statuses' may ignore the argument - `pos'. - (twittering-render-replied-statuses): correctly consider the - argument `pos'. - - * twittering-mode.el: Fix the bug that a single tweet timeline - consisting of a retweet causes an error. A single tweet timeline - is registered to `twittering-timeline-data-table' in a special - way (See `twittering-retrieve-single-tweet-sentinel'). However, - `twittering-current-timeline-referring-id-table' did not take it - into account. - (twittering-current-timeline-referring-id-table): return the - correct hash table for a single tweet timeline. - -2012-05-06 Tadashi MATSUO - - * twittering-mode.el: Add some timeline specs to the definition of - timeline spec strings. - - * twittering-mode.el: Remove routines for the filter timeline. - (twittering-timeline-spec-to-string): remove routines for the - filter timeline. - (twittering-extract-timeline-spec): likewise. - (twittering-timeline-spec-primary-p): remove the mention to the - filter timeline from the docstring. - * test/test-twittering-mode.el: remove tests for the filter - timeline. - - * twittering-mode.el: Fix the docstring of `twittering-call-api'. - (twittering-call-api): fix the docstring for the command - `retrieve-single-tweet'. - - * twittering-mode.el: Support a `single tweet' timeline, which - consists of a tweet specified by its ID. - (twittering-retrieve-single-tweet-sentinel): support the retrieval - via `twittering-call-api' with the command `retrieve-timeline'. - (twittering-timeline-spec-to-string): support a `single tweet' - timeline spec. - (twittering-extract-timeline-spec): likewise. - (twittering-timeline-spec-primary-p): likewise. - (twittering-current-timeline-data): likewise. - (twittering-call-api): invoke the `retrieve-single-tweet' command - if the `retrieve-timeline' command is specified with a single - tweet timeline spec. - * test/test-twittering-mode.el: Add a test for a `single tweet' - timeline spec. - * README.markdown: Add an explanation for a `single tweet' - timeline spec. - - * twittering-mode.el: Add the expanded uri to the url string as a - property if possible. - (twittering-make-fontified-tweet-text-with-entity): add the - expanded-uri property to the url string. - - * twittering-mode.el: Visit a single tweet timeline via a URL of a - tweet. - (twittering-extract-id-from-url): new function. - (twittering-other-user-timeline): visit a single tweet timeline if - the cursor points to a URL of a tweet. - -2012-04-02 Tadashi MATSUO - - * README.markdown: Fix the order of tags. - -2012-04-01 Tadashi MATSUO - - * README.markdown: Fix the explanation of the key binding 'd'. - - * README.markdown: Add an explanation how to post an - official/native retweet. - - * README.markdown: Add basic key bindings to the 'Quick start' - section. - - * twittering-mode.el: Bind "C-cC-w" to - `twittering-delete-status'. The binding is a future replacement - for "C-cD", which violates the Emacs Key Binding Conventions. - (twittering-mode-map): bind "C-cC-w" to the function - `twittering-delete-status'. - * README.markdown: Fix the documents related to "C-cD". - - * twittering-mode.el: Add a new variable - `twittering-pop-to-buffer-function' to specify how to open a - window for an edit buffer. Previously, a window for an edit buffer - was opened by invoking the function `pop-to-buffer' with - specifying non-nil as the argument NORECORD. This was an ad-hoc - solution of the problem that an edit buffer was assigned on a - different window for each time. However, with the solution, a - window for an edit buffer might be hidden by opening another - window because the window for an edit buffer was not recorded in - the list of recently selected windows. To avoid the behavior, new - functions open a window with a fixed rule and record a new window - in the list. - (twittering-pop-to-buffer-function): new variable. - (twittering-pop-to-buffer): new function, which just invokes the - function specified by `twittering-pop-to-buffer-function'. - (twittering-pop-to-buffer-simple): new function for the new - variable `twittering-pop-to-buffer-function'. - (twittering-pop-to-buffer-in-current-window): likewise. - (twittering-pop-to-buffer-in-largest-window): likewise. - (twittering-pop-to-buffer-in-bottom-largest-window): likewise. - (twittering-update-status-from-pop-up-buffer): use - `twittering-pop-to-buffer' instead of invoking `pop-to-buffer' - directly. - -2012-03-27 Tadashi MATSUO - - * twittering-mode.el: Fix the filename of the footer line. - - * twittering-mode.el: Fix the calculation of length of a tweet - including a URL. - (twittering-effective-length): always use the length retrieved by - 'help/configuration' API. The function previously used the minimum - of the length by the API and the original length. This causes - failure in posting a tweet because the t.co URL wrapper - automatically wraps all links as of October 10, 2011. - - * README.markdown: Fix a typo. - - * README.markdown: Update the document. - - * twittering-mode.el: Ensure that a pop-up edit buffer is - initially marked as unmodified. - (twittering-update-status-from-pop-up-buffer): mark the pop-up - edit buffer as unmodified. Since the help is rendered as a - read-only text, the buffer must be marked as unmodified - explicitly. - -2012-03-17 Tadashi MATSUO - - * twittering-mode.el: Fix the condition of confirmation on posting - a tweet. The variable `twittering-request-confirmation-on-posting' - had been ignored on posting a reply. Thanks to Takashi Masuda who - reported the problem. - (twittering-edit-post-status): fix the condition of confirmation - on posting a tweet. - - * twittering-mode.el: Support error messages formatted as JSON. - (twittering-get-error-message): receive a new argument - CONNECTION-INFO and support error messages sent as JSON. - (twittering-http-get-default-sentinel): send CONNECTION-INFO to - the function `twittering-get-error-message'. - (twittering-http-get-list-sentinel-base): likewise. - (twittering-http-post-default-sentinel): likewise. - (twittering-http-post-destroy-status-sentinel): likewise. - - * twittering-mode.el: Parse a HTTP response body whose status code - is 401 or 404. - (twittering-get-error-message): try to parse a HTTP respose body - whose status code is 401 or 404. - - * twittering-mode.el: Display an error message from the - 'help/configuration' API. - (twittering-update-service-configuration-sentinel): display an - error message in a HTTP response body. - - * twittering-mode.el: Record HTTP response headers on debug mode. - (twittering-get-response-header): record the extracted HTTP - response header if `twittering-debug-mode' is non-nil. - - * twittering-mode.el: Remove the function - `twittering-make-field-properties'. It is unnecessary because - `twittering-render-a-field' automatically add a field property. - (twittering-get-common-properties): update the docstring. - (twittering-make-field-properties): removed. - (twittering-make-field-properties-of-popped-ancestors): removed. - (twittering-make-properties-of-popped-ancestors): new function. - (twittering-show-replied-statuses): use - `twittering-make-properties-of-popped-ancestors' instead of - `twittering-make-field-properties-of-popped-ancestors'. - - * twittering-mode.el: Add a new function - `twittering-make-field-id-from-id' which generates a field ID from - a tweet ID instead of a tweet alist. - (twittering-make-field-id-from-id): new function. - (twittering-make-field-id): reimplemented with the new function - `twittering-make-field-id-from-id'. - - * twittering-mode.el: Add a new command `retrieve-single-tweet' - to the function `twittering-call-api'. - (twittering-retrieve-single-tweet-sentinel): new function. - (twittering-call-api): add `retrieve-single-tweet' as a new - command. - (twittering-make-alist-of-forbidden-tweet): new function, which - generates a dummy alist for a forbidden tweet. - (twittering-make-alist-of-non-existent-tweet): new function, which - generates a dummy alist for a non-existent tweet. - - * twittering-mode.el: Add functions for finding a region of - replied statuses with the common base status. - (twittering-replied-statuses-visible-p): add a docstring. - (twittering-get-beginning-of-visible-replied-statuses): new - function, which returns the beginning position of replied statuses - rendered by `twittering-show-replied-statuses'. - (twittering-get-end-of-visible-replied-statuses): new function, - which returns the end position of replied statuses rendered by - `twittering-show-replied-statuses'. - (twittering-hide-replied-statuses): determine a region being - deleted by using the new functions. - - * twittering-mode.el: Fix the behavior of the function - `twittering-replied-statuses-visible-p' on a header or a footer. - (twittering-replied-statuses-visible-p): return nil on a header or - a footer. - - * twittering-mode.el: Add a new function - `twittering-render-replied-statuses'. - (twittering-render-replied-statuses): new function, which renders - replied statuses even if some replied statuses have been already - rendered. - (twittering-show-replied-statuses): reimplemented with the new - function `twittering-render-replied-statuses'. - - * twittering-mode.el: `twittering-redisplay-status-on-each-buffer' - supports various symbols as a specifier of regions to be - redisplayed. - (twittering-redisplay-status-on-each-buffer): support other - symbols besides `need-to-be-updated' as a specifier of regions to - be redisplayed. - - * twittering-mode.el: Support iterative retrieval of a series of - replies. - (twittering-retrieve-single-tweet-sentinel): redisplay some - regions related to the retrieved status. - (twittering-render-a-tweet-with-delay): new function. - (twittering-toggle-or-retrieve-replied-statuses): new function. - (twittering-mode-map): bind "R" to the new function - `twittering-toggle-or-retrieve-replied-statuses'. - - * twittering-mode.el: Add a new function `twittering-id-to-time' - that extracts a corresponding time from an ID generated by - Snowflake. - (twittering-snowflake-epoch-time): new function. - (twittering-id-to-time): new function. - - * twittering-mode.el: Use the time extracted from ID for forbidden - or non-existent tweets. - (twittering-make-alist-of-forbidden-tweet): use the time extracted - from ID. - (twittering-make-alist-of-non-existent-tweet): likewise. - - * twittering-mode.el: Update the docstring of the variable - `twittering-initial-timeline-spec-string'. - (twittering-initial-timeline-spec-string): update the docstring. - -2012-03-04 Tadashi MATSUO - - * twittering-mode.el: Fix the escape of a query string in a search - timeline spec. - (twittering-timeline-spec-to-string): correctly escape a query of - a search timeline spec. - (twittering-extract-timeline-spec): correctly decode a query - string with escaped characters. - * test/test-twittering-mode.el: Add tests for search timeline - specs. - - * twittering-mode.el: Support ":exclude-re/REGEXP/SPEC" - timelines. - (twittering-timeline-spec-to-string): support the new timeline - spec ":exclude-re/REGEXP/SPEC". - (twittering-extract-timeline-spec): likewise. - (twittering-timeline-spec-composite-p): likewise. - (twittering-get-base-timeline-specs): likewise. - (twittering-generate-composite-timeline): likewise. - (twittering-current-timeline-referring-id-table): likewise. - (twittering-current-timeline-data): likewise. - * test/test-twittering-mode.el: Add tests for exclude-re timeline - specs. - -2012-02-28 Tadashi MATSUO - - * twittering-mode.el: Fix the function - `twittering-current-timeline-referring-id-table'. There was the - possibility that the function returns nil for a composite timeline - spec. This made native retweets disappear on the composite - timeline. Thanks to Boots_of_Lead who reported the bug. - (twittering-current-timeline-referring-id-table): for a composite - timeline spec, return the table of the first primary base spec - with a non-nil referring table. This function previously returned - the first direct base timeline spec, which might be nil. - - * twittering-mode.el: Add an explanation to the docstring of - `twittering-new-tweets-rendered-hook'. - (twittering-new-tweets-rendered-hook): add an explanation to the - docstring. - - * twittering-mode.el: Reimplement jojo-mode as a hook. - (twittering-add-statuses-to-timeline-data): remove statements for - jojo-mode. - (twittering-initialize-global-variables-if-necessary): add - `twittering-jojo-mode-hook-function' to the new tweets rendered - hook. - (twittering-jojo-mode-p): removed. - (twittering-update-jojo): removed. - (twittering-post-predicted-message-like-jojo): new function. - (twittering-jojo-mode-hook-function): new function. - - * twittering-mode.el: Display the replied tweet on the pop-up - edit buffer. - (twittering-edit-set-help-string): new function. - (twittering-edit-setup-help): add a new argument REPLY-TO-ID. - (twittering-update-status-from-pop-up-buffer): send REPLY-TO-ID to - the function `twittering-edit-setup-help'. - - * twittering-mode.el: Generate a description of a edited tweet by - `twittering-generate-format-status-function'. - (twittering-edit-set-help-string): do not add a text property to - STR. - (twittering-edit-setup-help): generate a description by - `twittering-generate-format-status-function'. - - * twittering-mode.el: Render a help on a pop-up edit buffer as a - read-only text. The replied tweet can be copied on the edit - buffer. Rendering a help as a read-only text also suppresses - strange behavior of overlays exceeding the size of the current - window. - (twittering-help-overlay): removed. - (twittering-help-overlay-priority): removed. - (twittering-edit-help-end-pos): new variable. - (twittering-edit-mode): remove the parent mode to suppress - invocation of hooks for `text-mode'. The trick for disabling - font-lock mode is introduced. `twittering-edit-help-end-pos' is - prepared as a buffer-local variable. - (twittering-edit-extract-status): determine the region being - extracted with `twittering-edit-help-end-pos'. - (twittering-edit-reset-status): new function. - (twittering-edit-set-help-string): render a help for - `twittering-edit-mdoe' as a read-only text. - (twittering-update-status-from-pop-up-buffer): move the cursor - just behind the help. - (twittering-edit-next-history): extract the edited message by - `twittering-edit-extract-status' and reset it by - `twittering-edit-reset-status'. - (twittering-edit-previous-history): likewise. - - * twittering-mode.el: Dynamically determine an end position of a - help on a pop-up edit buffer. - (twittering-edit-help-end-pos): removed. - (twittering-edit-mode): remove the variable - `twittering-edit-help-end-pos'. - (twittering-edit-get-help-end): new function, which replaces the - buffer-local variable `twittering-edit-help-end-pos'. - (twittering-edit-extract-status): use the function - `twittering-edit-get-help-end' instead of the variable - `twittering-edit-help-end-pos'. - (twittering-edit-reset-status): likewise. - (twittering-edit-set-help-string): likewise. - (twittering-update-status-from-pop-up-buffer): likewise. - - * twittering-mode.el: Control an attribute of a tweet being edited - with an alist bound to `twittering-edit-mode-info'. - (twittering-reply-recipient): removed. - (twittering-edit-mode-info): new variable, which is an alist - specifying the attribute of the tweet being edited. - (twittering-update-status-from-pop-up-buffer): control the - attribute of the tweet being edited with the new variable - `twittering-edit-mode-info'. - (twittering-edit-post-status): determine the attribute of the - tweet being posted by the variable `twittering-edit-mode-info'. - - * twittering-mode.el: Allow a reply where a mention is not placed - on the beginning. - (twittering-edit-post-status): allow a reply where a mention is - not placed on the beginning. - (twittering-update-status-from-minibuffer): likewise. - - * twittering-mode.el: Send the cited ID to the function - `twittering-update-status' when editing an organic retweet. - (twittering-edit-skeleton-alist): mention that IN-REPLY-TO is - non-nil when a tweet is edited as an organic retweet. - (twittering-update-status-from-minibuffer): post a tweet as a - reply only if TWEET-TYPE is the symbol `reply'. - (twittering-update-status): mention that REPLY-TO-ID is non-nil - when a tweet cites or replies to a certain tweet. - (twittering-organic-retweet): send the ID of the cited tweet to - `twittering-update-status' as REPLY-TO-ID. - - * twittering-mode.el: Generate a help on an edit buffer from the - buffer-local variable `twittering-edit-mode-info'. - (twittering-edit-setup-help): generate a help from the - buffer-local variable `twittering-edit-mode-info'. - (twittering-update-status-from-pop-up-buffer): remove obsolete - arguments from the invocation of `twittering-edit-setup-help'. - - * twittering-mode.el: Enable to toggle a reply and a normal tweet - on an edit buffer. - (twittering-edit-mode-map): bind "C-c C-r" to - `twittering-edit-toggle-reply'. - (twittering-edit-setup-help): display a help for - `twittering-edit-toggle-reply'. - (twittering-edit-toggle-reply): new function, which toggles - whether the tweet being edited will be sent as a reply or not. - - * twittering-mode.el: Confirm that the edited message should be - sent as a normal tweet when it has been edited as a reply but it - does not include a mention to the cited user. - (twittering-edit-post-status): confirm that the edited message - should be sent as a normal tweet when it has been edited as a - reply but it does not include a mention to the cited user. - - * twittering-mode.el: Support a new format specifier "%u" for - `twittering-retweet-format'. It is replaced with the URL of the - cited tweet. - (twittering-retweet-format): update the docstring. - (twittering-get-status-url-from-alist): new function. - (twittering-organic-retweet): support a new format specifier - "%u". - -2012-02-12 Tadashi MATSUO - - * twittering-mode.el: Accept a symbol as FUNC of a composite - timeline spec ":exclude-if/FUNC/SPEC". - (twittering-extract-timeline-spec): accept a symbol as FUNC of - a composite timeline spec ":exclude-if/FUNC/SPEC". - * test/test-twittering-mode.el: Add a test of an exclude-if - timeline spec with a symbol as FUNC. - - * twittering-mode.el: Give the help overlay a priority specified - by `twittering-help-overlay-priority'. - (twittering-help-overlay-priority): new variable. - (twittering-edit-setup-help): give the overlay a priority - specified by `twittering-help-overlay-priority'. - -2012-02-11 Tadashi MATSUO - - * twittering-mode.el: Use an after-string property instead of - a before-string property to show the help on an edit buffer. - Thanks to irie who discoverd the problem and wrote a suitable - code. - (twittering-edit-setup-help): set an after-string property of the - overlay for the help and give high priority to the overlay. - - * twittering-mode.el: Remove duplicates in a merge timeline spec. - (twittering-extract-timeline-spec): remove duplicates in a list of - timeline specs in a merge timeline spec. - * test/test-twittering-mode.el: Add a test of reducing duplicates - in a merge timeline spec. - - * twittering-mode.el: Remove duplicates in the list of primary - base timeline specs. - (twittering-get-primary-base-timeline-specs): remove duplicates in - the list of primary base timeline specs. - * test/test-twittering-mode.el: Add a test of dependence of - composite timeline specs. - - * twittering-mode.el: Fix the behavior of the function - `twittering-get-current-status-head' for the position following - the header. Thanks to lemit who reported the problem. - The previous one made `twittering-replied-statuses-visible-p' - return an incorrect value on the position following the header. - (twittering-get-current-status-head): fix the behavior when POS - points to the beginning of a field and also points to the end of - another field. The function previously returned the head of the - previous field. - - * twittering-mode.el: Fix the behavior of `twittering-get-id-at' - on the head of the footer. - (twittering-get-id-at): use `twittering-get-current-status-head' - instead of `twittering-get-previous-status-head'. On the head of - the footer, the former returns the head of the footer and the - latter returns the head of the status followed by the footer. - -2012-02-06 Tadashi MATSUO - - * twittering-mode.el: Delete a specified status from composite - timeline buffers. - (twittering-get-dependent-timeline-specs): new function. - (twittering-delete-status-from-data-table): delete the given - status from buffers bound to composite timelines. - - * twittering-mode.el: Decode a HTTP response body before invoking - a sentinel. - (twittering-decode-response-body): new function. - (twittering-send-http-request): decode the response body by - `twittering-decode-response-body' before invoking the sentinel. - (twittering-http-get-default-sentinel): do not decode the response - body here. - - * twittering-mode.el: Delete a status after the successful - response for the `destroy-status' API is received. - (twittering-http-post-destroy-status-sentinel): new function. - (twittering-call-api): use the new function - `twittering-http-post-destroy-status-sentinel' as the sentinel of - `twittering-http-post' for the command `destroy-status'. - (twittering-delete-status): do not delete the specified status - here. - - * twittering-mode.el: `twittering-render-a-field' moves the - cursor even if the given status is not rendered. - (twittering-render-a-field): move the cursor even if the given - status is not rendered. - - * twittering-mode.el: Do not use the return value of the function - `twittering-render-a-field'. - (twittering-render-timeline): do not use the return value of - `twittering-render-a-field'. - (twittering-show-replied-statuses): likewise. - - * twittering-mode.el: `twittering-render-a-field' returns nil if - the status is not rendered. - (twittering-render-a-field): return nil if the status is not - rendered. - (twittering-render-timeline): show replied statuses only if the - status is rendered. - - * twittering-mode.el: Add a docstring for - `twittering-render-timeline'. - (twittering-render-timeline): add a docstring. - - * twittering-mode.el: Add `twittering-rerender-timeline-all' that - re-renders tweets after clearing the buffer. - (twittering-render-timeline): modify arguments. - (twittering-rerender-timeline-all): new function. - (twittering-get-managed-buffer): replace the invocation of the - function `twittering-render-timeline' with that of the function - `twittering-rerender-timeline-all'. - (twittering-icon-mode): likewise. - (twittering-toggle-reverse-mode): likewise. - (twittering-erase-old-statuses): likewise. - - * twittering-mode.el: Add a new hook - `twittering-new-tweets-rendered-hook'. - (twittering-rendered-new-tweets-spec): new variable. - (twittering-rendered-new-tweets-spec-string): new variable. - (twittering-rendered-new-tweets): new variable. - (twittering-new-tweets-rendered-hook): new hook. - (twittering-http-get-default-sentinel): call - `twittering-render-timeline' with non-nil INVOKE-HOOK. - (twittering-add-statuses-to-timeline-data): likewise. - (twittering-render-timeline): add a new argument INVOKE-HOOK. - (twittering-rerender-timeline-all): call - `twittering-render-timeline' with nil INVOKE-HOOK. - - * twittering-mode.el: Unread status notifier uses the new hook - invoked when rendering tweets. This corrects the number of unread - statuses on composite timelines. - (twittering-update-unread-status-info): modified for use in - `twittering-new-tweets-rendered-hook'. - (twittering-enable-unread-status-notifier): use - `twittering-new-tweets-rendered-hook' instead of - `twittering-new-tweets-hook'. - - * twittering-mode.el: Add a new hook `twittering-mode-init-hook'. - The new hook is invoked after initializing global variables. - (twittering-mode-init-hook): new hook invoked after initializing - global variables. - (twittering-mode-hook): add a docstring. - (twittering-initialize-global-variables-if-necessary): invoke - hooks specified by `twittering-mode-init-hook'. - -2012-01-29 Tadashi MATSUO - - * twittering-mode.el: Follow the header conventions. Thanks to - Jonas Bernoulli who reported the nonfulfillment. - - * twittering-mode.el: Expand a path before calling the function - `alpaca-after-find-file'. - (twittering-read-from-encrypted-file): expand FILE into a full - path. Since "alpaca.el" uses the `buffer-file-name' as the prefix - of the temporary file, it must be a full path. - - * twittering-mode.el: Add a new argument of the function - `twittering-render-a-field' for rendering a tweet without a - separator. - (twittering-render-a-field): add a new argument for rendering a - tweet without a separator. - - * twittering-mode.el: Render the header and footer line. - (twittering-make-field-id-of-timeline-oldest-end): new function. - (twittering-make-field-id-of-timeline-latest-end): new function. - (twittering-field-id-is-timeline-oldest-end): new function. - (twittering-field-id-is-timeline-latest-end): new function. - (twittering-render-timeline): render the header and footer on - rendering the whole of the buffer. In that case, the function now - moves the cursor to the normal field not to the header nor - footer. - (twittering-mode-map): bind "G" to `twittering-goto-last-status' - instead of `end-of-buffer'. - (twittering-enter): update the timeline when the function is - invoked on the header or footer. - (twittering-goto-last-status): new function. - (twittering-get-last-status-head): new function. - (twittering-goto-first-normal-field): new function. - (twittering-goto-last-normal-field): new function. - (twittering-get-first-normal-field-head): new function. - (twittering-get-last-normal-field-head): new function. - (twittering-goto-next-status): move the cursor to the normal field - before instruction for updating the timeline. - (twittering-goto-previous-status): likewise. - - * twittering-mode.el: Add variables for customizing the header and - footer. - (twittering-timeline-header-face): new variable. - (twittering-timeline-footer-face): new variable. - (twittering-timeline-header): new variable. - (twittering-timeline-footer): new variable. - (twittering-render-timeline): render the header and footer - according to the customization variables. - (twittering-initialize-global-variables-if-necessary): initialize - the faces for the header and footer. - - * twittering-mode.el: The current version of twittering-mode - always behaves as the previous version does on scroll-mode. The - variable `twittering-scroll-mode' is obsolete. - (twittering-scroll-mode): removed. - (twittering-mode-line-buffer-identification): ignore the obsolete - variable `twittering-scroll-mode'. - (twittering-render-timeline): remove expressions for restoring - positions on non-scroll-mode. - (twittering-mode-map): do not bind "s" to the function - `twittering-scroll-mode'. - (twittering-mode-setup): do not call `make-local-variable' for the - variable `twittering-scroll-mode'. - * test/test-twittering-mode.el: Remove tests related to the - scroll-mode. - - * twittering-mode.el: Remove invalid timeline specs from the - history after the failure of the retrieval. - (twittering-http-get-default-sentinel): remove the specified - timeline spec string from the history after it becomes clear that - the spec is invalid. - (twittering-remove-timeline-spec-string-from-history): new - function. - (twittering-get-managed-buffer): add the requested timeline spec - string to the history. It may be removed from the history after if - it is invalid. - - * twittering-mode.el: Support ":exclude-if/FUNC/SPEC" timelines. - (twittering-http-get-default-sentinel): remove timeline spec - strings depending the invalid spec. - (twittering-timeline-spec-to-string): support the new timeline - spec ":exclude-if/FUNC/SPEC". - (twittering-extract-timeline-spec): likewise. - (twittering-timeline-spec-composite-p): new function. - (twittering-timeline-spec-depending-on-p): new function. - (twittering-get-base-timeline-specs): new function. - (twittering-get-primary-base-timeline-specs): new function. - (twittering-generate-composite-timeline): new function. - (twittering-current-timeline-referring-id-table): support the new - timeline spec ":exclude-if/FUNC/SPEC". - (twittering-current-timeline-data): likewise. - (twittering-add-statuses-to-timeline-data): update composite - timelines that depend on the primary timeline. - (twittering-get-and-render-timeline): add new arguments SPEC and - SPEC-STRING to retrieve timelines that have no buffers but - constitute some composite timelines. - * test/test-twittering-mode.el: Add tests for the timeline spec - ":exclude-if/FUNC/SPEC". - - * twittering-mode.el: Support merge timelines. - (twittering-timeline-spec-composite-p): support the merge timeline - spec. - (twittering-get-base-timeline-specs): likewise. - (twittering-generate-composite-timeline): likewise. - (twittering-current-timeline-referring-id-table): likewise. - (twittering-current-timeline-data): likewise. - -2012-01-14 Tadashi MATSUO - - * twittering-mode.el: Do not record the edit buffer in the list of - recently selected ones. Thanks to tdkn who reported the behavior - related to the list. - (twittering-update-status-from-pop-up-buffer): do not put the - buffer at the front of the list of recently selected ones. - - * twittering-mode.el: Add a field property to a tweet on the - function `twittering-render-a-field'. - (twittering-make-common-properties): Do not add a field property. - (twittering-render-a-field): add a field property. - -2012-01-08 Tadashi MATSUO - - * twittering-mode.el: Explicitly signal an error when - twittering-mode fails to retrieve a request token. - (twittering-oauth-get-access-token): signal an error when - twittering-mode fails to retrieve a request token. - - * test/test-twittering-mode.el: Add a test for parsing JSON with a - character unsupported by Emacs. - - * test/test-twittering-mode.el: Add a test for parsing XML with a - character unsupported by Emacs. - - * twittering-mode.el: Confirm that a file is readable before - decrypting it. - (twittering-read-from-encrypted-file): confirm that FILE is - readable. - - * twittering-mode.el: Expand a path before invoking the function - `epg-decrypt-file'. - (twittering-read-from-encrypted-file): expand FILE before invoking - `epg-decrypt-file'. - -2011-12-09 Tadashi MATSUO - - * twittering-mode.el: Retrieve an ID of a tweet replied by a - tweet on a search timeline. You can display replied tweets on a - search timeline if they have been retrieved. This is available - only when tweets are retrieved as the JSON format. - (twittering-json-object-to-a-status-on-search): extract the - "in_reply_to_status_id_str" field, which Twitter begins to serve - recently. - - * twittering-mode.el: Replace `json-read' with - `twittering-json-read' in order to prevent abnormal exit caused by - decoding an unknown code point. Thanks to lemit who reported the - problem. - (twittering-http-get-default-sentinel): use `twittering-json-read' - instead of `json-read'. - (twittering-json-read): new function. - -2011-12-07 Tadashi MATSUO - - * twittering-mode.el: Rearrange some codes for interpreting a JSON - object. - (twittering-json-object-to-a-status-base): rearrange codes for - interpreting a JSON object. - - * twittering-mode.el: Fix the interpretation of JSON objects for - direct messages. Thanks to Alexis who reported the problem. - (twittering-http-get-default-sentinel): use - `twittering-json-object-to-a-status-on-direct-messages' for - timelines related to direct messages. - (twittering-json-object-to-a-status-on-direct-messages): new - function. - -2011-11-26 Tadashi MATSUO - - * twittering-mode.el: Fix the strange behavior on moving the - cursor according to logical lines. Thanks to lemit who reported - the problem. - (twittering-mode-setup): bind `inhibit-field-text-motion' to - non-nil as a buffer-local variable. If it is nil, the field - property attached tweets interferes with the cursor motion based - on logical lines. - - * twittering-mode.el: Store the tweet parameters, `truncated' and - `user-protected', as boolean parameters. - (twittering-normalize-raw-status): store the `truncated' and - `user-protected' parameters as boolean parameters. - (twittering-generate-format-table): use the `truncated' and - `user-protected' parameters as boolean. - (twittering-organic-retweet): likewise. - * test/test-twittering-mode.el: Update tests to follow the change - of internal representation of a tweet. - * test/fixture/timeline-data.el: Update data to follow the change - of internal representation of a tweet. - - * twittering-mode.el: Store the tweet parameter `created-at' as - Emacs internal time representation. This avoids parsing a time - string whenever a tweet is re-rendered. - (twittering-atom-xmltree-to-status-datum): store `created-at' as - Emacs internal time representation. - (twittering-normalize-raw-status): likewise. - (twittering-created-at-to-seconds): removed. - (twittering-generate-format-table): use the parameters - `created-at' as Emacs internal time representation. - (twittering-generate-formater-for-first-spec): likewise. - * test/test-twittering-mode.el: Update tests to follow the change - of internal representation of a tweet. - * test/fixture/timeline-data.el: Update data to follow the change - of internal representation of a tweet. - - * twittering-mode.el: `twittering-call-api' receives `sentinel' as - an argument for the command `retrieve-timeline'. - (twittering-call-api): receive `sentinel' as an argument for - the command `retrieve-timeline'. - - * twittering-mode.el: `twittering-call-api' receives `format' as - an argument for the command `retrieve-timeline'. - (twittering-http-get-default-sentinel): refer to `format' in - `connection-info' for parsing the retrieved content. - (twittering-call-api): receive `format' as an argument for the - command `retrieve-timeline'. The `format' is automatically added - to the last of `additional-info' for `twittering-http-get'. - - * twittering-mode.el: Support retrieval of tweets as the JSON - format. - (twittering-http-get-default-sentinel): support the JSON format. - (twittering-extract-common-element-from-json): new function. - (twittering-json-object-to-a-status): new function. - (twittering-json-object-to-a-status-base): new function. - (twittering-json-object-to-a-status-on-search): new function. - - * twittering-mode.el: Retrieve tweets as the JSON format if - possible. - (twittering-get-and-render-timeline): retrieve tweets as the JSON - format if possible. - - * twittering-mode.el: Render a link wrapped by the t.co service as - the original URL on a search timeline if possible. This requires - `json.el'. - (twittering-call-api): retrieve a search timeline with entities. - -2011-11-13 Tadashi MATSUO - - * twittering-mode.el: Fix the bug that unconditionally adds - `emacs21' and `url-emacs21' into `load-path' on byte-compilation. - On byte-compilation, the directories `emacs21' and `url-emacs21', - which are included in the repository of twittering-mode, were - unconditionally added into `load-path'. Due to this bug, some - macros were embedded as obsolete definitions for Emacs21 in the - result of byte-compilation. Some functions in the result cause - errors on Emacs 22 or later because the obsolete definitions - conflict with Emacs newer than 21. On Emacs 22 or later, the - directories are no longer added to `load-path' on - byte-compilation. - Thanks to HKey who has discovered the bug. - -2011-10-30 Tadashi MATSUO - - * test/test-twittering-mode.el: Remove obsolete tests of the - obsolete feature related to `twittering-sign-string-function' and - `twittering-sign-simple-string'. - (test-sign-string): removed. - - * twittering-mode.el: A tweet has a greater field ID than that of - its ancestor tweets. The order of field IDs matches with the order - in which tweets should be rendered. - (twittering-make-field-id): attach a greater field ID to normal - tweets than its ancestor tweets. - - * twittering-mode.el: Use a common macro for rendering a status. - (twittering-render-a-field): new macro for rendering a status. - (twittering-render-timeline): use `twittering-render-a-field'. - (twittering-show-replied-statuses): use - `twittering-render-a-field'. - - * twittering-mode.el: Accept list names including non-ASCII - characters. - (twittering-extract-timeline-spec): accept list names including - non-ASCII characters. - * test/test-twittering-mode.el (timeline-spec): add a test for a - list name including non-ASCII characters. - -2011-10-23 Tadashi MATSUO - - * twittering-mode.el: Keep the private information unless the - server explicitly informs that it is invalid. - (twittering-verify-credentials): display the reason of - authorization failure. - (twittering-http-get-verify-credentials-sentinel): keep the - private information for authorization unless the server returns - 401(Unauthorized) as the HTTP response status code. - -2011-10-09 Tadashi MATSUO - - * twittering-mode.el: Bind `default-directory' to the temporary - directory to avoid problems caused by executing programs on - a removed directory. Thanks to tomykaira who reported the problem. - (twittering-send-http-request-internal): locally bind the variable - `default-directory' to the temporary directory in order to prevent - Emacs from executing an external program in the invalid condition - where `default-directory' points to a directory which has been - already removed. - (twittering-start-http-session-curl-https-p): likewise. - (twittering-sha1): likewise. - (twittering-read-from-encrypted-file): likewise. - (twittering-write-and-encrypt): likewise. - (twittering-convert-image-data): likewise. - (twittering-save-icon-properties): likewise. - (twittering-load-icon-properties): likewise. - (twittering-initialize-global-variables-if-necessary): likewise. - -2011-10-07 Tadashi MATSUO - - * twittering-mode.el: Fix the argument of the function - `twittering-read-username-with-completion'. Thanks to Akira - Tamamori who reported a problem caused by the bug. - (twittering-read-timeline-spec-with-completion): fix the argument - of the function `twittering-read-username-with-completion'. - - * twittering-mode.el: Search the content-type header from a HTTP - response in a case-insensitive way according to RFC2616. Thanks to - luozengbin who reported the bug. - (twittering-http-get-default-sentinel): fix the check of the - content-type header of a HTTP response. The content-type is now - searched in a case-insensitive way according to RFC2616. - - * twittering-mode.el: Add new functions related to preparation for - invoking APIs. - (twittering-add-application-header-to-http-request): confirm the - existence of OAuth token. - (twittering-api-invocation-is-ready-p): new function for checking - whether prerequisites for invoking APIs have been prepared without - side effects. Strictly speaking, this function may have a side - effect because the function `twittering-lookup-connection-type' - may change some variables. - (twittering-ensure-preparation-for-api-invocation): new function - for ensuring prerequisites for invoking APIs. - (twittering-visit-timeline): use the new function - `twittering-ensure-preparation-for-api-invocation'. - - * twittering-mode.el: Signal an error when no valid connection - method is found on sending a HTTP request. - (twittering-send-http-request-internal): signal an error when no - valid connection method is found. - -2011-10-03 Tadashi MATSUO - - * twittering-mode.el: Allow users to supplement a username for - timeline specs with a following username afterward. - (twittering-read-timeline-spec-with-completion): allow users to - supplement a username for timeline specs with a following username - afterward. - - * twittering-mode.el: Add a username to the variable - `twittering-user-history' after retrieving a user timeline. - (twittering-timeline-spec-is-user-p): new function. - (twittering-add-timeline-history): add a username to the history - bound to `twittering-user-history' if the given spec is a user - timeline. - - * twittering-mode.el: Fix the macro - `twittering-revive:prop-get-value'. - (twittering-revive:prop-get-value): use `macroexpand' instead of - `macroexpand-all'. - -2011-09-25 Tadashi MATSUO - - * twittering-mode.el: Users can post a tweet consisting of only - mentions from the pop-up buffer. - (twittering-edit-post-status): check a tweet with a simple regexp - instead of `twittering-status-not-blank-p'. - - * twittering-mode.el: Add functions for `revive.el'. - (twittering-revive:prop-get-value): new macro defined only when - compiling `twittering-mode.el'. - (twittering-revive:twittering): new function for restoring a - timeline buffer with `revive.el'. - (twittering-setup-revive): new function configuring `revive.el' - for restoring a timeline buffer. - - * twittering-mode.el: `twittering-update-status' receives a - tweet-type symbol instead of a timeline spec. It replaces a - timeline spec representing whether the tweet beingedited is a - direct message or not. - (twittering-update-status-function): update docstring. - (twittering-edit-setup-help): receive a tweet-type symbol as the - second argument instead of a timeline spec. - (twittering-update-status-from-pop-up-buffer): receive a - tweet-type symbol as the fourth argument instead of a timeline - spec. - (twittering-update-status-from-minibuffer): likewise. - (twittering-update-status): likewise. - (twittering-direct-message): invoke `twittering-update-status' - with a tweet-type symbol `direct-message' instead of a timeline - spec. - (twittering-enter): invoke `twittering-update-status' with a - tweet-type symbol instead of a timeline spec. - - * twittering-mode.el: A skeleton can be used as - `twittering-retweet-format'. - (twittering-retweet-format): update docstring. - (twittering-update-status-from-pop-up-buffer): accept a skeleton - as the first argument. - (twittering-update-status-from-minibuffer): likewise. - (twittering-update-status): likewise. - (twittering-organic-retweet): invoke `twittering-update-status' - with a skeleton for generating an initial string. - - * twittering-mode.el: In default, the cursor is placed on the head - when editing an organic retweet. - (twittering-retweet-format): modify the initial value so that the - cursor will be placed previous to the initial string. - - * twittering-mode.el: The symbol `organic-retweet' is added as a - tweet type referred by edit skeleton. - (twittering-update-status-function): update docstring. - (twittering-edit-skeleton-alist): likewise. - (twittering-update-status): likewise. - (twittering-organic-retweet): invoke `twittering-update-status' - with the tweet type symbol `organic-retweet' as the explicit - fourth argument. - -2011-09-05 Tadashi MATSUO - - * twittering-mode.el: Fix extraction of hashtags from a XML - response. - (twittering-normalize-raw-status): Fix extraction of hashtags from - a XML response. - - * twittering-mode.el: The sign string feature is obsolete. The - feature based on the function `twittering-sign-string-function' - and the variable `twittering-sign-simple-string' is removed. The - edit skeleton feature can be used as its alternative. - (twittering-initialize-global-variables-if-necessary): display a - warning about obsolete sign string feature. The function also - translates the configuration of obsolete sign string into that of - edit skeleton if possible. - (twittering-sign-simple-string): removed. - (twittering-sign-string-function): removed. - (twittering-sign-string-default-function): removed. - (twittering-sign-string): removed. - (twittering-edit-length-check): do not use the obsolete function - `twittering-sign-string'. - (twittering-show-minibuffer-length): likewise. - (twittering-update-status-from-minibuffer): likewise. - -2011-09-04 Tadashi MATSUO - - * twittering-mode.el: Remove stickiness of text properties. - (twittering-make-string-with-user-name-property): add front-sticky - and rear-nonsticky property to STR for removing stickiness. - (twittering-make-string-with-source-property): likewise. - (twittering-make-string-with-uri-property): likewise. - (twittering-generate-format-table): add front-sticky and - rear-nonsticky property to the string for "%r" in order to remove - stickiness. - (twittering-generate-formater-for-first-spec): add front-sticky - and rear-nonsticky property to the string for "%@" in order to - remove stickiness. - -2011-09-03 Tadashi MATSUO - - * twittering-mode.el: Fix a comment. - - * twittering-mode.el: The properties for hashtags, mentions and - URIs are non-sticky. - (twittering-make-fontified-tweet-text): make the properties - non-sticky for the both direction. - - * twittering-mode.el: Render a link wrapped by the t.co service as - the original URL. - (twittering-call-api): call APIs with the option - `include_entities=true' if possible. - (twittering-normalize-raw-status): extract entities. - (twittering-xmltree-to-status): extract entities of direct - messages. - (twittering-make-fontified-tweet-text): do not fontify a region if - it has been already fontified. - (twittering-make-fontified-tweet-text-with-entity): new function. - (twittering-generate-format-table): try to fontify the text with - entities first. - - * twittering-mode.el: Fix indices in entities of a timeline - retrieved as XML. - (twittering-make-gap-list): new function. - (twittering-get-gap): new function. - (twittering-normalize-raw-status): correct indices in entities so - that they mean the position in the decoded text. - - * twittering-mode.el: Suppress redundant decoding. - (twittering-normalize-raw-status): decode entities with - `twittering-decode-entities-after-parsing-xml'. - (twittering-decode-entities-after-parsing-xml): new function. - -2011-08-27 Tadashi MATSUO - - * twittering-mode.el: A list timeline includes native retweets. - (twittering-call-api): retrieve a list timeline with native - retweets. - - * twittering-mode.el: Update the service configuration with the - 'help/configuration' API periodically. - (twittering-call-api): add `get-service-configuration' as a new - command. - (twittering-service-configuration-default): new constant. - (twittering-service-configuration): new variable. - (twittering-service-configuration-queried): new variable. - (twittering-service-configuration-update-interval): new variable. - (twittering-get-service-configuration): new function. - (twittering-update-service-configuration): new function. - (twittering-update-service-configuration-sentinel): new function. - (twittering-update-service-configuration-clean-up-sentinel): new - function. - (twittering-update-active-buffers): invoke - `twittering-update-service-configuration'. - - * twittering-mode.el: Count characters with considering the t.co - link wrapper. - (twittering-effective-length): new function. - (twittering-edit-length-check): check the length with - `twittering-effective-length'. - (twittering-edit-post-status): likewise. - (twittering-show-minibuffer-length): likewise. - - * twittering-mode.el: Ad-hoc support for non-ASCII hashtags. - (twittering-extract-timeline-spec): support non-ASCII hashtags by - an ad-hoc way. - (twittering-make-fontified-tweet-text): likewise. - (twittering-edit-skeleton-inherit-hashtags): likewise. - -2011-08-18 Tadashi MATSUO - - * twittering-mode.el: Display the requested URI if a HTTP request - has failed. - (twittering-send-http-request): display the requested method and - URI if the request has failed. - -2011-08-17 Tadashi MATSUO - - * twittering-mode.el: Correctly store icons when - `twittering-convert-fix-size' is nil. - (twittering-save-icon-properties): correctly generate stored - representation of icon images when its size is not specified - explicitly. - -2011-08-14 Tadashi MATSUO - - * twittering-mode.el: Update the API for a list timeline. - (twittering-call-api): use the current API for retrieving a list - timeline. - - * twittering-mode.el: Support ":retweeted_to_user/USER" timeline. - (twittering-timeline-spec-to-string): support `retweeted_to_user' - timeline. - (twittering-extract-timeline-spec): support a string like - ":retweeted_to_user/USER" as a `retweeted_by_user' timeline. - (twittering-timeline-spec-primary-p): add `retweeted_to_user' - as a primary timeline. - (twittering-call-api): support `retweeted_to_user' timeline. - (twittering-read-timeline-spec-with-completion): add - ":retweeted_to_user/" as a candidate. - - * twittering-mode.el: Support ":retweeted_by_user/USER" timeline. - (twittering-timeline-spec-to-string): support `retweeted_by_user' - timeline. - (twittering-extract-timeline-spec): support a string like - ":retweeted_by_user/USER" as a `retweeted_by_user' timeline. - (twittering-timeline-spec-primary-p): add `retweeted_by_user' - as a primary timeline. - (twittering-call-api): support `retweeted_by_user' timeline. - (twittering-read-timeline-spec-with-completion): add - ":retweeted_by_user/" as a candidate. - -2011-08-13 Tadashi MATSUO - - * twittering-mode.el: Add `migre.me' as a URL shortening serivce. - (twittering-tinyurl-services-map): add an entry for `migre.me'. - - * twittering-mode.el: Save icons correctly when - `twittering-icon-storage-limit' is nil. Thanks to HufflepuffBR who - reported this problem. - (twittering-save-icon-properties): fix the list representation of - stored data when `twittering-icon-storage-limit' is nil. - -2011-07-29 Tadashi MATSUO - - * twittering-mode.el: The hash by newer algorithm introduced in - OpenSSL 1.0.0 is also generated for each certificate. This is - required because OpenSSL 1.0.0 and later fails to find an - appropriate certificate if its name is based on the hash by the - older algorithm which has been used by OpenSSL before 1.0.0. - Thanks to Sakuma who reported this problem. - (twittering-ca-cert-alist): redefined as a constant. And each - entry has the hash generated by OpenSSL 1.0.0 and later. - (twittering-delete-ca-cert): delete multiple files for each - certificate. - (twittering-ensure-ca-cert): generate two files for each - certificate, where their names are the hash by the older algorithm - used by OpenSSL before 1.0.0 and the other hash by the newer - algorithm used by OpenSSL 1.0.0 and later. - - * twittering-mode.el: Embed a new root CA certificate to follow - an update of the server. - (twittering-ca-cert-alist): add a new root CA certificate, - `GeoTrust Global CA' in order to follow the update of the server - certificate of `search.twitter.com'. - - * twittering-mode.el: Output embedded certificates as a single - file instead of a directory including them. This avoids the - management of multiple hashes for each certificate. - (twittering-cert-file): new variable replacing - `twittering-cert-directory'. - (twittering-cert-directory): removed. - (twittering-ca-cert-list): new variable replacing - `twittering-ca-cert-alist'. - (twittering-ca-cert-alist): removed. - (twittering-delete-ca-cert): remove a single file including - multiple certificates. - (twittering-ensure-ca-cert): prepare a single file including - multiple certificates instead of a directory including multiple - files. - (twittering-make-connection-info): replace the parameter - `cacert-directory-fullpath' with `cacert-file-fullpath'. - (twittering-send-http-request-curl): use the option `--cacert' - instead of `--capath'. - (twittering-send-http-request-wget): use the option - `--ca-certificate' instead of `--ca-directory'. - -2011-07-25 Tadashi MATSUO - - * twittering-mode.el: Fix the API call for `user_timeline' in - order to prevent Twitter from confusing a username consisting of - digits with a user id. Thanks to Makoto Fujiwara who reported this - problem. - (twittering-call-api): fix the API call for `user_timeline'. The - new implementation gives a username as a query parameter. This - prevents Twitter from confusing a username consisting of digits - with a user id. - - * twittering-mode.el: Fix a bug that moves the cursor by calling - `twittering-update-status-interactive' from buffers which are not - managed by `twittering-mode'. Thanks to mofigan who reported this - problem. - (twittering-ensure-whole-of-status-is-visible): do not change - window configuration unless the given window is bound to a buffer - managed by `twittering-mode'. - -2011-07-20 Tadashi MATSUO - - * twittering-mode.el: Fix indentation of the function - `twittering-verify-credentials'. - (twittering-verify-credentials): fix indentation. - - * twittering-mode.el: Display exit status of the process for - authorization if it exited abnormally. - (twittering-http-get-verify-credentials-clean-up-sentinel): - display exit status of the process if it exited abnormally. - - * twittering-mode.el: Embed another root CA certificate to follow - an update of the server. Now, the server certificate for - `api.twitter.com' is updated and it cannot be verified by the - already embedded certificate `Equifax Secure Certificate - Authority'. So, a root CA certificate `VeriSign Class 3 Public - Primary CA - G2' is also embedded, which is used for verifying the - server `api.twitter.com'. - (twittering-cert-file): removed. - (twittering-delete-ca-cert-file): removed. - (twittering-cert-directory): new variable. - (twittering-delete-ca-cert): new function. - (twittering-ensure-ca-cert): prepare a directory including - multiple CA certificates instead of a single file. Now this - function generates "VeriSign Class 3 Public Primary CA - G2". - (twittering-make-connection-info): replace the parameter - `cacert-fullpath' with `cacert-directory-fullpath'. - (twittering-send-http-request-native): remove redundant bindings. - (twittering-send-http-request-curl): follow the modification of - the parameter generated by `twittering-make-connection-info'. - (twittering-send-http-request-wget): likewise. - * cert/equifax.pem: removed. This certificate had not been used. - * cert/Equifax_Secure_Certificate_Authority.cer: Add a certificate - that has been used. It was retrieved from - https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certificate_Authority.cer , - which is used only for verifying the server `search.twitter.com'. - * cert/PCA-3G2.pem: Add a root certificate. It is retrieved from - https://www.verisign.com/repository/roots/root-certificates/PCA-3G2.pem , - which is used for verifying the server `api.twitter.com'. - -2011-07-16 Tadashi MATSUO - - * test/test-twittering-mode.el: Add tests for HMAC-SHA1. - - * twittering-mode.el: Fix the function for HMAC-SHA1 so that it - always return a correct digest. - (twittering-sha1): new function. This function can return a - correct digest without regard to the current coding system. - For very long object, the function `sha1' uses an external program - and coding system for the program is not correctly specified. - Therefore, the result may depend on the current coding system. - The new function is an alternative without the above problem. - (twittering-hmac-sha1): use `twittering-sha1' instead of `sha1'. - - * twittering-mode.el: `twittering-wait-while' is reimplemented - with `lexical-let'. - (twittering-wait-while): reimplemented with `lexical-let'. - Redundant statements are no longer added. This suppresses warnings - on byte-compilation. - - * twittering-mode.el: Fix docstring of - `twittering-edit-skeleton-alist'. - (twittering-edit-skeleton-alist): fix docstring. - - * twittering-mode.el: Load private information before - initialization. - (twittering-private-info-file-loaded): new variable. - (twittering-private-info-loaded-p): new function. - (twittering-ensure-private-info): new function. - (twittering-verify-credentials): do not try to load private - information. - (twittering-visit-timeline): ensure that private information is - loaded if necessary. - - * twittering-mode.el: Initialize global variables before ensuring - a connection method. - (twittering-visit-timeline): invoke - `twittering-initialize-global-variables-if-necessary' first. - - * twittering-mode.el: Open the timeline buffer only if - authorization succeeded. - (twittering-verify-credentials): return t or nil according to - whether the authorization succeeded or not. - (twittering-visit-timeline): open the timeline buffer only if - authorization succeeded. - - * twittering-mode.el: In `twittering-start', bind a local variable - only if necessary. - (twittering-start): bind `action' only if necessary. - - * twittering-mode.el: Start timers only when an active timeline - buffer is opened. - (twittering-verify-credentials): do not invoke `twittering-start'. - (twittering-http-get-verify-credentials-sentinel): likewise. - - * twittering-mode.el: `twittering-account-authorization' must be - reset if `twittering-verify-credentials' exited non-locally. - (twittering-verify-credentials): do not manage the global variable - `twittering-account-authorization', which will be managed by the - new function `twittering-ensure-account-verification'. - `twittering-verify-credentials' raises an error if the function - `twittering-account-authorization-queried-p` returns non-nil. - (twittering-ensure-account-verification): new function. This - function can correctly reset the global variable - `twittering-account-authorization' if authorization is failed and - the function `twittering-verify-credentials' exits non-locally. - (twittering-visit-timeline): call - `twittering-ensure-account-verification' instead of - `twittering-verify-credentials'. - -2011-06-26 Tadashi MATSUO - - * twittering-mode.el: Revise the routine for the format specifier - "%C". - (twittering-make-string-with-uri-property): new function. - (twittering-generate-formater-for-first-spec): use the function - `twittering-make-string-with-uri-property' for the format - specifier "%C". - (twittering-make-time-string): removed. - - * twittering-mode.el: Add a function to go to the next/previous - URI explicitly written in a tweet. - (twittering-make-fontified-tweet-text): add uri-origin property to - URIs explicitly written in a tweet. - (twittering-get-next-thing-pos): new function. - (twittering-goto-next-thing): ignore things except URIs explicitly - written in a tweet if a prefix argument is given. - (twittering-goto-previous-thing): likewise. - (twittering-goto-next-uri): new function. - (twittering-goto-previous-uri): new function. - - * twittering-mode.el: Wait a moment after finding that the process - is dead and the query has not been finished. This prevents Emacs - from canceling the query on the middle of evaluating the - sentinel. - (twittering-wait-while): new macro. - (twittering-oauth-get-token-alist): wait a moment after finding - that the process is dead and the query has not been finished. This - prevents Emacs from canceling the query on the middle of - evaluating the sentinel. - (twittering-tinyurl-get): likewise. - (twittering-verify-credentials): likewise. - (twittering-get-list-sync): likewise. - - * twittering-mode.el: Correctly ensure an available connection - method even if SSL is unavailable. - (twittering-ensure-connection-method): return correct value in the - case with compromise. - - * twittering-mode.el: `twittering-ensure-connection-method' - displays an error message if no connection methods available. - (twittering-ensure-connection-method): display an error message if - no connection methods are available. - (twittering-visit-timeline): do not display an error message if no - connection methods are available. - -2011-06-21 Takashi Masuda - - * twittering-mode.el: Add text properties to "%C". - (twittering-generate-formater-for-first-spec): use - `twittering-make-time-string' instead of `format-time-string'. - (twittering-make-time-string): new function. - - * twittering-mode.el: Add timeline spec aliases as completion - candidates on specifying a timeline spec. - (twittering-read-timeline-spec-with-completion): add timeline spec - aliases, defined in `twittering-timeline-spec-alias', as - completion candidates. - -2011-05-21 Tadashi MATSUO - - * twittering-mode.el: Fix the message for dead process on basic - authentication. - (twittering-verify-credentials): make the message for dead process - on basic authentication similar as that on OAuth/xAuth - authentication. - - * twittering-mode.el: Fix the display of messages about - authorization. - (twittering-send-http-request): do not display a message on - authorization. - (twittering-http-get-verify-credentials-sentinel): directly - display a message whether the authorization succeeded or not. - `twittering-send-http-request' does not display it. - - * twittering-mode.el: Add the variable - `twittering-disable-overlay-on-too-long-string' in order to avoid - interference between the update of overlay and some input - methods. - (twittering-disable-overlay-on-too-long-string): new variable. - (twittering-edit-length-check): do not update the overlay if - `twittering-disable-overlay-on-too-long-string' is non-nil. - -2011-05-16 Tadashi MATSUO - - * twittering-mode.el: Ensure that a sentinel is invoked when a - process is started successfully. - (twittering-process-alive-p): new function. - (twittering-start-process-with-sentinel): new function. - (twittering-send-http-request-native): ensure that the given - sentinel is invoked when the process is started successfully. - (twittering-send-http-request-curl): replace `start-process' with - `twittering-start-process-with-sentinel' in order to ensure that - the sentinel is invoked. - (twittering-send-http-request-wget): likewise. - - * twittering-mode.el: Confirm that the process is alive on waiting - for its sentinel. - (twittering-oauth-get-token-alist): check whether the process is - alive on waiting for the invocation of the sentinel for the - process. - (twittering-tinyurl-get): likewise. - (twittering-verify-credentials): likewise. - (twittering-get-list-sync): use `twittering-process-alive-p'. - - * twittering-mode.el: Ignore errors on `xml-parse-region'. - (twittering-xml-parse-region): return nil if an error happens on - `xml-parse-region'. - - * twittering-mode.el: Fix uri property of a list name in a - tweet. Thanks to Naohiro Aota who reported the problem. - (twittering-get-list-url): new function. - (twittering-make-fontified-tweet-text): correctly generate uri - property for a list name in a tweet. - -2011-05-08 Tadashi MATSUO - - * test/test-twittering-mode.el: Fix and add tests of proxy - configuration. Now they do not depend on environment variables. - -2011-05-06 Tadashi MATSUO - - * twittering-mode.el: Replace the symbol `us-ascii' for a - coding-system with `iso-safe', which is valid even on Emacs21. - (twittering-ensure-ca-cert): use `iso-safe' instead of `us-ascii' - as a coding-system for ASCII. - (twittering-start-http-session-curl-https-p): likewise. - (twittering-initialize-global-variables-if-necessary): likewise. - - * twittering-mode.el: Add some directories for Emacs21 to - `load-path' even when byte-compiling the file on Emacs21. - - * twittering-mode.el: embed a timeline spec string such as - "#HASHTAG" for `goto-spec' of a hashtag instead of a search - timeline spec as an internal representation. - (twittering-make-hashtag-timeline-spec-string-direct): new macro. - (twittering-make-fontified-tweet-text): embed a timeline spec - string such as "#HASHTAG" for `goto-spec' of a hashtag instead of - a search timeline spec as an internal representation. - - * twittering-mode.el: Add `twittering-update-status' as a function. - (twittering-update-status-function): update docstring. - (twittering-update-status-from-pop-up-buffer): rename the argument - `spec' `tweet-type-as-spec'. - (twittering-update-status-from-minibuffer): likewise. - (twittering-update-status): new function. - (twittering-direct-message): call `twittering-update-status' - instead of referring `twittering-update-status-function'. - (twittering-reply-to-user): likewise. - (twittering-organic-retweet): likewise. - (twittering-enter): likewise. - - * twittering-mode.el: Edit skeletons can refer to the current - timeline spec. - (twittering-update-status-function): update the docstring to - follow the additional argument CURRENT-SPEC. - (twittering-edit-skeleton-alist): update the docstring. - (twittering-edit-skeleton-insert-base): support the new argument - CURRENT-SPEC. - (twittering-edit-skeleton-insert): likewise. - (twittering-edit-skeleton-inherit-hashtags): likewise. - (twittering-edit-skeleton-inherit-mentions): likewise. - (twittering-update-status-from-pop-up-buffer): likewise. - (twittering-update-status-from-minibuffer): likewise. - (twittering-update-status): add a new argument - IGNORE-CURRENT-SPEC. - - * twittering-mode.el: The predefined edit skeletons - `inherit-hashtags' and `inherit-any' insert hashtags if the - current timeline is a search timeline where the query string - includes hashtags. - (twittering-timeline-spec-is-search-p): new function. - (twittering-extract-query-string-from-search-timeline-spec): new - function. - (twittering-edit-skeleton-alist): change the definition of - `inherit-hashtags' and `inherit-any' so that they add hashtags if - the current timeline is a search timeline. - (twittering-edit-skeleton-inherit-hashtags): insert hashtags if - CURRENT-SPEC is a search timeline where the query string includes - hashtags. - -2011-04-23 Tadashi MATSUO - - * NEWS, NEWS.ja, LAST-VERSION, VERSION, doc/web/index.text: - Version 2.0.0 released. - - * twittering-mode.el: Fix coding system for some operations so - that they work well even if the default coding system is - `utf-16le-dos'. Thanks to Moto_Dong who reported the problem. - (twittering-ensure-ca-cert): explicitly specify coding-system. - (twittering-start-http-session-curl-https-p): likewise. - (twittering-read-from-encrypted-file): likewise. - (twittering-write-and-encrypt): likewise. - (twittering-load-icon-properties): likewise. - (twittering-initialize-global-variables-if-necessary): likewise. - (twittering-status-not-blank-p): likewise. - - * test/test-twittering-mode.el: add a test for a timeline spec - string like "#hashtag". - - * twittering-mode.el: Store the formatter function before - compilation. - (twittering-format-status-function-without-compile): new - variable. - (twittering-update-status-format): store the formatter function as - a lambda expression before being compiled. - - * twittering-mode.el: Embed expressions for fontification in the - formatter function instead of calling them as a function. - (twittering-make-fontified-tweet-text): return an expression that - fontifies a given string. The regular expressions of strings being - fontified are concatenated on generating a formatter function. - (twittering-generate-format-table): embed the expression - fontifying a string in the formatter function. The expression will - be byte-compiled by `twittering-update-status-format'. - - * twittering-mode.el: Redefine some functions as inline in order - to make the formatter function more efficient. - (twittering-make-common-properties): redefined as an inline - function. - (twittering-make-string-with-user-name-property): likewise. - (twittering-make-string-with-source-property): likewise. - (twittering-fill-string): likewise. - (twittering-update-filled-string): likewise. - (twittering-make-passed-time-string): likewise. - - * twittering-mode.el: Reduce redundant calls of `string-match' on - formatting a tweet. When generating a timeline spec from a string - with obvious meaning, the new macros are used instead of the - general function, `twittering-extract-timeline-spec'. - (twittering-make-user-timeline-spec-direct): new macro. - (twittering-make-list-timeline-spec-direct): new macro. - (twittering-make-hashtag-timeline-spec-direct): new macro. - (twittering-extract-timeline-spec): use new macros. - (twittering-make-string-with-user-name-property): call the new - macro `twittering-make-user-timeline-spec-direct' instead of - calling `twittering-extract-timeline-spec'. - (twittering-make-fontified-tweet-text): call the new macros - `twittering-make-{user,list,hashtag}-timeline-spec-direct' instead - of calling `twittering-extract-timeline-spec'. - -2011-04-09 Tadashi MATSUO - - * twittering-mode.el: Fix headers for a proxy. - (twittering-make-connection-info): extract proxy information from - `connection-info' instead of directly referring to - `twittering-http-proxy-user', `twittering-http-proxy-password', - etc. - (twittering-send-http-request-native): generate the - "Proxy-Authorization" header correctly and give the absolute URI - as the request URI when the connection is peformed via a proxy. - (twittering-send-http-request-urllib): add "Proxy-Authorization" - header if necessary. - (twittering-http-application-headers): do not add headers related - to a proxy. They are added in functions for each connection - method. - - * twittering-mode.el: "U" pushes a URI of a tweet on text without - a uri property. - (twittering-push-uri-onto-kill-ring): push a URI of a tweet unless - the currently pointed character has a uri property. - - * twittering-mode.el: `twittering-direct-message' always posts a - tweet with direct message API. - (twittering-direct-message): always post a tweet with direct - message API. - - * twittering-mode.el: Introduce "edit skeleton". - (twittering-edit-skeleton-footer): new variable. - (twittering-edit-skeleton-footer-history): new variable. - (twittering-edit-skeleton-alist): new variable. - (twittering-switch-edit-skeleton): new function. - (twittering-edit-skeleton-change-footer): new function. - (twittering-edit-skeleton-insert-base): new function. - (twittering-edit-skeleton-insert): new function. - (twittering-update-status-from-pop-up-buffer): insert the current - edit skeleton before editing a tweet. - (twittering-update-status-from-minibuffer): likewise. - - * twittering-mode.el: Add pre-defined edit skeletons. - (twittering-extract-matched-substring-all): new function. - (twittering-edit-skeleton-alist): add some examples of edit - skeletons. - (twittering-edit-skeleton-inherit-hashtags): new function for an - edit skeleton. - (twittering-edit-skeleton-inherit-mentions): likewise. - - * twittering-mode.el: Add the variable - `twittering-fallback-image-format'. - (twittering-fallback-image-format): new variable. - (twittering-create-image-pair): use the value of - `twittering-fallback-image-format' as the fallback format instead - of directly using 'xpm. - -2011-03-27 Tadashi MATSUO - - * twittering-mode.el: Discard standard error of the program - "convert". On an environment where the option "-flatten" cause a - warning for a non-animated image, Emacs must exclude such - warnings. - (twittering-convert-image-data): discard standard error of the - program "convert". - - * twittering-mode.el: Entrust image type estimation to the command - "convert". - (twittering-create-image-pair): do not send image type estimated by - Emacs to the function `twittering-convert-image-data'. - -2011-03-26 Tadashi MATSUO - - * twittering-mode.el: `twittering-other-user-list-interactive' - works well when the specified user follows no list. - (twittering-other-user-list-interactive): fix an error occurring - when the specified user follows no list or selection is - cancelled. - - * twittering-mode.el: `twittering-other-user-list-interactive' - displays a subscription as a string like timeline spec string. - (twittering-http-get-list-subscriptions-sentinel): exclude - preceding "@" from a string corresponding to a subscription. - (twittering-other-user-list-interactive): follow the above - modification. - - * twittering-mode.el: Modify the prompts for subscription. - (twittering-read-subscription-list-name): modify the prompt for - subscription. - (twittering-other-user-list-interactive): likewise. - - * twittering-mode.el: Add an advice for avoiding an error occuring - when `getenv' returns an empty string on Emacs21. The bug had been - fixed on Emacs22 and later. - - * test/test-twittering-mode.el: Fix a test of formating a status - according to a change of behavior of `fill-region'. It does not - keep white spaces and tabs adjacent to hard newlines on Emacs21, - but it keeps them on Emacs22 and later. - - * twittering-mode.el: Remove opacity on converting an image into - a XPM image on Emacs22 and earlier. - (twittering-convert-image-data): add an option "+matte" to the - command "convert" in order to avoid color allocation error - occurring when Emacs22 and earlier try to decode a XPM image with - opacity. - - * twittering-mode.el: Convert an image, which may be animated, - into a single static image if Emacs does not support animated - images. - (twittering-convert-image-data): add an option "-flatten" to the - command "convert" unless `create-animated-image'. - - * twittering-mode.el: Always convert a GIF image into a XPM image - if Emacs does not support animated images. - (twittering-create-image-pair): always convert a GIF image into a - XPM image if Emacs does not support animated images. - -2011-03-26 Naohiro Aota - - * twittering-mode.el (twittering-http-get-list-sentinel-base): New - macro: from `twittering-http-get-list-index-sentinel'. - (twittering-http-get-list-index-sentinel): Use it. - (twittering-http-get-list-subscriptions-sentinel): Ditto. - (twittering-call-api): Add `get-list-subscriptions' description; - Implement `get-list-subscriptions'. - (twittering-get-list-subscriptions): New function. - (twittering-get-list-sync): New function from - `twittering-get-list-index-sync'. - (twittering-get-list-index-sync): Rewrite to use it. - (twittering-get-list-subscriptions-sync): New function. Use it. - (twittering-read-timeline-spec-with-completion): New function. - (twittering-other-user-list-interactive): Accept prefix to read - other users' subscription list. - -2011-03-15 Tadashi MATSUO - - * twittering-mode.el: Support cancel of retweets posted by the - authenticated user. - (twittering-delete-status): cancel a retweet if it has been - retweeted by the authenticated user. - - * twittering-mode.el: Explicitly use binary coding system on I/O - of icon properties. Thanks to Naohiro Aota. - (twittering-save-icon-properties): explicitly use binary coding - system on writing icon properties. - (twittering-load-icon-properties): likewise. - -2011-02-19 Tadashi MATSUO - - * twittering-mode.el: Disable the persistent icon storage if - `jka-compr' is unavailable. - (twittering-save-icon-properties): confirm that `jka-compr' is - available. - (twittering-load-icon-properties): likewise. - (twittering-initialize-global-variables-if-necessary): disable - the persistent icon storage if `jka-compr' is unavilable. - - * twittering-mode.el: Add `twittering-add-to-history' for - Emacs21. - (twittering-add-to-history): new function. - (twittering-add-timeline-history): use - `twittering-add-to-history'. - - * twittering-mode.el: Introduce the limit of number of - icons being stored persistently. - (twittering-icon-storage-file): add docstring about - `twittering-icon-storage-limit'. - (twittering-icon-storage-recent-icons): new variable to which - properties of recently rendered icons are stored. - (twittering-icon-storage-limit): new variable. - (twittering-update-icon-storage-recent-icons): new function. - (twittering-get-display-spec-for-icon): invoke - `twittering-update-icon-storage-recent-icons' whenever this - function is invoked. - (twittering-save-icon-properties): write properties of icons - within the limit specified by `twittering-icon-storage-limit'. In - addition, this function records properties in the new format. - (twittering-load-icon-properties): support the new format for - storing properties of icons. - -2011-02-15 Tadashi MATSUO - - * twittering-mode.el: Confirm validity of a format string before - updating the function formatting a tweet. - (twittering-update-status-format): update the function only if the - given format string is valid. - - * twittering-mode.el: Support a new format specifier "%RT{...}". - (twittering-status-format): update docstring. - (twittering-generate-formater-for-first-spec): support a new - format specifier "%RT{...}". - -2011-02-13 Tadashi MATSUO - - * test/test-twittering-mode.el (test-hmac-sha1): Fix a typo. - - * twittering-mode.el: Rearrange internal representation of a - retweet. - (twittering-add-statuses-to-timeline-data): use `retweeted-id' - instead of `source-id'. - (twittering-normalize-raw-status): rearrange internal - representation of a retweet. The information as a tweet posted by - the retweeter is stored with keys prefixed with `retweeting-'. The - information as a tweet posted by the original author is stored - with keys prefixed with `retweeted-'. Keys prefixed with - `original-' or `source-' are obsolete. - (twittering-make-common-properties): use `retweeted-id' instead of - `source-id'. - (twittering-get-common-properties): likewise. - (twittering-generate-format-table): use - `retweeting-user-screen-name' instead of - `original-user-screen-name'. - (twittering-generate-formater-for-first-spec): use `retweeted-id' - instead of `source-id'. - (twittering-render-timeline): likewise. - (twittering-native-retweet): likewise. - - * twittering-mode.el: `created_at' for an official retweet means - when the original tweet was posted instead of when it was - retweeted. - (twittering-normalize-raw-status): do not override - `created_at'. The key `created_at' in an alist representing a - retweet means when the original tweet was posted. - - * twittering-mode.el: When `twittering-follow' is invoked on an - official retweet, ask a subject. - (twittering-follow): ask a subject when this function is invoked - on an official retweet. - - * twittering-mode.el: Add a function to report a user as a spammer. - (twittering-call-api): support a new command - `block-and-report-as-spammer'. - (twittering-block-and-report-as-spammer): new function. - - * twittering-mode.el: Add a function to block a user. - (twittering-call-api): support a new command `block'. - (twittering-block): new function. - - * twittering-mode.el: Support persistent icon storage. - (twittering-icon-storage-file): new variable. - (twittering-use-icon-storage): new variable. - (twittering-register-image-spec): new function. - (twittering-register-image-data): reimplemented with - `twittering-register-image-spec'. - (twittering-save-icon-properties): new function. - (twittering-load-icon-properties): new function. - -2011-02-05 Tadashi MATSUO - - * twittering-mode.el: Remove a trailing newline from strings - received from `bit.ly' and `j.mp'. Thanks to mm_o_ig. - (twittering-tinyurl-services-map): add a post-processing function - that removes a trailing newline from result of `bit.ly' and - `j.mp'. - - * twittering-mode.el: Revise some messages. Thanks to Server. - (twittering-http-get-default-sentinel): revise messages. - (twittering-show-replied-statuses): likewise. - (twittering-hide-replied-statuses): likewise. - (twittering-edit-post-status): likewise. - (twittering-read-timeline-spec-with-completion): likewise. - (twittering-other-user-list-interactive): likewise. - (twittering-direct-message): likewise. - (twittering-goto-next-status): likewise. - (twittering-goto-previous-status): likewise. - -2011-01-29 Tadashi MATSUO - - * twittering-mode.el: Reimplement `twittering-tinyurl-get' with - `twittering-send-http-request'. - (twittering-url-wrapper): removed. - (twittering-url-insert-file-contents): removed. - (twittering-url-retrieve-synchronously): removed. - (twittering-tinyurl-get): reimplemented with - `twittering-send-http-request'. In addition, the query parameter - is correcly encoded by `twittering-percent-encode'. - - * twittering-mode.el: Add `is.gd' as a URL shortening service. - Thanks to Michael Kohl. - (twittering-tinyurl-service): update the document. - (twittering-tinyurl-services-map): add an entry for `is.gd'. - - * twittering-mode.el: Extend the format of - `twittering-tinyurl-services-map'. One can register a service that - requires a special HTTP request and/or post-processing. - (twittering-tinyurl-services-map): extend the meaning of the - variable. - (twittering-tinyurl-get): support new format of - `twittering-tinyurl-services-map'. - - * twittering-mode.el: Add `goo.gl' as a URL shortening service. - (twittering-tinyurl-services-map): add an entry for `goo.gl'. - - * twittering-mode.el: Add `bit.ly' and `j.mp' as URL shortening - services. Thanks to Lars Gregori. - (twittering-tinyurl-services-map): add entries for `bit.ly' and - `j.mp'. - (twittering-bitly-login): new variable. - (twittering-bitly-api-key): new variable. - (twittering-make-http-request-for-bitly): new function. - - * twittering-mode.el: Reimplement normalization of alists from XML - structure. - (twittering-atom-xmltree-to-status-datum): change the value - corresponding to the key `source' into a URL with a tag. - (twittering-status-to-status-datum): removed. - (twittering-normalize-raw-status): new function to generate - normalized alist representing a tweet. - (twittering-xmltree-to-status): use - `twittering-normalize-raw-status' instead of - `twittering-status-to-status-datum'. - - * twittering-mode.el: `twittering-make-clickable-status-datum' - does not redefine `source'. - (twittering-atom-xmltree-to-status-datum): define `source' as - a text surrounded by A-tag. - (twittering-normalize-raw-status): likewise. - (twittering-make-clickable-status-datum): do not redefine - `source'. - - * twittering-mode.el: Add text properties to tweets on rendering. - (twittering-http-get-default-sentinel): do not call - `twittering-make-clickable-status-datum'. - (twittering-make-clickable-status-datum): removed. - (twittering-make-string-with-user-name-property): new function. - (twittering-make-string-with-source-property): new function. - (twittering-make-fontified-tweet-text): new function. - (twittering-generate-format-table): add text properties. - -2011-01-23 Tadashi MATSUO - - * test/test-twittering-mode.el: Add some tests for the format - specifiers "%FILL[prefix]{...}" and "%FOLD[prefix]{...}". - * twittering-mode.el (twittering-status-format): add a document - for the format specifier "%FOLD[prefix]{...}". - - * test/test-twittering-mode.el: Fix an error of - `url-generic-parse-url' on Emacs21 by calling - `url-scheme-get-property' before `url-generic-parse-url' is called. - -2011-01-21 Tadashi MATSUO - - * twittering-mode.el: Decode received XML document as UTF-8 before - parsing it. - (twittering-http-get-default-sentinel): decode received XML - document as UTF-8 before parsing it if Content-Type in response - header has a parameter "charset=utf-8". - - * twittering-mode.el: The format specifier "%FOLD[prefix]{...}" - does not squeeze white spaces. - (twittering-fill-string): does not squeeze white spaces if - `keep-newline' is non-nil. - -2011-01-16 Tadashi MATSUO - - * twittering-mode.el: Ensure that the pointed tweet is visible on - editing a tweet. - (twittering-ensure-whole-of-status-is-visible): new function. - - * twittering-mode.el: Isolate addition of text properties from a - function parsing XML. - (twittering-http-get-default-sentinel): call - `twittering-make-clickable-status-datum' here. - (twittering-atom-xmltree-to-status): do not add text properties to - statuses. - (twittering-status-to-status-datum): likewise. - - * twittering-mode.el: Render statuses in order of field property - instead of id property. - (twittering-make-common-properties): add field property as a - common property. - (twittering-get-common-properties): likewise. - (twittering-field-id<): new function. - (twittering-field-id=): new function. - (twittering-make-field-id): new function. - (twittering-make-field-properties): new function. - (twittering-render-timeline): render statuses in order of their - field properties. - (twittering-show-replied-statuses): add special field property to - replied statuses. - - * twittering-mode.el: Move point by using field property instead - of id property. - (twittering-get-current-status-head): redefined with field - property instead of id property. - (twittering-get-first-status-head): likewise. - (twittering-get-next-status-head): likewise. - (twittering-get-previous-status-head): likewise. - - * twittering-mode.el: Use rendered-as property for rendering - replied statuses instead of a trick with id and original-id - properties. - (twittering-get-common-properties): add rendered-as property as a - common property. - (twittering-make-field-properties): add rendered-as property if - necessary. - (twittering-make-field-properties-of-popped-ancestors): new - function. - (twittering-rendered-as-ancestor-status-p): new function. - (twittering-get-base-id-of-ancestor-at): new function. - (twittering-replied-statuses-visible-p): use the new function - `twittering-get-base-id-of-ancestor-at' instead of directly - referring id and original-id properties. - (twittering-hide-replied-statuses): likewise. - (twittering-show-replied-statuses): use - `twittering-make-field-properties-of-popped-ancestors'. - - * twittering-mode.el: Remove a trick using id and original-id - properties for rendering replied statuses. - (twittering-get-common-properties): remove original-id from common - properties. - (twittering-show-replied-statuses): do not overwrite id and - original-id properties. - (twittering-enter): do not refer original-id property. - - * twittering-mode.el: Support favorites timeline. - (twittering-timeline-spec-to-string): support favorites timeline - spec. - (twittering-extract-timeline-spec): likewise. - (twittering-timeline-spec-primary-p): add favorites timeline spec - is a primary timeline spec. - (twittering-call-api): support favorites timeline spec. - (twittering-read-timeline-spec-with-completion): add ":favorites" - as a candidate of completion. In addition, one can input a - username with completion for ":favorites/". - (twittering-goto-next-status): display an error message on the - oldest tweet on favorites timeline. - (twittering-goto-previous-status): likewise. - * test/test-twittering-mode.el: Add tests for favorites timeline - spec. - -2011-01-09 Tadashi MATSUO - - * twittering-mode.el: Ensure that encrypted strings are written - with no conversion. Thanks to Sakuma. - (twittering-write-and-encrypt): ensure that encrypted strings are - written with no conversion. - -2010-12-17 Yuto HAYAMIZU - - * twittering-mode.el (twittering-organic-retweet): prohibit - retweeting protected tweets. - -2010-11-30 Tadashi MATSUO - - * twittering-mode.el: Ensure that the methods using url library - works well for HTTP redirection. - (twittering-send-http-request-urllib): make the variable, - `url-http-attempt-keepalives', buffer-local in order to send the - local value to the sentinel invoked for HTTP redirection. If the - variable is not made buffer-local, the connection with redirection - may not be closed according to its global value. - - * twittering-mode.el: Introduce an ad-hoc treatment for url - library on Emacs21 again. This ensures that the sentinel for an - redirect HTTP request, such as asynchronous retrieval of icon - images, works well. - (twittering-send-http-request): introduce an ad-hoc treatment for - the url library again. It is required because the process for a - redirected HTTP request is alive when the url library for Emacs21 - invokes the callback. - (twittering-send-http-request-urllib): add an ad-hoc treatment for - HTTP redirection on Emacs21. - -2010-11-27 Tadashi MATSUO - - * twittering-mode.el: Fix a bug of retrieving a URI repeatedly. - (twittering-resolve-url-request): bind `additional-info' to the - appropriate alist storing the URI that will be retrieved. The - alist is referred by `twittering-url-retrieve-async-sentinel' and - `twittering-url-retrieve-async-clean-up-sentinel'. Since the alist - was null, a URI might be retrieved repeatedly. - -2010-11-25 Tadashi MATSUO - - * twittering-mode.el: Delay next asynchronous retrieval until all - sentinels for the current retrieval finish. - (twittering-url-retrieve-async-sentinel): call - `twittering-resolve-url-request' after sentinels finish. - (twittering-url-retrieve-async-clean-up-sentinel): call - `twittering-resolve-url-request' only when the current retrieval - is failed. - - * twittering-mode.el: Periodically invoke actions associated with - idle-timer even if Emacs remains idle long time. - (twittering-timer-interval-for-redisplaying): extended to 5.0. - (twittering-url-retrieve-async-sentinel): use - `twittering-run-on-idle' instead of `run-with-idle-timer'. - (twittering-idle-timer-for-redisplay): new variable. - (twittering-run-on-idle): new function. - (twittering-run-repeatedly-on-idle): new function. - (twittering-start): use `twittering-run-repeatedly-on-idle' - instead of `run-with-idle-timer'. - (twittering-stop): also cancel the idle timer for redisplaying. - - * twittering-mode.el: Add retrieved timeline spec string to - history even if it includes no new statuses. - (twittering-http-get-default-sentinel): add `spec-string' on - successful retrieval even if there are no new statuses. - - * twittering-mode.el: `twittering-url-retrieve-async' immediately - invokes the sentinel if the url has been already retrieved. - (twittering-url-retrieve-async): immediately invoke the sentinel - if the given url has been already retrieved. - - * twittering-mode.el: Call `url-retrieve' without attempting - keep-alive. - (twittering-send-http-request): remove special treatment according - to `status-str' for the connection method by url library. It was - necessary because `url-retrieve' invoked its sentinel before the - process exits. - (twittering-send-http-request-urllib): call `url-retrieve' with - binding `url-http-attempt-keepalives' to nil. - - * twittering-mode.el: The property symbol `belongs-to' is renamed - `source-spec'. - (twittering-render-timeline): add `source-spec' to each status - instead of `belongs-to'. - (twittering-direct-message): use `source-spec' instead of - `belongs-to'. - (twittering-enter): likewise. - - * twittering-mode.el: Fix a bug that some text properties of a - tweet rendered on a buffer may be lost by redisplaying it. - (twittering-make-common-properties): new function. - (twittering-get-common-properties): new function. - (twittering-generate-format-status-function): use - `twittering-make-common-properties'. - (twittering-format-status-for-redisplay): use - `twittering-get-common-properties'. - (twittering-update-filled-string): likewise. - - * twittering-mode.el: `twittering-redisplay-status-on-each-buffer' - restores common properties of re-rendered tweets. - (twittering-format-status-for-redisplay): do not restore - properties. - (twittering-update-filled-string): likewise. - (twittering-redisplay-status-on-each-buffer): restore common - properties. - - * twittering-mode.el: Add `source-spec' as an entry of alist - storing a tweet. - (twittering-add-statuses-to-timeline-data): add the `source-spec' - property to each new status. - (twittering-make-common-properties): add `source-spec' as a common - property. - (twittering-get-common-properties): update docstring. - (twittering-render-timeline): do not add the `source-spec' - property. - - * twittering-mode.el: Correctly define the alias of - `open-ssl-stream' for Emacs21 even if `url-gw.el' has been already - loaded and unavailable autoload has been declared. - (twittering-start-http-session-urllib-https-p): ignore the - autoload declaration of `open-ssl-stream' in `url-gw.el' if - "ssl.el" is unavailable. - - * twittering-mode.el: Fix a bug that `twittering-username' is not - initialized when using encryption of authorized token with OAuth. - (twittering-http-get-verify-credentials-sentinel): apropriately - initialize `twittering-username' even if encryption of authorized - token is used with OAuth. - -2010-11-14 Tadashi MATSUO - - * twittering-mode.el: Fix a bug in registration of a sentinel for - asynchronous retrieval. - (twittering-url-retrieve-async): fix registration of sentinels to - avoid registering a sentinel repeatedly. - - * twittering-mode.el: Contents retrieved by url library are copied - as unibyte string. Without this modification, binary data may be - retrieved incorrectly. - (twittering-send-http-request-urllib): copy contents retrieved by - url library as unibyte string. Without this modification, binary - data may be retrieved incorrectly. - - * twittering-mode.el: Sentinels for `twittering-send-http-request' - are called with a process status symbol instead of a process - status symbol. This is necessary for faking a status of a process - generated by url library. - (twittering-send-http-request): call sentinels with a process - status symbol instead of a process status string. - (twittering-http-get-default-sentinel): receives `status' instead - of `status-str'. - (twittering-http-get-list-index-sentinel): likewise. - (twittering-http-post-default-sentinel): likewise. - (twittering-http-get-verify-credentials-sentinel): likewise. - (twittering-http-get-verify-credentials-clean-up-sentinel): - likewise. - (twittering-oauth-get-token-alist): define sentinels so that they - receive `status' instead of `status-str'. - (twittering-get-and-render-timeline): likewise. - - * twittering-mode.el: Redisplay tweets with idle timer. - (twittering-timer-interval-for-redisplaying): change the meaning. - (twittering-start): `twittering-redisplay-status-on-buffer' is - called by `run-with-idle-timer'. - - * twittering-mode.el: `twittering-resolve-url-request' uses - `twittering-send-http-request' instead of `url-retrieve'. - (twittering-resolve-url-request): use - `twittering-send-http-request' instead of `url-retrieve'. - (twittering-url-retrieve-async-sentinel): new function. - (twittering-url-retrieve-async-clean-up-sentinel): new function. - - * twittering-mode.el: Sentinels for asynchronous retrieval are - invoked with `run-with-idle-timer'. The delay will prevent Emacs - from stucking on inputting characters on other buffer. - (twittering-url-request-sentinel-delay): new variable. - (twittering-url-retrieve-async-sentinel): invoke sentinels with - `run-with-idle-timer'. - -2010-11-13 Tadashi MATSUO - - * twittering-mode.el: `twittering-send-http-request' correctly - transfer `additional-info'. - (twittering-send-http-request): call - `twittering-send-http-request-internal' with correct arguments. - - * twittering-mode.el: Remove redundant entries from an argument of - `twittering-send-http-request'. - (twittering-http-get): remove redundant entries from - `additional-info', an argument of `twittering-send-http-request'. - (twittering-http-post): likewise. - - * twittering-mode.el: Fix docstring of `twittering-call-api'. - (twittering-call-api): fix docstring. - - * twittering-mode.el: `twittering-call-api' extracts a query - string from the given timeline spec. - (twittering-call-api): extract a query string of search timeline - from the given timeline spec. - (twittering-get-and-render-timeline): remove a query string - from the second argument of `twittering-call-api'. - - * twittering-mode.el: `twittering-call-api' can calculate how many - tweets should be retrieved. - (twittering-call-api): let the argument `number' of the command - `retrieve-timeline' be optional. - (twittering-get-and-render-timeline): remove explicit calculation - of number of tweets which will be retrieved. - - * twittering-mode.el: Add a new argument `additional-info' to - `twittering-http-{get,put}'. It can be used to send information to - generated processes. - (twittering-http-get): replace the argument `noninteractive' with - a new argument `additional-info', which will be sent to - `twittering-send-http-request'. - (twittering-http-post): add a new argument `additional-info', - which will be sent to `twittering-send-http-request'. - (twittering-call-api): send the information of `noninteractive' as - a member of `additional-info' to `twittering-http-get'. - - * twittering-mode.el: Timeline spec is sent to a sentinel via - `connection-info' instead of `twittering-process-info-alist'. - (twittering-http-get-default-sentinel): receive the timeline spec - from `connection-info' instead of `twittering-process-info-alist' - via `twittering-get-timeline-spec-from-process'. - (twittering-get-and-render-timeline): send timeline spec to the - sentinel via `additional-info', which is an argument of - `twittering-call-api'. - - * twittering-mode.el: Confirm that `twittering-proxy-use' is nil - when trying the connection method `native'. - (twittering-start-http-session-native-tls-p): return nil if - `twittering-proxy-use' is non-nil. - - * twittering-mode.el: Display the current connection method on the - mode-line. - (twittering-display-connection-method): new variable. - (twittering-lookup-connection-type): add the entry `display-name' - if necessary. - (twittering-get-connection-method-name): new function. - (twittering-mode-line-buffer-identification): display the current - connection method on the mode-line. - - * twittering-mode.el: The default value of - `twittering-url-show-status' is changed to nil. - (twittering-url-show-status): initialized as nil. - - * twittering-mode.el: Postpone configuring the global variables - `twittering-username' and `twittering-password' until the account - is authenticated. - (twittering-prepare-account-info): return a pair of username and - password instead of setting them as global variables. - (twittering-verify-credentials): do not set the global variables - `twittering-username' and `twittering-password' until the account - is authenticated. - (twittering-http-get-verify-credentials-sentinel): set the global - variables `twittering-username' and `twittering-password' if - necessary. - - * twittering-mode.el: Add new connection method `urllib-http' and - `urllib-https'. - (twittering-connection-type-order): add `urllib-http' and - `urllib-https'. - (twittering-connection-type-table): add new entries for - `urllib-http' and `urllib-https'. - (twittering-send-http-request): add special treatment for the - connection method using the url library. - (twittering-start-http-session-urllib-p): new function. - (twittering-start-http-session-urllib-https-p): new function. - (twittering-send-http-request-urllib): new function. - (twittering-pre-process-buffer-urllib): new function. - -2010-10-14 Tadashi MATSUO - - * twittering-mode.el: `twittering-get-error-message' generates an - error message with explanation if possible. - (twittering-get-error-message): generate an error message with - explanation if possible. `twittering-xml-parse-region' is called - only when it is required. It is determined by the new argument - `header-info'. - (twittering-http-get-default-sentinel): use - `twittering-get-error-message' for generating a total error - message, not only explanation. - (twittering-http-get-list-index-sentinel): likewise. - (twittering-http-post-default-sentinel): likewise. - - * twittering-mode.el: The second argument of `twittering-call-api' - is replaced with `additional-info', which is sent to - `twittering-send-http-request' via `twittering-http-get' or - `twittering-http-put'. - (twittering-call-api): replace the argument `noninteractive' with - `additional-info', which is sent to `twittering-send-http-request' - via `twittering-http-get' or `twittering-http-put'. - (twittering-get-and-render-timeline): send `noninteractive' via - the new argument `additional-info' of `twittering-call-api'. - -2010-10-09 Tadashi MATSUO - - * twittering-mode.el: Correctly render the format specifier "%L" - with a preceding whitespace. Thanks to Tom X. Tobin. - (twittering-generate-format-table): add a preceding whitespace to - the format specifier "%L". The previous routine contradicts the - docstring of `twittering-status-format'. - * test/test-twittering-mode.el: Correct the test for the format - specifier "%L". - - * test/test-twittering-mode.el: Fix the test for HMAC. - - * twittering-mode.el (twittering-connection-type-table): remove - obsolete entries. - - * twittering-mode.el: `twittering-release-process' is called as a - clean-up sentinel. - (twittering-call-api): accept new option `clean-up-sentinel' for - `retrieve-timeline'. - (twittering-http-default-sentinel): do not call - `twittering-release-process'. - (twittering-get-and-render-timeline): explicitly register - `twittering-release-process' as a clean-up sentinel. - - * twittering-mode.el: Classify functions into some groups. - - * twittering-mode.el: Add a new function - `twittering-send-http-request-with-default-sentinel'. - (twittering-send-http-request-with-default-sentinel): new function. - - * twittering-mode.el: Adapt some functions to - `twittering-send-http-request-with-default-sentinel'. - (twittering-get-response-body): removed. - (twittering-start-http-session): use - `twittering-send-http-request-with-default-sentinel' instead of - `twittering-send-http-request' and - `twittering-http-default-sentinel'. - (twittering-get-error-message): assume that the given buffer - consists of HTTP response body without headers. - (twittering-http-default-sentinel): removed. - (twittering-http-get-default-sentinel): modified so that it can be - invoked via `twittering-send-http-request-with-default-sentinel'. - (twittering-http-get-list-index-sentinel): likewise. - (twittering-http-post-default-sentinel): likewise. - (twittering-oauth-get-token-alist): likewise. - (twittering-http-get-verify-credentials-sentinel): likewise. - (twittering-http-get-verify-credentials-clean-up-sentinel): - likewise. - (twittering-get-status-from-http-response): removed. - (twittering-get-and-render-timeline): modify arguments of - `clean-up-sentinel' to adapt it to - `twittering-send-http-request-with-default-sentinel'. - - * twittering-mode.el: Rename - `twittering-send-http-request-with-default-sentinel' - `twittering-send-http-request'. - (twittering-send-http-request-internal): renamed from - `twittering-send-http-request'. - (twittering-send-http-request): renamed from - `twittering-send-http-request-with-default-sentinel'. - (twittering-start-http-session): use - `twittering-send-http-requeset' instead of - `twittering-send-http-request-with-default-sentinel'. - (twittering-oauth-get-token-alist): likewise. - - * twittering-mode.el: Validity of a HTTP request is confirmed by - `twittering-make-http-request'. - (twittering-make-http-request): check the validity of arguments. - (twittering-start-http-session): remove validity check. - - * twittering-mode.el: Remove `twittering-start-http-session'. - (twittering-start-http-session): removed. - (twittering-http-get): use `twittering-send-http-request' instead - of `twittering-start-http-session'. - (twittering-http-post): likewise. - - * twittering-mode.el: "Content-Length" for OAuth is calculated by - `twittering-make-http-request'. - (twittering-oauth-get-token-alist): remove explicit specification - of "Content-Length". The header value is determined by - `twittering-make-http-request'. - - * twittering-mode.el: Add `encoded-query-alist' entry to an alist - of a HTTP request. This is required for generating "Authorization" - header of OAuth. - (twittering-make-http-request): add `encoded-query-alist' entry to - an alist corresponding to a HTTP request. - - * twittering-mode.el: Add `uri-without-query' entry to an alist of - a HTTP request. This is required for generating "Authorization" - header of OAuth. - (twittering-make-http-request): add `uri-without-query' entry to - an alist corresponding to a HTTP request. - - * twittering-mode.el: Introduce - `twittering-add-application-header-to-http-request'. - (twittering-http-application-headers-with-auth): removed. - (twittering-add-application-header-to-http-request): new - function. - (twittering-http-get): use - `twittering-add-application-header-to-http-request' instead of - `twittering-http-application-headers-with-auth'. - (twittering-http-post): likewise. - - * twittering-mode.el: Fix `twittering-buffer-related-p' in order - to support multiple edit buffers. - (twittering-buffer-related-p): fix a condition so that it works - well even when multiple edit buffer exists. - - * twittering-mode.el: Solve cyclic reference on definition of - `twittering-unicode-replacement-char'. - (twittering-ucs-to-char-internal): new function. - (twittering-unicode-replacement-char): initialized by - `twittering-ucs-to-char-internal'. - (twittering-ucs-to-char): redefined with - `twittering-unicode-replacement-char' and - `twittering-ucs-to-char-internal'. - - * twittering-mode.el: Modify some codes to avoid warnings on - byte-compile. - (twittering-start-http-session-native-tls-p): load the tls library - before byte-compiling this function. This avoids a warning of the - reference to `tls-program' on byte-compile. - (twittering-read-from-encrypted-file): likewise. The epa library - and "alpaca.el" are loaded before byte-compiling this function. - (twittering-modeline-properties): new constant. - (twittering-modeline-active): defined with - `twittering-modeline-properties'. - (twittering-modeline-inactive): likewise. - -2010-09-26 Tadashi MATSUO - - * twittering-mode.el: Remove redundant pre-processing of HTTP - response buffer for SSL via a proxy. - (twittering-oauth-get-response-alist): remove redundant - pre-processing of HTTP response buffer for SSL via proxy. Instead - of it, `twittering-oauth-get-token-alist' invokes an appropriate - function for pre-processing. - - * twittering-mode.el: Correct schemes of URIs used in OAuth/xAuth - procedures. - (twittering-oauth-request-token-url): removed. - (twittering-oauth-authorization-url-base): removed. - (twittering-oauth-access-token-url): removed. - (twittering-oauth-request-token-url-without-scheme): new variable. - (twittering-oauth-authorization-url-base-without-scheme): new - variable. - (twittering-oauth-access-token-url-without-scheme): new variable. - (twittering-oauth-get-token-alist): refer to the scheme of the - given URI instead of `twittering-oauth-use-ssl'. - (twittering-verify-credentials): make a URI with correct scheme - for OAuth or xAuth procedure. The scheme is determined by - `twittering-oauth-use-ssl'. - - * twittering-mode.el: A HTTP request alist is included in the - connection info for the request. - (twittering-oauth-get-token-alist): add an HTTP request alist into - `connection-info'. - (twittering-send-http-request-curl): extract the HTTP request - alist from `connection-info' instead of an argument. - (twittering-send-http-request-wget): likewise. - (twittering-send-http-request-native): likewise. - (twittering-make-connection-info): generate connection info - according to an arugment `request'. - (twittering-send-http-request): register the sentinel so that it - will be invoked with three arguments, process, status-string and - connection-info. The connection-info is automatically generated - from the given HTTP request alist. - (twittering-start-http-session): do not bind `connection-info'. - - * twittering-mode.el: `twittering-send-http-request' receives - optional arguments for connection method. - (twittering-send-http-request): add two optional arguments for - customizing connection method. - - * twittering-mode.el: Fix docstring of - `twittering-make-http-request'. - (twittering-make-http-request): fix docstring. - - * twittering-mode.el: `twittering-make-http-request' automatically - adds the header field "Content-Length" if necessary. - (twittering-make-http-request): add the header field - "Content-Length" if it is missing on "POST" method. - (twittering-http-application-headers): do not add the header field - "Content-Length". - - * twittering-mode.el: Add `twittering-make-http-request-from-uri'. - (twittering-make-http-request): accept a string as the argument - `query-parameters', which is treated as an encoded query string. - (twittering-make-http-request-from-uri): new function, which - generates a HTTP request alist from URI. - - * twittering-mode.el: Rearrange `twittering-oauth-get-token-alist'. - (twittering-oauth-get-token-function-table): removed. Instead of - the variable, `twittering-connection-type-table' is used. - (twittering-oauth-get-token-function-type): removed. Instead of - the variable, `twittering-connection-type-order' is used. - (twittering-oauth-get-token-alist): use - `twittering-make-http-request-from-uri' and - `twittering-send-http-request'. - (twittering-verify-credentials): remove unnecessary statements. - (twittering-ensure-connection-method): take account of - `twittering-oauth-use-ssl'. - - * twittering-mode.el: Transfer sentinel functions to - `twittering-default-sentinel' via `connection-info'. - (twittering-start-http-session): transfer the variable `sentinel' - to `twittering-http-default-sentinel' via `connection-info'. - (twittering-http-default-sentinel): remove the arguments `func' - and `clean-up-sentinel'. The sentinel functions are retrieved from - `connection-info'. - -2010-09-19 Tadashi MATSUO - - * twittering-mode.el: Fix `twittering-push-uri-onto-kill-ring'. - (twittering-push-uri-onto-kill-ring): confirm that `kill-ring' is - non-nil before calling `current-kill'. - - * twittering-mode.el: Copy tweets by "C-". - Thanks to Faried Nawaz. - (twittering-mode-menu-on-uri-map): new keymap for menu on URI. - (twittering-mode-on-uri-map): new keymap used on URI. - (twittering-mode-map): bind "C-" to - `mouse-set-point' to move the point and bind "C-" to - `twittering-push-tweet-onto-kill-ring'. - (twittering-make-clickable-status-datum): embed new keymap - `twittering-mode-on-uri-map' in texts that have `uri' property. - (twittering-generate-format-table): likewise. - (twittering-generate-formater-for-first-spec): likewise. - (twittering-push-tweet-onto-kill-ring): new function. - - * twittering-mode.el: Introduce a function sending a HTTP requests - with `curl'. - (twittering-connection-type-table): use new functions - `twittering-start-http-session-generic' and - `twittering-send-http-request-curl' for connection-type `curl'. - (twittering-oauth-get-token-function-table): register the - pre-processing function for `curl'. - (twittering-oauth-get-token-alist-generic): new function. This - works with a function sending HTTP request. - (twittering-oauth-get-token-alist-curl): removed. The function is - replaced with the combination of - `twittering-oauth-get-token-alist-generic' and - `twittering-send-http-request-curl'. - (twittering-oauth-get-token-alist): use - `twittering-oauth-get-token-alist-generic' if the found entry is a - cons pair of functions. - (twittering-send-http-request-curl): new function. This is - abstract interface for sending HTTP request via `curl'. - (twittering-start-http-session): add more entries to - `connection-info'. `twittering-send-http-request-curl' requires - them. - (twittering-start-http-session-generic): new function. - (twittering-start-http-session-curl): removed. The function is - replaced with the combination of - `twittering-start-http-session-generic' and - `twittering-send-http-request-curl'. - - * twittering-mode.el: Introduce a function sending a HTTP request - with native functions. - (twittering-connection-type-table): use generic function for - connection-type `native'. - (twittering-oauth-get-token-function-table): likewise. - (twittering-oauth-get-token-alist-native): removed. The function - is replaced with the combination of - `twittering-oauth-get-token-alist-generic' and - `twittering-send-http-request-native'. - (twittering-start-http-session-native): removed. The function is - replaced with the combination of - `twittering-start-http-session-generic' and - `twittering-send-http-request-native'. - - * twittering-mode.el: Integrate generic function into - `twittering-start-http-session'. - (twittering-connection-type-table): remove the entry `start' and - rename `start-process' `send-http-request'. - (twittering-lookup-http-start-function): use `send-http-request' - instead of `start-process'. - (twittering-start-http-session): unified with - `twittering-start-http-session-generic'. - (twittering-start-http-session-generic): removed. - - * twittering-mode.el: The HTTP header field "Expect" will be added - only when using `curl'. - (twittering-send-http-request-curl): add the field "Expect". - (twittering-start-http-session): remove the field "Expect". - - * twittering-mode.el: Integrate generic function into - `twittering-oauth-get-token-alist'. - (twittering-oauth-get-token-alist): unified with - `ftwittering-oauth-get-token-alist-generic'. - (twittering-oauth-get-token-alist-generic): removed. - - * twittering-mode.el: Add new connection method `wget'. - (twittering-wget-program): new variable. - (twittering-connection-type-order): add an entry for `wget'. - (twittering-connection-type-table): add entries for - new connection-method `wget'. - (twittering-oauth-get-token-function-table): likewise. - (twittering-find-wget-program): new function. - (twittering-start-http-session-wget-p): new function. - (twittering-send-http-request-wget): new function. - (twittering-pre-process-buffer-wget): new function. - - * twittering-mode.el: Use an alist for representing parameters of - a HTTP request. - (twittering-oauth-get-token-alist): use an alist for representing - a HTTP request. - (twittering-send-http-request-curl): receive a HTTP request as an - alist. - (twittering-send-http-request-wget): likewise. - (twittering-send-http-request-native): likewise. - - * twittering-mode.el: Rearrange `twittering-make-http-request'. - (twittering-make-http-request): return an alist representing - parameters of a HTTP request instead of a function. - (twittering-start-http-session): generate a HTTP request alist by - `twittering-make-http-request'. - - * twittering-mode.el: Ensure an available connection method before - visiting a timeline. - (twittering-lookup-http-start-function): do not retry finding - connection-method with compromise. It is assumed that an available - connection method is already determined here. - (twittering-ensure-connection-method): new function. - (twittering-visit-timeline): ensure that an available connection - method is determined. - - * twittering-mode.el: Add `twittering-make-connection-info'. - (twittering-make-connection-info): new function. - (twittering-send-http-request): new function. - (twittering-start-http-session): use new functions. - -2010-09-12 Tadashi MATSUO - - * twittering-mode.el: Add an edited tweet into the history without - text properties. - (twittering-edit-extract-status): extract a status without text - properties. They may cause `session.el' to fail to save - `twittering-edit-history' because - `twittering-make-clickable-status-datum' adds text properties with - self-reference to tweets. - - * twittering-mode.el (twittering-auth-method): fix docstring. - (twittering-timeline-spec-alias): likewise. - -2010-09-04 Tadashi MATSUO - - * twittering-mode.el (twittering-push-uri-onto-kill-ring): avoid - pushing the same URL repeatedly. - - * twittering-mode.el: Fix xAuth with `gnutls-cli'. - (twittering-oauth-get-token-alist-native): add a CRLF following - the POST body. `gnutls-cli', which may be invoked by - `open-tls-stream', requires the CRLF at the end of input. - - * twittering-mode.el: Introduce `connection-info', which is - transferred to a sentinel. - (twittering-start-http-session): introduce the variable - `connection-info' to transfer the connection information to a - sentinel. Since `connection-info' includes `noninteractive', the - argument `noninteractive' is replaced with `connection-info'. - (twittering-start-http-session-curl): likewise. - (twittering-start-http-session-native): likewise. - (twittering-http-default-sentinel): use `connection-info' instead - of the current `twittering-use-ssl' and `twittering-proxy-use'. - - * twittering-mode.el (twittering-http-post): remove use of unbound - variable `noninteractive'. - - * twittering-mode.el (twittering-call-api): use the argument - `noninteractive' correctly. - - * twittering-mode.el: Introduce a framework to pre-process HTTP - response buffer. - (twittering-connection-type-table): add the entries for - `pre-process-buffer'. - (twittering-oauth-get-response-alist): remove redundant - pre-processing for `openssl s_client'. - (twittering-oauth-get-token-alist-native): pre-process buffer - according to the variable `connection-info'. - (twittering-oauth-get-token-alist-curl): likewise. - (twittering-pre-process-buffer-curl): new function. - (twittering-pre-process-buffer-native): new function. - (twittering-http-default-sentinel): pre-process buffer with the - function registered as `pre-process-buffer' in `connection-info'. - - * twittering-mode.el: Fix replying to tweets displayed as replied - tweets. Thanks to Naohiro Aota. - (twittering-enter): correctly use `original-id' for tweets - displayed by `twittering-show-replied-statuses'. - -2010-08-25 Tadashi MATSUO - - * twittering-mode.el: Confirm that a buffer associated with a - process hs not been killed. - (twittering-oauth-get-token-alist-native): confirm that the buffer - associated with the process has not been killed. - (twittering-oauth-get-token-alist-curl): likewise. - - * twittering-mode.el: Verify an account synchronously. - (twittering-verify-credentials): wait for the authorization to - finish. - -2010-08-22 Tadashi MATSUO - - * twittering-mode.el (twittering-atom-xmltree-to-status-datum): - retrieve `user-screen-name' and optional `user-name' from XML for - StatusNet correctly. Thanks to Takashi Masuda. - - * twittering-mode.el: Introduce `clean-up-sentinel' to - `twittering-call-api'. It is executed whenever the process - sentinel is invoked. - (twittering-call-api): add new argument `clean-up-sentinel' for - the command `get-list-index' and `verify-credentials'. - (twittering-start-http-session): add new argument - `clean-up-sentinel' executed whenever the process sentinel is - invoked. - (twittering-start-http-session-curl): likewise. - (twittering-start-http-session-native): likewise. - (twittering-http-get): likewise. - (twittering-http-post): likewise. - (twittering-http-default-sentinel): invoke `clean-up-sentinel' if - it is non-nil. - - * twittering-mode.el: Fix the race condition on resetting - authorization information when the process exits abnormally. - (twittering-verify-credentials): use `clean-up-sentinel' for - resetting variables when the process exits abnormally or the HTTP - response is invalid. - (twittering-http-get-verify-credentials-clean-up-sentinel): new - function for resetting some variables when the process for - `verify-credentials' API exits abnormally. - -2010-08-21 Tadashi MATSUO - - * twittering-mode.el: Restore `twittering-get-{search,status}-url'. - (twittering-lookup-get-status-url): removed. - (twittering-lookup-get-search-url): removed. - (twittering-get-status-url): look up a function suitable for - `twittering-service-method' and call it. - (twittering-get-search-url): likewise. - (twittering-make-clickable-status-datum): directly call - `twittering-get-status-url' and `twittering-get-search-url' - instead of calling them via `twittering-lookup-get-status-url' or - `twittering-lookup-get-search-url'. - (twittering-generate-format-table): likewise. - (twittering-generate-formater-for-first-spec): likewise. - - * twittering-mode.el: Switch ways to parse XML depending on - `twittering-service-method'. - (twittering-atom-xmltree-to-status-datum): switch ways to parse - XML depending on `twittering-service-method'. - - * twittering-mode.el: Simplify `twittering-call-api'. - (twittering-call-api): reduce calls of `twittering-api-path'. - - * twittering-mode.el: Replace direct calls of - `twittering-http-post' with calls of `twittering-call-api'. - (twittering-update-status-from-minibuffer): use - `twittering-call-api' instead of `twittering-http-post'. - -2010-08-20 Takashi Masuda - - * twittering-mode.el: Support StatusNet. - (twittering-api-prefix): new variable. - (twittering-search-api-method): new variable. - (twittering-web-path-prefix): new variable. - (twittering-service-method): new variable. - (twittering-service-method-table): new variable. - (twittering-api-path): new function. - (twittering-lookup-get-status-url): new function. - (twittering-get-status-url-twitter): new function. - (twittering-get-status-url-statusnet): new function. - (twittering-lookup-get-search-url): new function. - (twittering-get-search-url-twitter): new function. - (twittering-get-search-url-statusnet): new function. - (twittering-call-api): generate a path of API by - `twittering-api-path'. (API のパスは twittering-api-path から取得 - するようにした。) - (twittering-edit-post-status): likewise. - (twittering-update-status-from-minibuffer): likewise. - (twittering-atom-xmltree-to-status-datum): support the format - used in StatusNet.(いずれも検索関連の修正。 - 「interpret-time-diff.patch」「user-name が設定されていないユーザ - に対応」「検索時のユーザアイコンを取得出来るように修正」) - (twittering-make-clickable-status-datum): retrieve `status-url' - and `search-url' via `twittering-lookup-get-status-url' and - `twittering-lookup-get-search-url'. (twittering-lookup-get-status-url - と twittering-lookup-get-search-url を介して status-url と - search-url を取得するようにした。 - (twittering-generate-format-table): likewise. - (twittering-generate-formater-for-first-spec): likewise. - - * twittering-mode.el: fix statusnet user URL - (twittering-get-status-url-statusnet): fix user URL - - * twittering-mode.el (twittering-generate-format-table): - Do not use icon images scaled by API unless Twitter. - - * twittering-mode.el: fix statusnet URL - (twittering-get-status-url-statusnet): fix id URL - (twittering-get-status-url-statusnet): fix hashtag URL - -2010-08-20 Tadashi MATSUO - - * twittering-mode.el (twittering-edit-post-status): call - `twittering-call-api' instead of calling `twittering-http-post' - directly. - - * twittering-mode.el: Do not add unnecessary parameter `source' to - API calls. - (twittering-http-post): do not add unnecessary parameter `source'. - (twittering-call-api): add the parameter `source' when using BASIC - authentication. - - * twittering-mode.el (twittering-call-api): Change parameters in - order to follow the update of Twitter API. - - * twittering-mode.el: Add `twittering-push-uri-onto-kill-ring' and - bind "U" to it. Thanks to Faried Nawaz. - (twittering-push-uri-onto-kill-ring): new function for pushing the - uri property of the current position onto the kill-ring. - (twittering-mode-map): bind "U" to - `twittering-push-uri-onto-kill-ring'. - - * twittering-mode.el: Add `twittering-new-tweets-statuses' for the - hook functions of `twittering-new-tweets-hook'. Thanks to Faried - Nawaz. - (twittering-new-tweets-statuses): new variable. - (twittering-add-statuses-to-timeline-data): bind - `twittering-new-tweets-statuses' to `new-statuses' so that the - hook functions can refer to the new tweets. - -2010-08-15 Tadashi MATSUO - - * twittering-mode.el: Confirm that sufficient information is - loaded from the private file. - (twittering-load-private-info): load only variables that are - enumerated in `twittering-variables-stored-with-encryption'. - (twittering-has-oauth-access-token-p): new function for checking - whether `twittering-oauth-access-token-alist' has sufficient - information. - (twittering-verify-credentials): confirm that sufficient - information is loaded from the private file. - -2010-08-06 Tadashi MATSUO - - * twittering-mode.el: Fix options of `curl' for POST with an empty - body. - (twittering-start-http-session-curl): add an option "-d" whenever - `method' equals to "POST". - - * twittering-mode.el: Use the ID of the retweeted original tweet - on generating a URL or retweeting it. - (twittering-status-to-status-datum): add new property `source-id' - specifying a source tweet of a retweet. - (twittering-generate-formater-for-first-spec): generate a URL for - a retweet from the ID of its source. - (twittering-generate-format-status-function): add `source-id' as a - common property. - (twittering-native-retweet): use `source-id' for a retweet. - - * twittering-mode.el: Update the embedded CA certificate into - `Equifax Secure Certificate Authority'. - (twittering-ensure-ca-cert): replace the CA certificate with - `Equifax Secure Certificate Authority' currently referred by - `api.twitter.com' and `search.twitter.com'. - -2010-07-25 Tadashi MATSUO - - * twittering-mode.el (twittering-mode): avoid repeating - authorization when `twittering-initial-timeline-spec-string' is a - list of multiple timeline spec strings. - - * twittering-mode.el (twittering-http-default-sentinel): display - an error message when waiting for a response of an authorization - query. - - * twittering-mode.el: Replace functions `mapcan' and `map' defined - in `cl-extra' with built-in functions in order to prevent the - byte-compiled `twittering-mode' from depending on `cl-extra'. - (twittering-oauth-get-token-alist-curl): replace `mapcan' with a - combination of `apply', `append' and `mapcar'. - (twittering-start-http-session-curl): likewise. - -2010-07-04 Tadashi MATSUO - - * twittering-mode.el (twittering-redisplay-status-on-buffer): Fix - the condition of redisplaying a timeline. - - * twittering-mode.el: If it fails to retrieve an image a certain - times, retry no longer. - (twittering-create-image-pair): return - `twittering-error-icon-data-pair' if the argument `image-data' is - nil. - (twittering-make-icon-string): fix the condition of - `image-data'. If it is an integer, it means the time of retries. - - * twittering-mode.el: Use icon images scaled by API if possible. - (twittering-generate-format-table): generate the URL of the scaled - icon image by API. - - * twittering-mode.el: Use `GET users/profile_image' API only if - the variable `twittering-use-profile-image-api' is non-nil. Since - the API is rate limited, it may cause troubles on other API calls. - (twittering-use-profile-image-api): new variable. - (twittering-generate-format-table): call `GET users/profile_imagne' - API only if `twittering-use-profile-image-api' is non-nil. - -2010-07-03 Tadashi MATSUO - - * twittering-mode.el: Replace `xml-parse-region' with - `twittering-xml-parse-region' in order to prevent abnormal exit - caused by decoding unknown numeric character references. - (twittering-unicode-replacement-char): new variable. - (twittering-ucs-to-char): return - `twittering-unicode-replacement-char' if decoding failed. - (decode-char): new advice in order to return - `twittering-unicode-replacement-char' for unknown code-points. - (twittering-xml-parse-region): new function. This function does - not exit abnormally even if given XML includes unknown numeric - references. Unknown numeric references are replaced with - `twittering-unicode-replacement-char'. - (twittering-get-error-message): replace `xml-parse-region' with - `twittering-xml-parse-region'. - (twittering-http-get-list-index-sentinel): likewise. - (twittering-get-status-from-http-response): likewise. - - * twittering-mode.el (twittering-oauth-get-token-alist-url): fix a - list of bindings. - -2010-07-02 Tadashi MATSUO - - * twittering-mode.el (twittering-oauth-get-token-alist-native): - use `twittering-tls-program' correctly. - - * twittering-mode.el: Detect abnormal exit of an invoked process. - (twittering-oauth-get-token-alist-native): confirm the exit - status of the invoked process. - (twittering-oauth-get-token-alist-curl): likewise. - (twittering-http-default-sentinel): likewise. - - * twittering-mode.el: Allow insecure server certificates if - `twittering-allow-insecure-server-cert' is non-nil. - (twittering-allow-insecure-server-cert): new variable. - (twittering-oauth-get-token-alist-curl): add "--insecure" option - to the arguments for `curl' if - `twittering-allow-insecure-server-cert' is non-nil. - (twittering-start-http-session-curl): likewise. - (twittering-start-http-session-native-tls-p): add options to the - programs in `tls-program' in order to allow insecure server - certificates if `twittering-allow-insecure-server-cert' is - non-nil. - - * twittering-mode.el (twittering-verify-credentials): display an - error message if the variable `twittering-auth-method' is - invalid. - -2010-07-01 Tadashi MATSUO - - * twittering-mode.el: Support the url library included in Emacs 23 - and later. - (twittering-oauth-get-token-alist-native): support the function - `url-generic-parse-url' that returns parsed URL object generated - as `structure'. - (twittering-oauth-get-token-alist-curl): likewise. - - * twittering-mode.el (twittering-call-api): `user', `friends', - `mentions' and `public' timelines include native retweets. - -2010-06-30 Tadashi MATSUO - - * twittering-mode.el (twittering-verify-credentials): reset - `twittering-username' when authentication via xAuth failed. - - * twittering-mode.el (twittering-verify-credentials): invoke - `twittering-prepare-account-info' before authentication method - requiring account information. - (twittering-visit-timeline): invoke - `twittering-verify-credentials' before reading timeline spec. - -2010-06-29 Tadashi MATSUO - - * twittering-mode.el: Confirm process status for avoiding - dead-lock. - (twittering-oauth-get-token-alist-native): confirm the process - status in order to avoid dead-lock. If the process exited - abnormally, the variable `result' becomes nil. - (twittering-oauth-get-token-alist-curl): likewise. - (twittering-verify-credentials): wait for the process to exit - in order to avoid dead-lock. - (twittering-get-list-index-sync): likewise. - - * twittering-mode.el (twittering-verify-credentials): wait for the - process to exit in order to avoid dead-lock. - - * twittering-mode.el: Support authentication via xAuth. - (twittering-get-list-index-sync): likewise. - (twittering-xauth-auth-str-access-token): new function. - (twittering-oauth-get-token-alist-url): add an argument - `post-body'. - (twittering-oauth-get-token-alist-native): likewise. - (twittering-oauth-get-token-alist-curl): likewise. - (twittering-oauth-get-token-alist): add an optional argument - `post-body'. - (twittering-xauth-get-access-token): new function. - (twittering-prepare-account-info): support xAuth. - (twittering-verify-credentials): likewise. - (twittering-http-application-headers-with-auth): likewise. - (twittering-visit-timeline): call - `twittering-prepare-account-info' for xAuth. - -2010-06-13 Tadashi MATSUO - - * twittering-mode.el (twittering-write-and-encrypt): fix arguments - of `epg-context-set-progress-callback' because of the difference - between EasyPG 0.0.16 and that included in Emacs23. - - * twittering-mode.el (twittering-save-private-info): change the - permission of the encrypted file in order to prevent others from - reading the file. - (twittering-write-and-encrypt): return t explicitly when it - succeeded in encrypting private information. - - * twittering-mode.el (twittering-write-and-encrypt): In order to - prevent `epa-file' to encrypt the file double, - `epa-file-name-regexp' is temorarily changed into the null regexp - that never matches any string. - -2010-06-12 Tadashi MATSUO - - * twittering-mode.el: Fix bugs. - (twittering-hmac-sha1): remove invalid arguments. - (twittering-oauth-auth-str): correct a variable. - - * twittering-mode.el: Support master password for storing private - information in an encrypted file. - (twittering-use-master-password): new variable. - (twittering-private-info-file): new variable. - (twittering-variables-stored-with-encryption): new variable. - (twittering-load-private-info): new function. - (twittering-load-private-info-with-guide): new function. - (twittering-save-private-info): new function. - (twittering-save-private-info-with-guide): new function. - (twittering-capable-of-encryption-p): new function. - (twittering-read-from-encrypted-file): new function. - (twittering-write-and-encrypt): new function. - (twittering-verify-credentials): support master password. - - * twittering-mode.el: Add codes for debugging functions for - OAuth. - (twittering-oauth-get-token-alist-url): add codes for debug. - (twittering-oauth-get-token-alist-native): likewise. - (twittering-oauth-get-token-alist-curl): likewise. - -2010-06-09 Yuto Hayamizu - - * twittering-mode.el (twittering-oauth-get-access-token): reject - invalid PIN code input and strip extra white spaces. - -2010-06-05 Tadashi MATSUO - - * twittering-mode.el: confirm that a valid access token has been - retrieved. - (twittering-oauth-make-response-alist): do not decode a null entry. - (twittering-verify-credentials): confirm that the retrieved - `token-alist' is valid as an access token. - -2010-06-04 Yuto Hayamizu - - * twittering-mode.el: removed (set-terminal-coding-system 'utf-8) - (twittering-mode-map): changed key bindings: - twittering-public-timeline: C-c C-g -> C-c C-p, - twittering-set-current-hashtag: C-c C-h -> C-c C-t - - -2010-06-03 Yuto Hayamizu - - * twittering-mode.el: add encrypted oauth consumer key/secret - (twittering-auth-method): changed default value to 'oauth - (twittering-oauth-get-access-token): give users a choise to open - authrization URL with browser or not when - twittering-oauth-invoke-browser is nil. - -2010-06-03 Tadashi MATSUO - - * twittering-mode.el: Use `twittering-oauth-use-ssl' instead of - `twittering-use-ssl' on functions for OAuth. - (twittering-oauth-use-ssl): add docstring. - (twittering-oauth-get-response-alist): use - `twittering-oauth-use-ssl' instead of `twittering-use-ssl'. - (twittering-oauth-get-token-alist-native): likewise. - (twittering-oauth-get-token-alist-curl): likewise. - (twittering-verify-credentials): likewise. - - * twittering-mode.el: Restore window parameters after automatic - redisplaying. - (twittering-current-window-config): new function. - (twittering-restore-window-config-after-modification): new function. - (twittering-redisplay-status-on-each-buffer): restore window - parameters after redisplaying. - - * twittering-mode.el: Suppress automatic redisplaying if - unnecessary. - (twittering-redisplay-status-on-each-buffer): do not modify buffer - if updated string is same as the current string in the meaning of - `string='. - (twittering-make-icon-string): give different strings for - displayed and undisplayed icon. - - * twittering-mode.el: Stop automatic redisplaying of buffers in - which the mark and region are active. - (twittering-redisplay-status-on-buffer): do not update buffer - in which the mark and region are active. - - * twittering-mode.el: Reimplement the status formater that allows - recursive specifiers such as "%FILL{%FACE[bold]{%C{%m/%d}}: %T}". - (twittering-parse-format-string): removed. - (twittering-generate-formater): removed. - (twittering-generate-status-formater-base): removed. - (twittering-generate-format-table): new function. - (twittering-generate-formater-for-first-spec): new function. - (twittering-generate-formater-for-current-level): new function. - (twittering-generate-format-status-function): new function. - (twittering-generate-format-status-function): use new - implementation. - - * twittering-mode.el: Add an optional argument for the format - specifier `FILL'. The argument specifies the prefix for the filled - region. - (twittering-status-format): use 2 white spaces as fill-prefix in - default. - (twittering-fill-string): use an additional argument `prefix' as - `fill-prefix' for `fill-region-as-paragraph' if the argument is - non-nil. - (twittering-update-filled-string): transfer the local prefix for - `twittering-fill-string'. - (twittering-generate-formater-for-first-spec): recognize an - optional argument for the format specifier `FILL'. - - * twittering-mode.el: Add a new format specifier - "%FOLD[prefix]{...}". - (twittering-fill-string): add an argument `keep-newline'. If it is - non-nil, do not remove newlines in given string. - (twittering-update-filled-string): add an argument - `keep-newline'. - (twittering-generate-formater-for-first-spec): add a new specifier - "%FOLD[prefix]{...}". - - * twittering-mode.el: Fix unintended cursor motion caused by - automatic redisplaying. - (twittering-redisplay-status-on-each-buffer): fix the incorrect - cursor motion occurring when it points the beginning of region - that will be be modified. - -2010-05-27 Tadashi MATSUO - - * twittering-mode.el (twittering-toggle-activate-buffer): restart - the timer if it is not active when activating a buffer. - -2010-05-24 Naohiro Aota - - * twittering-mode.el (twittering-native-retweet): Check if tweet - is my own one. - -2010-05-22 Tadashi MATSUO - - * twittering-mode.el: Use the coding-system `utf-8-unix' for - reading data retrieved from Twitter. - (twittering-start-http-session-curl): use the coding-system - `utf-8-unix' for reading data retrieved from Twitter. - (twittering-start-http-session-native): likewise. - - * twittering-mode.el: Omit a successful HTTP response and headers - if they seem to be sent from a proxy for CONNECT method. - (twittering-http-default-sentinel): omit a successful HTTP - response and headers from a proxy if using SSL via the proxy. - (twittering-get-response-header): do not remove headers from a - proxy. - - * twittering-mode.el: Do not initialize `twittering-tls-program' - multiple times. - (twittering-start-http-session-native-tls-p): check `tls-program' - only if `twittering-tls-program' is nil. - - * twittering-mode.el: Cache the result of capability confirmation - for `curl'. - (twittering-start-http-session-curl-p): do not initialize - `twittering-curl-program' multiple times. - (twittering-start-http-session-curl-https-p): do not execute - `curl' multiple times. - - * twittering-mode.el: Look-up of connection type is rearranged. - (twittering-lookup-http-start-function): reimplemented. - (twittering-lookup-connection-type): new function. - - * twittering-mode.el: Confirm an available connection method - before visiting a timeline. - (twittering-visit-timeline): confirm connection method. - - * twittering-mode.el: Support authentication via OAuth. The - authentication requires a consumer information registered with - Twitter and an external WWW browser to authorize a request token. - (twittering-auth-method): new variable. - (twittering-oauth-consumer-key, twittering-oauth-consumer-secret): - new variables for specifying an OAuth consumer. - (twittering-oauth-access-token-alist): new variable for storing - access token. - (twittering-oauth-url-encode): new function. - (twittering-oauth-unhex): new function. - (twittering-oauth-url-decode): new function. - (twittering-oauth-make-signature-base-string): new function. - (twittering-oauth-make-random-string): new function. - (twittering-hmac-sha1): imported from - http://www.emacswiki.org/emacs/HmacShaOne . - (twittering-oauth-auth-str): new function. - (twittering-oauth-auth-str-request-token): new function. - (twittering-oauth-auth-str-exchange-token): new function. - (twittering-oauth-auth-str-access): new function. - (twittering-oauth-make-response-alist): new function. - (twittering-oauth-get-response-alist): new function. - (twittering-oauth-get-token-alist-url): new function. - (twittering-oauth-get-token-alist-native): new function. - (twittering-oauth-get-token-alist-curl): new function. - (twittering-oauth-get-token-function-table): new variable. - (twittering-oauth-get-token-function-type): new variable. - (twittering-oauth-invoke-browser): new variable. - (twittering-oauth-get-token-alist): new function. - (twittering-oauth-get-request-token): new function. - (twittering-oauth-exchange-request-token): new function. - (twittering-oauth-get-access-token): new function. - (twittering-prepare-account-info): acquire username and password - only if `twittering-auth-method' is symbol `basic'. - (twittering-verify-credentials): support Authentication via OAuth. - (twittering-http-application-headers): do not add Authorization - header. - (twittering-http-application-headers-with-auth): new function for - generating headers adapted for each authentication method. - (twittering-http-get): use - `twittering-http-application-headers-with-auth'. - (twittering-http-post): likewise. - (twittering-percent-encode): encode a string according to - Percent-Encoding defined in RFC3986 instead of RFC1738. It simply - calls `twittering-oauth-url-encode'. - (twittering-url-reserved-p): removed. - * test/test-twittering-mode.el: add new test `test-oauth'. - * emacs21/hex-util.el: imported from Emacs22. - * emacs21/sha1.el: imported from Emacs22. - - * twittering-mode.el (twittering-oauth-get-access-token): fix the - guide string of authorization via OAuth. - - * twittering-mode.el (twittering-hmac-sha1): fix indentation. - - * twittering-mode.el: Fix `twittering-hmac-sha1' so that it works - well on Emacs23 and later. - (twittering-hmac-sha1): ensure that internal variables are unibyte - strings even on Emacs23 and later. - * test/test-twittering-mode.el: add new test `test-hmac-sha1'. - - * emacs21/sha1.el: Imported from Gnus distributed with Emacs - 22.2.1 on Debian 5.0 for Emacs21 that does not include `sha1.el'. - * emacs21/hex-util.el: Imported from Gnus distributed with Emacs - 22.2.1 on Debian 5.0 for Emacs21 that does not include - `hex-util.el'. - -2010-05-20 Tadashi MATSUO - - * twittering-mode.el: The configuration of a proxy is referred via - the function `twittering-proxy-info'. - (twittering-proxy-info): return all configuration of the proxy for - the scheme. - - * twittering-mode.el: Give priority to the variable - `twittering-proxy-*' over `twittering-http-proxy-*' and - `twittering-https-proxy-*'. - (twittering-proxy-server): defined as a variable. - (twittering-proxy-port): likewise. - (twittering-proxy-keep-alive): likewise. - (twittering-proxy-user): likewise. - (twittering-proxy-password): likewise. - (twittering-normalize-proxy-vars): normalize - `twittering-proxy-port'. - (twittering-proxy-info): return configuration generated from - `twittering-proxy-*' regardless of the scheme (HTTP or HTTPS) if - `twittering-proxy-server' and `twittering-proxy-port' are - non-nil. - -2010-05-17 Tadashi MATSUO - - * twittering-mode.el (twittering-start-http-session-curl): fix - extraction of the scheme from the variable `request'. - - * twittering-mode.el: Use a relative path to specify the temporary - cert file for `curl' to ignore the difference of path - representation between Windows and Cygwin. - (twittering-start-http-session-curl): change directory before - invoking `curl' and specify the temporary cert file with relative - path. - -2010-05-15 Tadashi MATSUO - - * twittering-mode.el: Add copyright of the ACTIVE/INACTIVE - indicators derived from Wanderlust. - (twittering-active-indicator-image): add the copyright as a - comment. - (twittering-inactive-indicator-image): likewise. - - * twittering-mode.el: The function `twittering-icon-mode' keeps - the current cursor point. - (twittering-render-timeline): add a new argument `keep-point'. - (twittering-icon-mode): keep the current cursor point. - - * test/test-twittering-mode.el: Remove an obsolete test and update - `test-format-status'. - - * twittering-mode.el: The proxies for HTTP and HTTPS can be - configured individually. The variables - `twittering-proxy-{server,port,user,password,keep-alive}' are now - aliases. - (twittering-http-proxy-server): new variable. - (twittering-http-proxy-port): new variable. - (twittering-http-proxy-user): new variable. - (twittering-http-proxy-password): new variable. - (twittering-http-proxy-keep-alive): new variable. - (twittering-https-proxy-server): new variable. - (twittering-https-proxy-port): new variable. - (twittering-https-proxy-user): new variable. - (twittering-https-proxy-password): new variable. - (twittering-https-proxy-keep-alive): new variable. - (twittering-proxy-server): changed into an alias to - `twittering-http-proxy-server'. - (twittering-proxy-port): changed into an alias to - `twittering-http-proxy-port. - (twittering-proxy-user): changed into an alias to - `twittering-http-proxy-user. - (twittering-proxy-password): changed into an alias to - `twittering-http-proxy-password. - (twittering-proxy-keep-alive): changed into an alias to - `twittering-http-proxy-keep-alive. - (twittering-normalize-proxy-vars): new function. - (twittering-proxy-info): new function. - (twittering-url-proxy-services): new function. - (twittering-setup-proxy): initialize individual proxy - configurations for HTTP and HTTPS. - - * twittering-mode.el: Enable to retrieve icon images silently. - (twittering-url-show-status): new variable. - (twittering-url-wrapper): control display of status even if the - retrieval is asynchronous. - -2010-05-11 Tadashi MATSUO - - * twittering-mode.el: Fix initialization of `twittering-tls-program'. - (twittering-start-http-session-native-tls-p): use - `twittering-tls-program' if it is non-nil. - -2010-05-09 Tadashi MATSUO - - * twittering-mode.el: Use "\\`" as the regexp for the head of a - tweet instead of "^". This prevents misinterpretation of tweets - including multiple lines. - (twittering-edit-post-status): correct the regexp for determining - whether the "in-reply-to" ID should be attached or not. - (twittering-update-status-from-minibuffer): likewise. - (twittering-status-not-blank-p): correct the regexp for - distinguish a blank tweet from a non-blank tweet. - - * twittering-mode.el: Prevent applying improper functions to a - failed connection. - (twittering-verify-credentials): give up authorization if - `twittering-call-api' returns nil. - (twittering-start-http-session-curl): return nil if it failed to - open a connection. - (twittering-start-http-session-native): likewise. - - * twittering-mode.el: Support HTTPS with `tls' library. - (twittering-tls-program): new variable. - (twittering-connection-type-table): register - `twittering-start-http-session-native-tls-p' as the "https" entry - for "native". - (twittering-start-http-session-native-tls-p): new function. - (twittering-start-http-session-native): call `open-tls-stream' if - `twittering-use-ssl' is non-nil. - * emacs21/tls.el: Imported from Emacs 22.2.1 on Debian 5.0 for - Emacs21 that does not include `tls.el'. - -2010-05-08 Tadashi MATSUO - - * twittering-mode.el: Add an abstract layer for Twitter API. - (twittering-call-api): new function. - (twittering-timeline-spec-to-host-method): removed. - (twittering-host-method-to-timeline-spec): removed. - (twittering-manage-friendships): removed. - (twittering-manage-favorites): removed. - (twittering-get-tweets): removed. - (twittering-verify-credentials): use `twittering-call-api' instead - of calling `twittering-http-get' directly. - (twittering-get-list-index): likewise. - (twittering-get-and-render-timeline): use `twittering-call-api' - instead of calling `twittering-get-tweets'. The function also - calculates how many tweets should be retrieved. - (twittering-update-lambda): use `twittering-call-api' instead of - calling `twittering-http-post' directly. - (twittering-update-jojo): likewise. - (twittering-native-retweet): likewise. - (twittering-follow): use `twittering-call-api'. - (twittering-favorite): likewise. - - * twittering-mode.el: Bind "C-c D" to `twittering-delete-status', - which is a new function deleting a tweet. - (twittering-delete-status): new function. - (twittering-call-api): add a new command `destroy-status'. - (twittering-delete-status-from-data-table): new function. - (twittering-mode-map): bind "C-c D" to `twittering-delete-status'. - -2010-05-08 Takashi Masuda - - * twittering-mode.el (twittering-update-jojo): 自分のツイートには返 - 信しないようにした。 - * twittering-mode.el (twittering-update-jojo): do not reply to - tweets posted by the current user itself. - -2010-05-08 Tadashi MATSUO - - * twittering-mode.el (twittering-jojo-mode-p): confirm that the - buffer has not been killed. - -2010-05-06 Tadashi MATSUO - - * twittering-mode.el: Fix the format specifier "%r" for direct - message. - (twittering-status-to-status-datum): add `recipient-screen-name' - as a element of a status. - (twittering-xmltree-to-status): store `recipient_screen_name' - without modificaiton. - (twittering-generate-status-formater-base): replace "%r" with - `recipient-screen-name' if it exists. - -2010-05-05 Tadashi MATSUO - - * twittering-mode.el: Use a dummy buffer to prevent the cursor - from moving without intention after invoking `url-retrieve'. - (twittering-url-request-dummy-buffer-name): new constant for dummy - buffer. - (twittering-resolve-url-request): switch to the dummy buffer just - after killing the content buffer generated by `url-retrieve'. This - prevents multiple threads from having different cursor points for - the same buffer. - -2010-05-05 Takashi Masuda - - * twittering-mode.el: twittering-jojo-mode の判定ミスを修正。 - (twittering-add-statuses-to-timeline-data): 判定方法を変更した。 - (twittering-jojo-mode-p): new function - * twittering-mode.el: `twittering-jojo-mode' for each spec is - correctly referred in order to decide whether to invoke - `twittering-update-jojo'. - (twittering-add-statuses-to-timeline-data): correct the condition - for invoking `twittering-update-jojo'. - (twittering-jojo-mode-p): new function. - -2010-05-04 Tadashi MATSUO - - * twittering-mode.el (twittering-ask-post): renamed - `twittering-request-confirmation-on-posting'. - - * twittering-mode.el (twittering-edit-post-status): correct the - condition for requesting confirmation on posting a status. - -2010-05-03 Takashi Masuda - - * twittering-mode.el: Tweet する時に y-or-n-p で問い合わせを出来る - ようにした。デフォルトは聞かれない。 - (twittering-ask-post): new variable - * twittering-mode.el: Add confirmation on posting a status edited - in pop-up buffer. It is disabled on default. - (twittering-ask-post): new variable. - - * twittering-mode.el: `V' の補完対象に :direct_messages や :home を - 追加した。 - (twittering-read-timeline-spec-with-completion): dummy-hist に追加。 - * twittering-mode.el: Add some primary timeline specs, such as - ":direct_messages" and ":home", to candidates of completion. - (twittering-read-timeline-spec-with-completion): add some timeline - specs to dummy-hist. - -2010-05-03 Tadashi MATSUO - - * twittering-mode.el (twittering-edit-setup-help): generate help - message by using `substitute-command-keys'. - - * twittering-mode.el: The format specifier "@" can receive the - time format string, which is used to format the time of - sufficiently old statuses. - (twittering-generate-status-formater-base): add new parameter - 'time-format' to the specifier "@". - (twittering-make-passed-time-string): receive new argument - `time-format'. - - * twittering-mode.el: Functions for retrieving URLs asynchronously - are added. - (twittering-url-data-hash): new variable for retrieved data. - (twittering-url-request-list): new variable for additional requests. - (twittering-url-request-sentinel-hash): new variable for sentinels. - (twittering-internal-url-queue): new variable. - (twittering-url-request-resolving-p): new variable. - (twittering-url-request-retry-limit): new variable. - (twittering-remove-redundant-queries): new function. - (twittering-resolve-url-request): new function. - (twittering-url-retrieve-async): new function. - - * twittering-mode.el: Icons are retrieved asynchronously. - (twittering-icon-prop-hash): new variable. - (twittering-image-data-table): removed. - (twittering-get-display-spec-for-icon): new function. - (twittering-convert-image-data): new function. - (twittering-error-icon-data-pair): new constant. - (twittering-create-image-pair): new function. - (twittering-register-image-data): new function. - (twittering-make-slice-spec): new function. - (twittering-make-display-spec-for-icon): rearranged. - (twittering-make-icon-string): new function. - (twittering-retrieve-image): removed. - (twittering-generate-status-formater-base): use - `twittering-make-icon-string'. - (twittering-image-stack): removed. - (twittering-image-type): removed. - (twittering-image-type-cache): removed. - -2010-05-01 Immad Naseer - - * twittering-mode.el: New interactive functions for direct - messages are added. - (twittering-direct-messages-timeline): new function. - (twittering-sent-direct-messages-timeline): new function. - -2010-04-25 Tadashi MATSUO - - * twittering-mode.el: Fix mode-line to display the rate limit. - (twittering-mode-line-buffer-identification): add the remaining - number of API requests if `twittering-display-remaining' is - non-nil. - - * twittering-mode.el: Stop keeping undo information for buffers - managed by `twittering-mode'. Thanks to irie for pointing it out. - (twittering-mode-setup): call `buffer-disable-undo'. - - * twittering-mode.el: Verify the account in advance of retrieving - statuses. - (twittering-account-authorization): new variable. - (twittering-account-authorized-p): new function. - (twittering-account-authorization-queried-p): new function. - (twittering-prepare-account-info): new function for completing - username and password. - (twittering-verify-credentials): new function. - (twittering-http-get-verify-credentials-sentinel): new function. - (twittering-get-managed-buffer): start the timer after - authorization. - (twittering-mode-init-global): initialize neither - `twittering-username' nor `twittering-password'. - (twittering-mode): call `twittering-prepare-account-info'. - (twittering-get-and-render-timeline): ignore requests unless - authorization is completed. - (twittering-update-active-buffers): do not retrieve statuses - unless authorization is completed. - (twittering-visit-timeline): verify the account. - (twittering-get-username): use `twittering-username' directly. - (twittering-get-password): use `twittering-password' directly. - (twittering-username-active): removed. - (twittering-password-active): removed. - - * twittering-mode.el: `twittering-visit-timeline' initializes - global variables if necessary. - (twittering-visit-timeline): initialize global variables and - prepare account information. - (twittering-mode): delegate the initialization to - `twittering-visit-timeline'. - (twittering-mode-init-global): renamed - `twittering-initialize-global-variables-if-necessary'. - - * twittering-mode.el: Support multiple timelines on initialization. - (twittering-initial-timeline-spec-string): mean multiple timelines - if the value is a list of strings. - (twittering-mode): support multiple timeline specs on - initialization. - -2010-04-24 Tadashi MATSUO - - * twittering-mode.el: Reimplement indicators. - (twittering-ssl-indicator-image): new constant. - (twittering-modeline-ssl): defined as a constant, which is - initialized on loading `twittering-mode.el'. - (twittering-ssl-image, twittering-ssl-indicator): removed. - (twittering-ssl-icon): removed. - (twittering-active-image, twittering-inactive-image): removed. - (twittering-active-indicator, twittering-inactive-indicator): - removed. - (twittering-icon-directory): removed. - (twittering-active-icon, twittering-inactive-icon): removed. - (twittering-display-image-p): removed. - (twittering-init-mode-line-icons): removed. Images are initialized - as constants on loading `twittering-mode.el'. - (twittering-active-indicator-image): new constant. - (twittering-inactive-indicator-image): new constant. - (twittering-modeline-active): defined as a constat. - (twittering-modeline-inactive): likewise. - (twittering-mode-init-global): remove the call of - `twittering-init-mode-line-icons'. - - * twittering-mode.el: Display the buffer state as - `mode-line-buffer-identification' instead of `mode-name'. - (twittering-mode-line-buffer-identification): new function for - generating a mode-line string for `twittering-mode'. - (twittering-mode-string): removed. - (twittering-modeline-ssl): remove brackets from the mode-line - string. - (twittering-modeline-active): use a whitespace with `display' face - as a mode-line string. - (twittering-modeline-inactive): remove brackets from the mode-line - string. - (twittering-update-mode-line): call `force-mode-line-update' only. - (twittering-mode-setup): initialize `mode-name' and - `mode-line-buffer-identification'. - -2010-04-19 Takashi Masuda - - * twittering-mode.el : 関数名が古かったので、リネーム。 - (twittering-init-mode-line-icons): - (twittering-mode-init-global): - twittering-init-active-inactive-icons から - twittering-init-mode-line-icons にリネーム。 - * twittering-mode.el : rename old functions. - (twittering-init-mode-line-icons): rename - `twittering-init-active-inactive-icons' - `twittering-init-mode-line-icons'. - - * twittering-mode.el : SSL と ACTIVE/INACTIVE の状態をモードライン - アイコンに表示するようにした。-nw 時は文字列を表示する。 - (twittering-update-mode-line): mode-line-buffer-identification の設 - 定を追加。INACTIVE と ssl の mode-name への設定を削除した。 - (twittering-display-image-p): 新規マクロ - (twittering-init-active-inactive-icons): 新規関数 - (twittering-mode-init-global): - twittering-init-active-inactive-icons を呼ぶように修正。 - * twittering-mode.el : display graphical indicators for SSL and - ACTIVE/INACTIVE state on mode-line. - (twittering-update-mode-line): add graphical indicators to - `mode-line-buffer-identification' instead of `mode-name'. - (twittering-display-image-p): new macro. - (twittering-init-active-inactive-icons): new function. - (twittering-mode-init-global): call - `twittering-init-active-inactive-icons'. - - * icons/ssl.xpm: 上記に伴い Mew から拝借。 - * icons/ssl.xpm: imported from Mew. - - * offline.patch: 上記に伴い削除。元々私がブログに公開したものを - Hayamizu 氏が拾って下さったもの。 - * offline.patch: removed. (Mr.Hayamizu imported it, which - originated from Masuda's blog.) - -2010-04-19 Tadashi MATSUO - - * twittering-mode.el (twittering-get-buffer-from-spec): return nil - if the corresponding buffer has been already killed. - (twittering-update-unread-status-info): do not count statuses for - a killed buffer. - (twittering-http-get-default-sentinel): do not render a timeline - for a killed buffer. - -2010-04-17 Tadashi MATSUO - - * twittering-mode.el: Reimplement support of multiple buffers. The - timeline spec and active-mode flag of each managed buffer are - stored as buffer-local variables. - (twittering-timeline-spec): new buffer-local variable. - (twittering-timeline-spec-string): new buffer-local variable. - (twittering-active-mode): new buffer-local variable. - (twittering-buffer-info-list): redefined as a list of buffers. - (twittering-get-buffer-list): follow the redefinition of - `twittering-buffer-info-list'. - (twittering-get-active-buffer-list): likewise. - (twittering-buffer-p): likewise. - (twittering-get-buffer-from-spec): likewise. - (twittering-unregister-buffer): likewise. - (twittering-unregister-killed-buffer): likewise. - (twittering-buffer-active-p): use buffer-local - `twittering-active-mode'. - (twittering-get-timeline-spec-for-buffer): use buffer-local - `twittering-timeline-spec'. - (twittering-get-timeline-spec-string-for-buffer): use buffer-local - `twittering-timeline-spec-string'. - (twittering-register-buffer): removed. Its body is integrated into - `twittering-get-managed-buffer'. - (twittering-replace-spec-string-for-buffer): set buffer-local - `twittering-timeline-spec-string' directly. - (twittering-set-active-flag-for-buffer): use - `twittering-toggle-activate-buffer'. - (twittering-toggle-activate-buffer): set buffer-local - `twittering-active-mode' directly. - (twittering-get-managed-buffer): rearranged. - (twittering-mode-setup): set up `twittering-timeline-spec', - `twittering-timeline-spec-string' and `twittering-active-mode'. - And register the current buffer to `twittering-buffer-info-list'. - - * twittering-mode.el: Add functions to switch timelines. - (twittering-switch-to-next-timeline): new function. - (twittering-switch-to-previous-timeline): new function. - (twittering-mode-map): bind "f" and "b" to - `twittering-switch-to-next-timeline' and - `twittering-switch-to-previous-timeline', respectively. - -2010-04-09 Tadashi MATSUO - - * twittering-mode.el (twittering-mode-init-global): initialize - faces without using `copy-face' because it does not change the - default face for new frames. - -2010-04-07 Tadashi MATSUO - - * twittering-mode.el: Fix a bug on updating timeline history. - (twittering-http-get-default-sentinel): call - `twittering-add-timeline-history' with correct timeline spec - string. - (twittering-add-timeline-history): receive timeline spec string - instead of timeline spec. - - * twittering-mode.el (twittering-mode-setup): omit redundant call - of `run-hook'. - - * twittering-mode.el (twittering-direct-message): fix a lack of - separator. Thanks to Takashi Masuda. - -2010-04-06 Tadashi MATSUO - - * twittering-mode.el (twittering-new-tweets-spec): new variable - for timeline spec on running `twittering-new-tweets-hook'. - - * twittering-mode.el: Add an experimental notifier for unread - statuses on mode-line. You can enable it by invoking - `twittering-enable-unread-status-notifier'. To disable it, invoke - `twittering-disable-unread-status-notifier'. - (twittering-unread-status-info): new variable. - (twittering-reset-unread-status-info-if-necessary): new function. - (twittering-set-number-of-unread): new function. - (twittering-make-unread-status-notifier-string): new function. - (twittering-update-unread-status-info): new function. - (twittering-enable-unread-status-notifier): new function. - (twittering-disable-unread-status-notifier): new function. - - * twittering-mode.el: Support fixed fill-column for the format - specifier "%FILL{...}". Thanks to William Xu. - (twittering-fill-column): new variable. - -2010-04-04 Tadashi MATSUO - - * twittering-mode.el: Improve compatibility with global-font-lock mode. - (twittering-mode-init-global): use `bold' instead of - `font-lock-string-face' if it has not been bound yet. - `twittering-mode' does not require loading `font-lock'. - (twittering-mode-setup): prevent `global-font-lock-mode' enabling - `font-lock-mode' by using buffer-local `font-lock-global-modes'. - `twittering-mode' can be used with/without any configuration for - font-lock mode. - - * twittering-mode.el: Replace hard-coded hostnames with - variables and functions. Thanks to William Xu. - (twittering-api-host): new variable. - (twittering-api-search-host): new variable. - (twittering-web-host): new variable. - (twittering-get-search-url): new function. - (twittering-make-clickable-status-datum): call - `twittering-get-search-url' instead of using hard-coded hostname. - - * twittering-mode.el (twittering-start-http-session-curl): do not - overwrite headers that `curl' will define internally. Thanks to - William Xu. - -2010-04-03 Tadashi MATSUO - - * twittering-mode.el (twittering-buffer-active-p): renamed - `twittering-buffer-related-p'. - - * twittering-mode.el (twittering-start): check the value of - `twittering-timer-for-redisplaying' before setting timer. - - * twittering-mode.el: Multiple buffers are supported. - (twittering-buffer-info-list): new variable for managing multiple - buffers. - (twittering-buffer): both of the function and the variable are - removed. - (twittering-update-mode-line): remove timeline spec from mode-line - because it is displayed as the name of buffer. - (twittering-switch-timeline): removed. - (twittering-get-buffer-list): new function. - (twittering-get-active-buffer-list): new function. - (twittering-buffer-related-p): modified to support multiple buffers. - (twittering-buffer-p): new function. - (twittering-buffer-active-p): new function. - (twittering-get-buffer-from-spec): new function. - (twittering-get-buffer-from-spec-string): new function. - (twittering-get-timeline-spec-for-buffer): new function. - (twittering-get-timeline-spec-string-for-buffer): new function. - (twittering-current-timeline-spec): return timeline spec for the - current buffer. - (twittering-current-timeline-spec-string): return timeline spec - string for the current buffer. - (twittering-register-buffer): new function. - (twittering-unregister-buffer): new function. - (twittering-unregister-killed-buffer): new function. - (twittering-replace-spec-string-for-buffer): new function. - (twittering-set-active-flag-for-buffer): new function. - (twittering-toggle-activate-buffer): new function. - (twittering-activate-buffer): new function. - (twittering-deactivate-buffer): new function. - (twittering-kill-buffer): new function. - (twittering-generate-new-buffer): new function. - (twittering-switch-timeline): removed. - (twittering-get-managed-buffer): new function. - (twittering-mode-map): `twittering-toggle-activate-buffer' is - bound to "a". `twittering-kill-buffer' is bound to "q" instead of - `twittering-suspend'. - (twittering-mode-init-global): new function for initializing - global variables. - (twittering-initialized): new variable. - (twittering-mode-setup): new function for initializing a buffer - being managed by `twittering-mode'. - (twittering-mode): reimplemented. - (twittering-icon-mode): support multiple buffers. - (twittering-http-get-default-sentinel): render the retrieved - statuses on the buffer bound to the timeline spec. - (twittering-redisplay-status-on-buffer): support multiple buffers. - (twittering-redisplay-status-on-each-buffer): new function. - (twittering-render-timeline): require the target buffer. - (twittering-timer-action): support multiple buffers. - (twittering-get-tweets): support multiple buffers. - (twittering-get-and-render-timeline): retrieve and render the - timeline bound to the current buffer. - (twittering-start): use `twittering-update-active-timeline' - instead of `twittering-current-timeline-noninteractive' for - `twittering-timer'. - (twittering-toggle-reverse-mode): support multiple buffers. - (twittering-friends-timeline): call `twittering-visit-timeline' - instead of `twittering-get-and-render-timeline'. - (twittering-home-timeline): likewise. - (twittering-replies-timeline): likewise. - (twittering-public-timeline): likewise. - (twittering-user-timeline): likewise. - (twittering-other-user-timeline): likewise. - (twittering-other-user-timeline-interactive): likewise. - (twittering-other-user-list-interactive): likewise. - (twittering-search): likewise. - (twittering-update-active-buffers): new function for retrieving - timelines for active buffers. - (twittering-current-timeline): retrieve statuses for current - buffer. - (twittering-erase-old-statuses): erase statuses of the timeline - bound to the current buffer. - (twittering-visit-timeline): switch to the buffer generated by - `twittering-get-managed-buffer'. - - * twittering-mode.el (twittering-update-server-info): update - mode-lines for all buffers managed by `twittering-mode' if - `twittering-display-remaining' is non-nil. - -2010-03-30 Tadashi MATSUO - - * twittering-mode.el (twittering-get-response-header): return nil - if an empty line as a separater is not found in the given buffer. - (twittering-http-default-sentinel): generate `header-info' only if - `header' is non-nil. - -2010-03-29 Tadashi MATSUO - - * twittering-mode.el (twittering-url-wrapper): new wrapper - function for using URL library with proxy configuration for - `twittering-mode'. - (twittering-url-insert-file-contents): likewise. - (twittering-url-retrieve-synchronously): likewise. - (twittering-setup-proxy): call `url-scheme-get-property' to avoid - `url-proxy-services' to be reset. - (twittering-retrieve-image): use the wrapper function instead of - a function in URL library. - (twittering-tinyurl-get): likewise. - - * twittering-mode.el (twittering-update-status-from-minibuffer): - fix infinite loop on updating a status from minibuffer. - - * twittering-mode.el (twittering-start-http-session-curl): modify - the order of arguments for `curl', where the URL is placed last. - -2010-03-25 Tadashi MATSUO - - * twittering-mode.el (twittering-get-status-url): change the - format of a URL of a certain status into that used in the web - interface on `http://twitter.com/'. - -2010-03-24 Tadashi MATSUO - - * twittering-mode.el (twittering-register-process): store timeline - spec string. - (twittering-get-and-render-timeline): register a process together - with timeline spec string. - (twittering-release-process): use `delq' instead of `delete'. - (twittering-get-timeline-spec-string-from-process): new function - for registered timeline spec string. - - * twittering-mode.el (twittering-http-get-default-sentinel): - display the timeline spec string in notification. - -2010-03-23 Tadashi MATSUO - - * twittering-mode.el (twittering-mode-map): bind "SPC" and "C-v" to - `twittering-scroll-up', and bind "" and "M-v" to - `twittering-scroll-down'. - (twittering-scroll-up): new function. Thanks to Jim Crossley. - (twittering-scroll-down): new function. - -2010-03-20 Satoshi Yatagawa - - * twittering-mode.el (twittering-edit-post-status): Don't add - parameter `in_reply_to_status_id' if the tweet does not begin with - `@' and username which is passed from callers. - (twittering-update-status-from-minibuffer): Likewise. - (twittering-generate-status-formater-base): Make the specifier - "%r" work similarly to web interface. - -2010-03-19 Satoshi Yatagawa - - * twittering-mode.el (twittering-retrieve-image): Use - `create-image'. - -2010-03-19 Satoshi Yatagawa - - * twittering-mode.el (twittering-regexp-hash): New defvar. - (twittering-regexp-atmark): Likewise. - (twittering-extract-timeline-spec): Use these. - (twittering-make-clickable-status-datum): Likewise. - -2010-03-19 Tadashi MATSUO - - * twittering-mode.el (twittering-remove-inactive-processes): add - `exit' and `signal' to `inactive-statuses'. - -2010-03-18 Satoshi Yatagawa - - * twittering-mode.el (twittering-other-user-list-interactive): - Revert part of 2010-03-12 change to prevent an overwrite of a - message which is outputted by `twittering-read-list-name'. - - * twittering-mode.el (twittering-http-default-sentinel): Check - process-status before processing sentinel. - - * twittering-mode.el (twittering-make-clickable-status-datum): Add - a text property `goto-spec'. - (twittering-other-user-timeline): Refer it. - (twittering-make-clickable-status-datum): Add a text property - `screen-name-in-text' to both `user-name' and `user-screen-name'. - (twittering-make-clickable-status-datum): No longer add text - properties `hashtag-in-text' and `uri-in-text'. - (twittering-enter): Don't refer these properties. - (twittering-make-clickable-status-datum): Reduce loops. - - * twittering-mode.el (twittering-follow): Copy username and clear - its text properties before using it for display on minibuffer. - (twittering-other-user-list-interactive): Likewise. - (twittering-read-list-name): Likewise. - (twittering-native-retweet): Likewise for text. - (twittering-favorite): Likewise for text. - -2010-03-17 Tadashi MATSUO - - * twittering-mode.el (twittering-generate-status-formater-base): - fix the formater for "%FACE[...]{...}". - -2010-03-13 Satoshi Yatagawa - - * twittering-mode.el: Improve a support of sending direct - messages. - - * twittering-mode.el (twittering-update-status-from-pop-up-buffer): - Use twitter API which is related of direct_messages if necessary. - (twittering-update-status-from-minibuffer): Likewise. - (twittering-timeline-spec-is-direct-messages-p): New defun. - (twittering-reply-recipient): Rename from - `twittering-reply-to-id'. - (twittering-update-status-from-pop-up-buffer): Adjust callers. - (twittering-render-timeline): Add a text property `belongs-spec'. - (twittering-update-status-from-pop-up-buffer): Add optional - arguments `username' and `spec'. - (twittering-update-status-from-minibuffer): Likewise. - (twittering-enter): Adjust callers. - - * twittering-mode.el (twittering-edit-setup-help): Add optional - arguments `username' and `spec'. - (twittering-update-status-from-pop-up-buffer): Call it here. - (twittering-edit-mode): Don't call it here. - - * twittering-mode.el (twittering-direct-message): Call - `twittering-read-username-with-completion'. - - * twittering-mode.el (twittering-make-display-spec-for-icon): Use - `create-animated-image' if present (on Emacs24 or later). - -2010-03-12 Satoshi Yatagawa - - * twittering-mode.el (twittering-http-get-default-sentinel): - Revert part of 2010-03-06 change because the scheduled removing of - public_timeline from twitter API had been canceled on 2010-03-11. - - * twittering-mode.el (twittering-other-user-list-interactive): Fix - condition to detect a null string. - (twittering-other-user-timeline-interactive): Likewise. - (twittering-extract-timeline-spec): Modify the condition for - detecting a null string same as others. - (twittering-get-replied-statuses): Likewise. - (twittering-generate-status-formater-base): Likewise. - (twittering-search): Likewise. - (twittering-follow): Likewise. - (twittering-direct-message): Add the condition for `username' is - nil. - (twittering-reply-to-user): Likewise. - (twittering-other-user-list-interactive): Likewise for - `list-name'. - -2010-03-11 Tadashi MATSUO - - * twittering-mode.el (twittering-update-status-format): kill - newly generated `*Compile-Log*' buffer if it is empty. - - * twittering-mode.el (twittering-mode-init-variables): initialize - account information explicitly. - (twittering-get-username): simplified. - (twittering-get-password): simplified. - -2010-03-11 Satoshi Yatagawa - - * twittering-mode.el (twittering-render-timeline): Call - `twittering-show-replied-statuses' if necessary. - (twittering-show-replied-tweets): New defvar. - (twittering-get-replied-statuses): Add optional argument `count'. - (twittering-show-replied-statuses): Likewise. - (twittering-have-replied-statuses-p): New defun. - (twittering-show-replied-statuses): Add optional argument - `interactive'. - (twittering-hide-replied-statuses): Likewise. - (twittering-toggle-show-replied-statuses): Adjust callers. - (twittering-show-replied-statuses): Show a reason to do nothing. - (twittering-hide-replied-statuses): Likewise. - - * twittering-mode.el (twittering-get-replied-statuses): Fix - condition because `replied-id' always non-nil. - (twittering-hide-replied-statuses): Fix condition to avoid an - infinite loop. - - * twittering-mode.el (twittering-hide-replied-statuses): Go to the - head of parent status before hiding replied statuses. - - * twittering-mode.el (twittering-default-show-replied-tweets): New - defvar. - (twittering-render-timeline): Use it instead of - `twittering-show-replied-tweets'. - (twittering-toggle-show-replied-statuses): Pass - `twittering-show-replied-tweets' into - `twittering-show-replied-statuses'. - (twittering-show-replied-tweets): Add a docstring. - -2010-03-11 Tadashi MATSUO - - * twittering-mode.el (twittering-lookup-http-start-function): - rearranged. - -2010-03-10 Satoshi Yatagawa - - * twittering-mode.el (twittering-lookup-http-start-function): - Don't use `booleanp' to work on Emacs21. - - * twittering-mode.el (twittering-mode-map): Use `kbd' macro same - as other keymaps. - - * twittering-mode.el (twittering-goto-next-status): Show a - progress message. - (twittering-goto-previous-status): Likewise. - -2010-03-10 Tadashi MATSUO - - * twittering-mode.el (twittering-fill-string): receive adjustment - width as the second argument. - (twittering-update-status-format): support formating status with a - prefix. - (twittering-generate-formater): likewise. - (twittering-generate-status-formater-base): likewise. - (twittering-generate-format-status-function): likewise. - (twittering-update-filled-string): likewise. - (twittering-format-status-for-redisplay): new function for - redisplaying a formated status with a prefix. - - * twittering-mode.el (twittering-find-status): new function for - finding a status from an ID. - (twittering-get-replied-statuses): new function for making a list - of replied statuses. - (twittering-mode-map): add - `twittering-toggle-show-replied-statuses' to keymap as "r". - (twittering-replied-statuses-visible-p): new function. - (twittering-show-replied-statuses): new function. - (twittering-hide-replied-statuses): new function. - (twittering-toggle-show-replied-statuses): new function. - (twittering-get-id-at): new function. - (twittering-get-current-status-head): new function. - -2010-03-09 Tadashi MATSUO - - * twittering-mode.el (twittering-redisplay-status-on-buffer): call - `func' with the region. - (twittering-make-passed-time-string): restore the original - properties. - - * twittering-mode.el (twittering-timeline-data-table): store ID - table and referring ID table, too. - (twittering-current-timeline-id-table): new function. - (twittering-add-statuses-to-timeline-data): store updated ID - tables. - - * twittering-mode.el (twittering-generate-status-formater-base): - redisplay filled string including substring that should be - redisplayed. - (twittering-update-filled-string): new function for updating - filled string with `need-to-be-update' property. - -2010-03-07 Satoshi Yatagawa - - * twittering-mode.el (twittering-edit-replace-at-point): New defun - to call `twittering-edit-length-check' forcefully. - (twittering-edit-mode-map): Bind F4 to it instead of - `twittering-tinyurl-replace-at-point'. - (twittering-edit-length-check): Make all arguments optional. - -2010-03-06 Tadashi MATSUO - - * twittering-mode.el (twittering-server-info-alist): new variable - for storing server information. - (twittering-http-status-line-regexp): removed. - - * twittering-mode.el (twittering-display-remaining): new variable - for specifying whether the remaining of rate limit should be - displayed on the mode line or not. - (twittering-update-mode-line): display the remaining of rate limit - if `twittering-display-remaining' is non-nil. - (twittering-get-ratelimit-remaining): new function. - (twittering-get-ratelimit-limit): new function. - -2010-03-06 Satoshi Yatagawa - - * twittering-mode.el: Use the new versioned API endpoint at - "api.twitter.com/1" instead of the legacy API endpoint to fit - twitter API specification as of 2010-02-17. - (twittering-timeline-spec-to-host-method): Likewise. - (twittering-host-method-to-timeline-spec): Likewise. - (twittering-edit-post-status): Likewise. - (twittering-update-status-from-minibuffer): Likewise. - (twittering-manage-friendships): Likewise. - (twittering-manage-favorites): Likewise. - (twittering-update-lambda): Likewise. - (twittering-update-jojo): Likewise. - (twittering-http-post): Update a comment. - - * twittering-mode.el (twittering-http-get-default-sentinel): Add - an additional information which is related to obsolete - public_timeline. - - * twittering-mode.el (twittering-http-post): Set parameter - `source' here. - (twittering-edit-post-status): Adjust callers. - (twittering-update-status-from-minibuffer): Likewise. - (twittering-manage-friendships): Likewise. - (twittering-manage-favorites): Likewise. - (twittering-update-lambda): Likewise. - (twittering-update-jojo): Likewise. - (twittering-native-retweet): Likewise. - - * twittering-mode.el (twittering-http-default-sentinel): Call - `twittering-switch-timeline' and `twittering-release-process' only - when `proc' is non-nil. - - * twittering-mode.el (twittering-http-get-default-sentinel): - Change style of an additional error message. - (twittering-http-get-list-index-sentinel): Likewise. - (twittering-http-post-default-sentinel): Likewise. - -2010-03-03 Tadashi MATSUO - - * twittering-mode.el (twittering-toggle-reverse-mode): invoke - `twittering-render-timeline' correctly. - - * twittering-mode.el (twittering-make-display-spec-for-icon): add - 2 pixels margin to icons in order to make the cursor stand out. - -2010-03-01 Satoshi Yatagawa - - * twittering-mode.el: Add a support of direct messages (which was - originally written by me in 2010-02-16) - - * twittering-mode.el (twittering-xmltree-to-status): Convert a XML - tree retrieved with "direct_messages{,/sent}" request into a list - of status alists which is retrieved from a standard timeline. - (twittering-host-method-to-timeline-spec): Add condition for - `direct_messages' and `direct_messages_sent'. - (twittering-timeline-spec-to-host-method): Modify condition for - `direct_messages' and `direct_messages_sent'. - - * twittering-mode.el (twittering-status-format): Modify the - meaning of the specifier "%r" to display a recipient on both - `direct_messages' and `direct_messages_sent'. - - * twittering-mode.el (twittering-format-status): Add `url' - property for `direct_messages' and `direct_messages_sent'. - (twittering-get-status-url): Change the second argument ID as - optional. - (twittering-make-clickable-status-datum): Call it. - -2010-03-01 Tadashi MATSUO - - * twittering-mode.el (twittering-generate-formater): changed into - a function. - (twittering-generate-status-formater-base): likewise. - (twittering-generate-format-status-function): likewise. - - * twittering-mode.el (twittering-find-curl-program): replace - `find' with `memq' in order to execute this function without - loading `cl-seq.el' . - (twittering-start-http-session): likewise. - (twittering-goto-next-thing): likewise. - -2010-02-28 Tadashi MATSUO - - * twittering-mode.el (twittering-format-status-function-source): - new variable for the status format used for generating - `twittering-format-status-function'. - (twittering-format-status-function): new variable for - byte-compiled formating function. - (twittering-parse-format-string): new function. - (twittering-generate-formater): new macro for generating a lambda - expression for given a format string and specifiers. - (twittering-generate-status-formater-base): new macro for - generating a lambda expression for given a format string. - (twittering-generate-format-status-function): new macro for - generating format status function. - (twittering-update-status-format): new function for adjusting - `twittering-format-status-function' with the current value of - `twittering-status-format'. - (twittering-mode-init-variables): invoke - `twittering-update-status-format'. - (twittering-render-timeline): call - `twittering-update-status-format' before rendering statuses. - (twittering-format-status): changed into a function receiving one - argument. It only calls `twittering-format-status-function'. - -2010-02-27 Satoshi Yatagawa - - * twittering-mode.el (twittering-retweet): If `C-u' prefix is - given, `twittering-use-native-retweet' is temporarily reversed - before use. - (twittering-follow): Handle a prefix `C-u' correctly. - (twittering-favorite): Likewise. - - * twittering-mode.el (twittering-edit-cancel-status): Show a - message when cancelling a request. - (twittering-native-retweet): Likewise. - (twittering-follow): Likewise. - (twittering-favorite): Likewise. - -2010-02-26 Satoshi Yatagawa - - * twittering-mode.el (twittering-fill-string): Calculate a column - with `fill-prefix'. - -2010-02-25 Satoshi Yatagawa - - * twittering-mode.el (twittering-format-status): Use the return - value of the flet'ed function `attr' directly for the specifier - "%L", forgotten in the 2010-02-18 changing. - - * twittering-mode.el (twittering-retrieve-image): Check the return - value of `call-process-region'. - (twittering-make-display-spec-for-icon): Check the return value of - `twittering-retrieve-image'. - - * twittering-mode.el (twittering-format-status): Don't check - `twittering-image-data-table' here. - (twittering-format-status): Don't define `profile-image' as - flet'ed function for the specifier "%i". - - * twittering-mode.el (twittering-get-tweets): Don't call - `twittering-retrieve-image' here. - - * twittering-mode.el (twittering-retrieve-image): Bind - `url-show-status' locally to inhibit showing a progress message. - (twittering-tinyurl-get): Likewise. - - * twittering-mode.el (twittering-image-type): Don't use the - external command `file' because Emacs can display only an image - which is recongnized by `image-type-from-data'. - (twittering-retrieve-image): Don't look up - `twittering-image-data-table' here. - (twittering-make-display-spec-for-icon): Call - `twittering-retrieve-image' only when `gethash' returns nil. - -2010-02-22 Satoshi Yatagawa - - * twittering-mode.el (twittering-atom-xmltree-to-status-datum): - Call `twittering-decode-html-entities' to decode entities - properly. - - * twittering-mode.el (twittering-get-error-message): Change the - first argument to `buffer' from `proc'. - (twittering-http-get-default-sentinel): Adjust callers. - (twittering-http-get-list-index-sentinel): Likewise. - (twittering-http-post-default-sentinel): Likewise. - -2010-02-20 Satoshi Yatagawa - - * twittering-mode.el (twittering-current-timeline-spec): Check - `spec-string' is a string before calling - `twittering-string-to-timeline-spec'. - (twittering-get-and-render-timeline): Likewise. - (twittering-read-timeline-spec-with-completion): Likewise. - - * twittering-mode.el (twittering-read-timeline-spec-with-completion): - Return nil explicitly when `twittering-string-to-timeline-spec' - return nil. - - * twittering-mode.el (twittering-retrieve-image): Use `unless' - instead of `when'. - (twittering-icon-mode): Likewise. - (twittering-scroll-mode): Likewise. - (twittering-jojo-mode): Likewise. - (twittering-toggle-reverse-mode): Likewise. - -2010-02-19 Satoshi Yatagawa - - * twittering-mode.el (twittering-delete-ca-cert-file): New defun. - (twittering-ensure-ca-cert): Add it as a hook into - `kill-emacs-hook'. - - * twittering-mode.el (twittering-get-error-message): New defun to - pickup an error message from a xmltree. - (twittering-http-get-default-sentinel): Use it. - (twittering-http-get-list-index-sentinel): Likewise. - (twittering-http-post-default-sentinel): Likewise. - - * twittering-mode.el (twittering-http-get-list-index-sentinel): - Call `twittering-get-response-body' instead of `xml-parse-region'. - -2010-02-19 Tadashi MATSUO - - * twittering-mode.el (twittering-set-window-end): use - `window-text-height' instead of `window-body-height' for Emacs21. - -2010-02-18 Satoshi Yatagawa - - * twittering-mode.el (twittering-native-retweet): Add a margin for - wide characters. - (twittering-favorite): Likewise. - - * twittering-mode.el (twittering-extract-timeline-spec): Delete an - unused argument to `error'. - - * twittering-mode.el (twittering-format-status): Use the return - value of the flet'ed function `attr' directly for the specifier - "%r". - (twittering-format-status): Reverse condition for the specifier - "%R". - - * twittering-mode.el (twittering-lookup-http-start-function): New - defun to decide a connection method from currently available - methods. - (twittering-connection-type-table): New defvar. - (twittering-connection-type-order): Likewise. - - * twittering-mode.el (twittering-curl-program): New defvar to - cache a result of `twittering-find-curl-program'. - (twittering-start-http-session-curl-p): New defun. - (twittering-start-http-session-curl-https-p): Likewise. - (twittering-start-http-session-curl): Rename from - `twittering-start-http-ssl-session'. - (twittering-start-http-session-native): Rename from - `twittering-start-http-non-ssl-session'. - -2010-02-18 Tadashi MATSUO - - * twittering-mode.el (twittering-current-timeline-spec): return - nil if `twittering-current-timeline-spec-string' returns nil. - (twittering-current-timeline-data): return nil if - `twittering-current-timeline-spec' returns nil. - (twittering-extract-timeline-spec): raise an error if the argument - `str' is nil. - -2010-02-17 Satoshi Yatagawa - - * twittering-mode.el (twittering-extract-timeline-spec): Check STR - is non-nil first for avoiding an error caused by `string-match'. - - * twittering-mode.el (twittering-icon-mode): Add an argument "P" - to `interactive'. - (twittering-scroll-mode): Likewise. - (twittering-jojo-mode): Likewise. - (twittering-toggle-reverse-mode): Likewise. - -2010-02-16 Satoshi Yatagawa - - * twittering-mode.el (twittering-timeline-spec-to-string): Replace - `-' with `_' in symbol name `direct-messages' and - `direct-messages-sent' to fit the parameters of twitter API. - (twittering-extract-timeline-spec): Likewise. - (twittering-timeline-spec-primary-p): Likewise. - (twittering-timeline-spec-to-host-method): Likewise. - (twittering-timeline-spec-alias): Likewise in a comment. - - * twittering-mode.el (twittering-icon-mode): Call - `twittering-update-mode-line' and `twittering-render-timeline' - only when mode was changed. - (twittering-scroll-mode): Likewise. - (twittering-jojo-mode): Likewise. - (twittering-toggle-reverse-mode): Likewise. - -2010-02-16 Tadashi MATSUO - - * twittering-mode.el (twittering-get-first-status-head): return - nil if no statuses are rendered in the current buffer. - (twittering-goto-first-status): go to the beginning of buffer if - no statuses are rendered in the current buffer. - (twittering-render-timeline): render tweets from the beginning of - buffer if no statuses are rendered. - - * twittering-mode.el (twittering-reverse-mode): new variable for - reverse alignment of tweets in timeline. - (twittering-update-mode-line): add "reverse" to mode-line. - (twittering-render-timeline): support reverse alignment of - statuses. - (twittering-toggle-reverse-mode): new interactive function to - toggle reverse mode. - (twittering-goto-next-status): support reverse mode. - (twittering-goto-previous-status): likewise. - (twittering-set-window-end): add new function. - -2010-02-15 Satoshi Yatagawa - - * twittering-mode.el (twittering-http-get-list-index-sentinel): - Get a listname from `slug' element which is only in `list' node. - -2010-02-15 Tadashi MATSUO - - * twittering-mode.el (twittering-get-and-render-timeline): copy - spec-string and clear its text properties. - - * twittering-mode.el (twittering-http-default-sentinel): use - buffer object directly. - (twittering-http-get-default-sentinel): likewise. - - * twittering-mode.el (twittering-current-timeline): keep the - current timeline spec string. - - * twittering-mode.el (twittering-switch-timeline): adjust the - current timeline spec string to the given `spec-string' even if - they mean the same timeline. - - * twittering-mode.el (twittering-http-get-default-sentinel): - invoke `twittering-render-timeline' only if necessary. - (twittering-add-statuses-to-timeline-data): return newly retrieved - statuses. - - * twittering-mode.el (twittering-render-timeline): receive - `timeline-data' as an optional argument. - (twittering-http-get-default-sentinel): invoke - `twittering-render-timeline' with new statuses. - -2010-02-14 Tadashi MATSUO - - * twittering-mode.el (twittering-get-usernames-from-timeline): new - function for collecting user screen names in a timeline. - (twittering-make-list-from-assoc): removed. - (twittering-read-username-with-completion): use - `twittering-get-usernames-from-timeline' instead of - `twittering-make-list-from-assoc'. - (twittering-read-timeline-spec-with-completion): likewise. - -2010-02-14 Satoshi Yatagawa - - * twittering-mode.el (twittering-http-get-list-index-sentinel): - Parse current-buffer as a xmltree. - -2010-02-14 Tadashi MATSUO - - * twittering-mode.el (twittering-current-timeline-spec-string): - new variable for storing the current timeline spec string. - (twittering-last-requested-timeline-spec-string): removed. - (twittering-last-retrieved-timeline-spec-string): removed. - (twittering-set-current-timeline-spec-string): new function for - referring the current timeline spec string. - (twittering-current-timeline-spec-string): new function for - referring the current timeline spec. - (twittering-switch-timeline-if-necessary): new function for - switching timeline. - (twittering-mode-init-variables): explicitly initialize the - current timeline spec. - (twittering-http-get-default-sentinel): store the retrieved - timeline even if it is not the current timeline. - (twittering-get-and-render-timeline): switch timeline just after - requested. - (twittering-erase-old-statuses): reimplemented. - (twittering-update-mode-line): use - `twittering-current-timeline-spec-string'. - (twittering-add-timeline-history): likewise. - (twittering-current-timeline): likewise. - (twittering-goto-next-status): likewise. - - * twittering-mode.el (twittering-add-statuses-to-timeline-data): - integrated with `twittering-cache-status-datum'. - (twittering-cache-status-datum): removed. - -2010-02-13 Tadashi MATSUO - - * twittering-mode.el (twittering-mode-init-variables): make local - variables by using `make-local-variable' in order to initialize - the variables with the global values when invoking - `twittering-mode'. You can initialize `twittering-icon-mode', - `twittering-jojo-mode' and `twittering-scroll-mode' by using - `setq' in your `.emacs'. - -2010-02-12 Tadashi MATSUO - - * twittering-mode.el (twittering-format-status): remove a newline - from `icon-string' that underlies the icon image. - (twittering-status-format): add a newline to the default value in - order to keep the interval of displayed tweets. - -2010-02-12 Satoshi Yatagawa - - * twittering-mode.el (twittering-get-tweets): Add optional - argument `since_id'. - (twittering-get-and-render-timeline): Adjust callers. - (twittering-get-tweets): Set parameter `since_id' instead of - `since' because twitter API had dropped support for `since' - parameter on 2009-04-08. - (twittering-http-get-default-sentinel): Modify the condition for - if retrieving statuses is nil. - (twittering-erase-old-statuses): Don't add parameter `since'. - (twittering-status-to-status-datum): No longer use - `twittering-timeline-last-update'. - (twittering-get-and-render-timeline): Likewise. - (twittering-timeline-last-update): Delete variable. - (twittering-local-strftime, twittering-global-strftime): Delete - functions. - (twittering-setftime): Delete function. - - * twittering-mode.el (twittering-get-status-from-http-response): - No longer make a reverse list. - (twittering-http-get-default-sentinel): Adjust callers. - -2010-02-12 Tadashi MATSUO - - * twittering-mode.el - (twittering-find-processes-for-timeline-spec): new function for - finding processes retrieving a specific timeline spec. - (twittering-remove-inactive-processes): new function for removing - inactive processes from `twittering-process-info-alist'. - (twittering-process-active-p): new function for checking whether - the processes for a specific timeline spec are active or not. - (twittering-get-and-render-timeline): use - `twittering-process-active-p' instead of referring - `twittering-process-info-alist' directly. - - * twittering-mode.el (twittering-http-get-default-sentinel): run - `twittering-new-tweets-hook' even if the retrieval is - non-interactive. - - * twittering-mode.el (twittering-timeline-data): removed. - (twittering-current-timeline-spec): new function for the current - timeline spec. - (twittering-current-timeline-data): new function for the current - timeline data. - (twittering-remove-timeline-data): new function for clearing a - specific timeline data from `twittering-timeline-data-table`. - (twittering-add-statuses-to-timeline-data): new function for - adding statuses to `twittering-timeline-data-table'. - (twittering-http-get-default-sentinel): use - `twittering-add-statuses-to-timeline-data'. - (twittering-cache-status-datum): change the third argument into - non-optional because the global `twittering-timeline-data' is - obsoleted. - (twittering-get-and-render-timeline): do not modify - `twittering-timeline-data'. - (twittering-render-timeline): use - `twittering-current-timeline-data' instead of - `twittering-timeline-data'. - (twittering-erase-old-statuses): likewise. - (twittering-read-username-with-completion): likewise. - (twittering-read-timeline-spec-with-completion): likewise. - -2010-02-11 Tadashi MATSUO - - * twittering-mode.el (twittering-fill-string): load "kinsoku.el" - in advance if necessary. - -2010-02-11 Satoshi Yatagawa - - * twittering-mode.el: No longer clear fetched timeline when - switching to another timeline. - - * twittering-mode.el (twittering-timeline-data-table): New defvar. - (twittering-http-get-default-sentinel): Save current timeline into - `twittering-timeline-data-table' when retrieving it successfully. - (twittering-get-and-render-timeline): Load target timeline from - `twittering-timeline-data-table' when switching to another - timeline. - -2010-02-10 Satoshi Yatagawa - - * twittering-mode.el (twittering-status-not-blank-p): Fix the - regexp for case of "text @user". - - * test/test-twittering-mode.el (test-status-not-blank-p): Add a - testcase. - - * twittering-mode.el (twittering-setup-proxy): Return t explicitly - when the proxy related configurations are consistent. - (twittering-toggle-proxy): Call `twittering-setup-proxy'. - -2010-02-09 Satoshi Yatagawa - - * twittering-mode.el (twittering-http-get-default-sentinel): Get a - buffer associate with the process from calling `process-buffer' - instead of `current-buffer'. - - * twittering-mode.el (twittering-edit-cancel-status): Confirm - before calling `twittering-edit-close' when an edit buffer was - modified. - (twittering-update-status-from-pop-up-buffer): Mark an edit buffer - as unmodified. - - * twittering-mode.el (twittering-edit-length-check): Calculate - length of a tweet with a sign string. - - * twittering-mode.el (twittering-native-retweet): Truncate a tweet - by width instead of length. - (twittering-favorite): Likewise. - - * twittering-mode.el (twittering-http-default-sentinel): Get a - buffer associate with the process from calling `process-buffer' - instead of taking from an argument. - (twittering-http-default-sentinel): Delete an unnecessary - argument. - (twittering-start-http-ssl-session): Adjust callers. - (twittering-start-http-non-ssl-session): Likewise. - -2010-02-09 Tadashi MATSUO - - * twittering-mode.el (twittering-goto-previous-status): simplified. - - * twittering-mode.el (twittering-goto-next-status): retrieve - additional statuses if the function is called at the end of the - buffer. - - * twittering-mode.el (twittering-render-timeline): use `insert' - when inserting a status at the end of the buffer in order to keep - the marker pointing the end of the buffer. - - * twittering-mode.el (twittering-render-timeline): move the - position correctly even if the buffer is invisible. - -2010-02-08 Satoshi Yatagawa - - * twittering-mode.el (twittering-http-default-sentinel): Delete a - call to `twittering-release-process' in the BODYFORM to avoid a - double release. - -2010-02-08 Tadashi MATSUO - - * twittering-mode.el (twittering-http-default-sentinel): call - `twittering-release-process' even if some errors happen. - (twittering-http-get-default-sentinel): remove invocation of - `twittering-release-process'. - -2010-02-08 Satoshi Yatagawa - - * twittering-mode.el (twittering-http-get-default-sentinel): Call - `twittering-release-process' when status code is not equal to - "200", forgotten in the 2010-02-06 changing. - - * twittering-mode.el (twittering-status-to-status-datum): Change - `regex-index' variable to local scope from global one. - (twittering-status-to-status-datum): Rename `regex-index' to - `regexp-index'. - - * twittering-mode.el (debug-print): Reduce redundant calls of - `insert' because it can take multiple arguments. - (debug-printf): Remove an unnecessary call to `concat' because - `insert' can take multiple arguments. - - * twittering-mode.el (twittering-extract-timeline-spec): Fix the - regexp for "search" timeline spec; same as for "filter". - - * twittering-mode.el (twittering-make-clickable-status-datum): - When trying to add a text property to `source', check it is - non-nil first for avoiding an error caused by `string-match'. - -2010-02-07 Tadashi MATSUO - - * test/test-twittering-mode.el (test-format-status): replace the - format specifier "%t" with "%T". - - * twittering-mode.el (twittering-extract-timeline-spec): fix the - regexp for "filter" timeline spec. - * test/test-twittering-mode.el (timeline-spec): add a test for - trailing backslashes. - - * twittering-mode.el (twittering-extract-timeline-spec): add error - messages for some conditions. - - * twittering-mode.el - (twittering-read-timeline-spec-with-completion): fix the regexp - for judging whether a list name is required or not. - - * twittering-mode.el - (twittering-read-timeline-spec-with-completion): catch errors on - interpreting timeline spec string. - -2010-02-07 Satoshi Yatagawa - - * twittering-mode.el (twittering-http-get): Add an optional - argument for a response data format. - (twittering-http-post): Likewise. - (twittering-get-list-index): Adjust callers. - (twittering-http-post): Delete unused argument `contents'. - - * twittering-mode.el (twittering-http-get-default-sentinel): Check - status-code here instead of `twittering-http-default-sentinel'. - (twittering-http-get-list-index-sentinel): Likewise. - (twittering-http-post-default-sentinel): Likewise. - (twittering-http-default-sentinel): Adjust callers. - - * twittering-mode.el (twittering-http-get-list-index-sentinel): - Set a null string explicitly if user does not have a list. - -2010-02-06 Satoshi Yatagawa - - * twittering-mode.el (twittering-http-default-sentinel): New defun - to share code between `twittering-http-get-default-sentinel', - `twittering-http-get-list-index-sentinel', and - `twittering-http-post-default-sentinel'. - (twittering-http-get-default-sentinel): Adjust function. - (twittering-http-get-list-index-sentinel): Likewise. - (twittering-http-post-default-sentinel): Likewise. - (twittering-start-http-ssl-session): Adjust callers. - (twittering-start-http-non-ssl-session): Likewise. - -2010-02-06 Satoshi Yatagawa - - * twittering-mode.el (twittering-edit-post-status): Don't add - parameter `in_reply_to_status_id' if the tweet does not begin - with `@'. - (twittering-update-status-from-minibuffer): Likewise. - - * twittering-mode.el (twittering-status-not-blank-p): Fix a regexp - pattern for USER. - (twittering-status-to-status-datum): Likewise. - (twittering-http-get-list-index-sentinel): Change a regexp pattern - for LISTNAME. - -2010-02-06 Tadashi MATSUO - - * twittering-mode.el (twittering-get-and-render-timeline): ignore - non-interactive request if a process is waiting for responses. - - * twittering-mode.el (twittering-mode): set `buffer-read-only' to - t explicitly. - (twittering-render-timeline): bind `buffer-read-only' with `let*' - locally. - -2010-02-05 Satoshi Yatagawa - - * twittering-mode.el (twittering-update-status-from-pop-up-buffer): - Use the current hashtag if set; same as - `twittering-update-status-from-minibuffer'. - -2010-02-05 Tadashi MATSUO - - * twittering-mode.el (twittering-format-status): replace a lacked - property by an empty string. - - * twittering-mode.el (twittering-get-status-from-http-response): - use ATOM format instead of JSON format. - (twittering-atom-xmltree-to-status-datum): new function for - converting an entry of ATOM into a status alist. - (twittering-atom-xmltree-to-status): new function for converting a - XML tree of ATOM into a list of status alists. - (twittering-json-to-status-datum): removed. - (twittering-json-to-status): removed. - (twittering-get-tweets): retrieve "search" timeline in ATOM format - instead of JSON format. - (twittering-get-and-render-timeline): remove dependence on - `json.el'. - (twittering-search): likewise. - -2010-02-04 Tadashi MATSUO - - * twittering-mode.el (twittering-status-to-status-datum): assign a - retweet the ID issued when it is retweeted. `source-id', which is - the ID of the original tweet, is also assigned to the retweet. - (twittering-cache-status-datum): do not register multiple retweets - referring the same tweet. - - * twittering-mode.el (twittering-http-get-default-sentinel): make - a hash table for already retrieved IDs. - (twittering-cache-status-datum): use a hash table of IDs to avoid - registering redundant tweets. - - * twittering-mode.el (twittering-status-to-status-datum): fix - lacked binding of `source-id' and `source-created-at'. - - * twittering-mode.el (twittering-cache-status-datum): register IDs - with ID-TABLE when a tweet is added to DATA-VAR. This prevents - duplicated tweets in one retrieval from being registered. - -2010-02-03 Tadashi MATSUO - - * twittering-mode.el (twittering-http-get-default-sentinel): sort - `twittering-timeline-data' by ID. - -2010-02-03 Satoshi Yatagawa - - * twittering-mode.el (twittering-status-to-status-datum): Don't - rewrite `created-at' by a same name element in `retweeted_status' - node. - -2010-02-02 Satoshi Yatagawa - - * twittering-mode.el (twittering-get-response-body): Add an - optional second argument to share code between this and - `twittering-get-response-body-string'. - (twittering-get-response-body-string): Delete function. - (twittering-get-status-from-http-response): Adjust callers. - -2010-02-02 Tadashi MATSUO - - * twittering-mode.el (twittering-http-get-default-sentinel): use - `twittering-get-status-from-http-response'. - (twittering-get-status-from-http-response): new function for - extracting statuses from HTTP response. - (twittering-get-tweets): use - `twittering-http-get-default-sentinel' for the "search" timeline - spec. - (twittering-http-get-search-sentinel): removed. - -2010-01-31 Tadashi MATSUO - - * twittering-mode.el (twittering-http-get-default-sentinel): - rearranged. - - * twittering-mode.el (twittering-start-http-ssl-session): return - the process object. - (twittering-start-http-non-ssl-session): likewise. - (twittering-get-tweets): likewise. - - * twittering-mode.el (twittering-process-info-alist): new variable - for managing active process and timeline spec being retrieved by - the process. - (twittering-register-process): new function for registering a pair - of process and timeline spec. - (twittering-release-process): new function for releasing a process. - (twittering-get-timeline-spec-from-process): new function for - getting timeline spec retrieved by the given process. - (twittering-http-get-default-sentinel): discard statuses if - the retrieved spec differs from the last requested one. - (twittering-get-and-render-timeline): register a pair of the - requested timeline spec and process for retrieving it. - -2010-01-30 Tadashi MATSUO - - * twittering-mode.el (twittering-fill-string): use `frame-width' - only if no windows display the `*twittering*' buffer. - - * twittering-mode.el (twittering-for-each-property-region): new - function to process each region with a certain property. - - * twittering-mode.el (twittering-timer-for-redisplaying): new - variable for timer of redisplaying statuses. - (twittering-timer-interval-for-redisplaying): new variable - specifying the interval of redisplaying statuses. - (twittering-redisplay-status-on-buffer): new function to redisplay - statuses on buffer. - (twittering-format-status): append `need-to-be-update' property to - the specifier "%@" and "%FILL{...}" including "%@". - (twittering-start): start the timer of redisplaying statuses. - (twittering-stop): stop the timer of redisplaying statuses. - - * twittering-mode.el (twittering-make-passed-time-string): new - function to generate a string displayed as passed time of a - status. - (twittering-format-status): use - `twittering-make-passed-time-string' for the specifier "%@". - -2010-01-29 Daiji Kanematsu - - * twittering-mode.el (toplevel): add `easy-menu-define' in order - to add the menu `Twitter'. - -2010-01-29 Satoshi Yatagawa - - * twittering-mode.el (twittering-fill-string): Add an extra - argument to `min' for avoiding error "Wrong number of arguments: - min, 0". - - * twittering-mode.el (twittering-extract-timeline-spec): On - search-mode, return a spec only when the length of `escaped-query' - is greater than zero. - -2010-01-28 Tadashi MATSUO - - * twittering-mode.el (twittering-render-timeline): simplified by - using `insert-before-markers' instead of `insert'. This removes - additional movement of points for scroll-mode. - -2010-01-26 Satoshi Yatagawa - - * twittering-mode.el (twittering-status-to-status-datum): Add - `original-user-name' and `original-user-screen-name' to return - an alist; fix an incomplete merge on 2010-01-22. - (twittering-json-to-status-datum): Likewise. - - * twittering-mode.el (twittering-json-to-status-datum): Use - `retweeted-status-data' as variable instead of `retweeted-status'; - same as `twittering-status-to-status-datum'. - -2010-01-26 Satoshi Yatagawa - - * twittering-mode.el (toplevel): Require 'unicode explicitly on - Emacs21. See a comment of `twittering-ucs-to-char' for more - details. - (twittering-ucs-to-char): Check (featurep 'unicode) instead of - (featurep 'mucs). - (twittering-ucs-to-char): Update comment. - - * twittering-mode.el (toplevel): On Emacs21, always call - `set-terminal-coding-system'. - -2010-01-25 Satoshi Yatagawa - - * twittering-mode.el (twittering-format-status): Call - `twittering-make-display-spec-for-icon' only when `window-system' - is non-nil to avoid error "Non-X frame used" under Emacs which is - using a text-only terminal. - -2010-01-25 Tadashi MATSUO - - * twittering-mode.el (twittering-extract-timeline-spec): add new - timeline spec string for hashtag. - -2010-01-23 Satoshi Yatagawa - - * twittering-mode.el (twittering-json-to-status-datum): Don't - refer to `twittering-use-native-retweet'; same as - `twittering-status-to-status-datum'. - -2010-01-23 Naohiro Aota - - * twittering-mode.el (twittering-home-timeline): Add new funciton. - -2010-01-23 Tadashi MATSUO - - * twittering-mode.el (twittering-fill-string): adjust - `fill-column' to the minimum width of windows displaying - `*twittering*' buffer. Thanks to Naohiro Aota. - - * twittering-mode.el (twittering-render-timeline): take account of - multiple windows displaying `*twittering*' buffer. - Thanks to Naohiro Aota. - - * twittering-mode.el (twittering-format-status): fix an incorrect - index on filling text for the specifier "%t". - -2010-01-24 Tadashi MATSUO - - * twittering-mode.el (twittering-extract-timeline-spec): support - functional alias. - -2010-01-23 Tadashi MATSUO - - * twittering-mode.el (twittering-timeline-spec-to-host-method): - return query string as a element of returned list. - (twittering-host-method-to-timeline-spec): receive query string as - a optional argument. - (twittering-http-get): remove special adjustment for search - method, which is now unnecessary. - (twittering-get-tweets): always receive query string as an - argument for search method. - (twittering-get-search): removed. - (twittering-get-and-render-timeline): send query string if the - given spec is `search'. - (twittering-search): execute search via - `twittering-get-and-render-timeline'. - - * twittering-mode.el (twittering-timeline-spec-to-string): modify - the string format of `search' spec. - (twittering-extract-timeline-spec): likewise. - -2010-01-22 Satoshi Yatagawa - - * twittering-mode.el (twittering-initial-timeline-spec-string): - Change value to ":home" from ":friends". - - * twittering-mode.el (twittering-status-to-status-datum): Don't - refer to `twittering-use-native-retweet'. - - * twittering-mode.el (twittering-http-get-list-index-sentinel): - Fix a reference to `mes' as a variable, not as a function. - -2010-01-22 Tadashi MATSUO - - * twittering-mode.el (twittering-fill-string): add new function - for generating filled string. - (twittering-format-status): use `twittering-fill-string'. - (twittering-render-timeline): remove unnecessary binding of the - variable `fill-column'. - -2010-01-22 Satoshi Yatagawa - - * twittering-mode.el: Add search support (which was originally - written by Kensuke Matsuzaki in December 2009) - - * twittering-mode.el (twittering-json-to-status-datum): Add code - for native retweets. - (twittering-http-get-search-sentinel): Sync with HEAD. - (twittering-get-response-body-string): Likewise. - - * twittering-mode.el (twittering-get-tweets): Rewrite to match - this to the new-timeline spec. - (twittering-get-search): Call `twittering-get-tweets' instead of - `twittering-http-get' - (twittering-search): Call `twittering-get-search' instead of - `twittering-get-tweets'. - - * twittering-mode.el (twittering-timeline-spec-to-string): Add a - condition for search-mode. - (twittering-extract-timeline-spec): Likewise. - (twittering-timeline-spec-to-host-method): Likewise. - (twittering-host-method-to-timeline-spec): Likewise. - - * twittering-mode.el (twittering-http-get): Add an adjusting code. - In search-mode, a `method' variable is now contains a query word - for internal use. For this reason, we must adjust it before pass - it into `twittering-start-http-session'. - -2010-01-21 Satoshi Yatagawa - - * twittering-mode.el: Add a fail statement to work again under - Emacs21 without Mule-UCS. - (toplevel): Don't abort if require failed. - (twittering-ucs-to-char): Return `?' explicitly if `decode-char' - failed. - - * twittering-mode.el (twittering-get-tweets): Rename from - `twittering-get-twits'. - (twittering-get-and-render-timeline): Adjust callers. - (twittering-new-tweets-hook): Fix a docstring. - -2010-01-21 Tadashi MATSUO - - * twittering-mode.el (twittering-render-timeline): reduce - redundant calls of `goto-char'. - - * twittering-mode.el (twittering-render-timeline): fix logic for - inserting statuses not to duplicate the last status. - -2010-01-20 Satoshi Yatagawa - - * twittering-mode.el (twittering-http-get-default-sentinel): Show - the reason phrase with status code if status code is not equal to - "200"; same as `twittering-http-post-default-sentinel'. - (twittering-http-get-list-index-sentinel): Likewise. - - * twittering-mode.el (twittering-http-status-line-regexp): New - defconst to share this between several functions. The regexp - pattern to obey to RFC 2616. - (twittering-http-get-default-sentinel): Use it. - (twittering-http-post-default-sentinel): Likewise. - (twittering-http-get-list-index-sentinel): Likewise. - - * twittering-mode.el (twittering-tinyurl-get): Remove an - unnecessary call to `concat'. - - * twittering-mode.el (twittering-update-jojo): Make a tweet by - `twittering-ucs-to-char' instead of `string-as-multibyte'. - -2010-01-19 Tadashi MATSUO - - * twittering-mode.el (twittering-get-first-status-head): add. - (twittering-goto-first-status): add. - (twittering-mode-map): bind `twittering-goto-first-status' to "H" - instead of `begininng-of-buffer'. - (twittering-render-timeline): use `twittering-goto-first-status'. - -2010-01-18 Satoshi Yatagawa - - * twittering-mode.el (twittering-ucs-to-char): Add a workaround - with navi2ch prior to 1.8.3, which is currently last release - version as of 2010-01-18. The problem is fixed in navi2ch dated - 2010-01-16 or later, but not released yet. - -2010-01-17 Tadashi MATSUO - - * twittering-mode.el (twittering-format-status): fix the regexp - for the specifier "%FILL{...}" to accept pairs of braces inside of - "{...}". - - * twittering-mode.el (twittering-format-status): add new format - decorator "%FACE[face-name]{...}", which decorates braced strings - with the specified face. - - * twittering-mode.el (twittering-render-timeline): support - additional rendering. - (twittering-http-get-default-sentinel): send the additional - argument `same-timeline' to `twittering-render-timeline'. - (twittering-status-id<): add new function for comparing two ids. - (twittering-status-id=): likewise. - -2010-01-16 Satoshi Yatagawa - - * twittering-mode.el (twittering-get-response-header): Delete an - adjusting code bacause `with-current-buffer' that can accept both - a buffer and a buffer name. - (twittering-get-response-body): Likewise. - -2010-01-16 Tadashi MATSUO - - * twittering-mode.el (twittering-format-status): fix incorrect - destructive modification of the replacement table for the - specifier "%FILL{...}". - -2010-01-16 Yuto Hayamizu - - * twittering-mode.el (twittering-edit-setup-help): use 0-witdh - overlay to display help. - (twittering-edit-mode, twittering-edit-post-status): do not use - newline chars for help-overlay anymore. - (twittering-edit-post-status): probihit posting over 140 chars - tweets. - -2010-01-15 Yuto Hayamizu - - * twittering-mode.el: changed URL - -2010-01-15 Satoshi Yatagawa - - * twittering-mode.el (twittering-edit-buffer): New defvar. - (twittering-update-status-from-pop-up-buffer): Use it. - - * twittering-mode.el (twittering-buffer-active-p): New defun. - (twittering-http-get-default-sentinel): Call it to show a - non-critical message on minibuffer only when current buffer is - twittering-mode related buffer. - (twittering-http-post-default-sentinel): Likewise. - (twittering-get-response-body): Likewise. - - * twittering-mode.el (twittering-buffer-active-p): Delete an - unnecessary code which is added for keep a backward compatibility. - -2010-01-15 Tadashi MATSUO - - * twittering-mode.el (twittering-get-next-status-head): add a - function finding the next head of status with `id' property. This - replaces `twittering-get-next-username-face-pos'. - (twittering-goto-next-status): use - `twittering-get-next-status-head' instead of - `twittering-get-next-username-face-pos'. - (twittering-goto-next-status-of-user): likewise. - - * twittering-mode.el (twittering-get-previous-status-head): add a - function finding the previous head of status with `id' - property. This replaces - `twittering-get-previous-username-face-pos'. - (twittering-goto-previous-status): use - `twittering-get-previous-status-head' instead of - `twittering-get-previous-username-face-pos'. - (twittering-goto-previous-status-of-user): likewise. - -2010-01-15 Yuto Hayamizu - - * twittering-mode.el (twittering-mode-identity): add. Identify - 'twittering-mode.el' by $Id$ tag. - -2010-01-14 Tadashi MATSUO - - * twittering-mode.el (twittering-remove-duplicates): check - availability of `delete-dups' by `fboundp' instead of - `emacs-major-version'. - -2010-01-14 Yuto Hayamizu - - * twittering-mode.el (twittering-format-status): add docstring - -2010-01-15 Yuto Hayamizu - - * twittering-mode.el (twittering-update-status-function): add - (twittering-update-status-from-pop-up-buffer): renamed from - twittering-edit-status - (twittering-update-status-interactive, twittering-enter) - (twittering-organic-retweet, twittering-direct-message): use - twittering-update-status-function - (twittering-mode-map): bind 'u' to - twittering-update-status-interactive - -2010-01-13 Tadashi MATSUO - - * twittering-mode.el (twittering-format-string): fix the search of - the key string following the prefix from a string including - newlines. - - * twittering-mode.el (twittering-format-status): remove a - newline as a separator of tweets. - (twittering-render-timeline): insert a newline as a separator of - tweets. - - * twittering-mode.el (twittering-format-status): add new format - specifier "%T", which is converted to the raw text. - - * twittering-mode.el (twittering-format-status): add new format - specifier "%FILL{...}", which applies `fill-region-as-paragraph' - to the strings in braces. - - * twittering-mode.el (twittering-status-format): use '%FILL{...}' - and '%T' for the default value instead of '%t'. - -2010-01-12 Yuto Hayamizu - - * test/run-test.sh (exit_status): add 'emacs' command to test - target emacsen - -2010-01-12 Tadashi MATSUO - - * twittering-mode.el (twittering-format-status): fill the text - with strings following "%t". - -2010-01-12 Yuto Hayamizu - - * test/test-twittering-mode.el (test-icon-mode): removed use of - twittering-tmp-dir - -2010-01-12 Satoshi Yatagawa - - * twittering-mode.el (twittering-start-http-session): Call - `twittering-find-curl-program' only when `twittering-use-ssl' is - non-nil. - - * twittering-mode.el (twittering-wget-buffer): Delete function. - (twittering-wget-buffer): Delete variable. - -2010-01-11 Tadashi MATSUO - - * twittering-mode.el (twittering-convert-program): initialize - without confirming whether `convert' comes from ImageMagick. - (twittering-mode-init-variables): confirm whether the found - `convert' is a part of ImageMagick or GraphicsMagick if - `twittering-use-convert' is non-nil. If the program does not come - from ImageMagick or GraphicsMagick, `twittering-use-convert' is - changed into nil. - -2010-01-10 Yuto Hayamizu - - * twittering-mode.el (twittering-convert-program): checks whether - 'convert' is a part of ImageMagick. Windows XP has 'convert.exe' - in WINDOWS/system32, which is a partition converter. - (twittering-use-convert): use the value of - twittering-convert-program - -2010-01-11 Tadashi MATSUO - - * twittering-mode.el (twittering-status-format): modify the - meaning of the specifier "%t" to remove implicit filling as a - paragraph. - (twittering-render-timeline): remove implicit filling a text as a - paragraph. In addition, a newline as a delimiter is added by - `twittering-format-status'. - (twittering-format-status): with "%t", fill a text as a paragraph. - This function adds a newline at the end of status instead of - `twittering-render-timeline'. Then, the newline as a delimiter - also has the same text properties as the body of the tweet. - -2010-01-10 Tadashi MATSUO - - * twittering-mode.el (twittering-remove-duplicates): add for - portability. - (twittering-completing-read): add a modified version of - `completing-read' that can accept candidates as a list of a string - on Emacs21. - (twittering-set-current-hashtag): use `twittering-completing-read' - instead of `completing-read'. - (twittering-read-username-with-completion): likewise. - (twittering-read-list-name): likewise. - (twittering-read-timeline-spec-with-completion): likewise. - -2010-01-10 Yuto Hayamizu - - * test/test-twittering-mode.el (test-status-not-blank-p): add a - testcase reproducing the bug of twittering-status-not-blank-p. - - * twittering-mode.el (twittering-use-native-retweet): renamed from - twittering-use-native-retweets - (twittering-status-not-blank-p): bug fix: return nil if a status - is ended by '@foo'. - - * twittering-mode.el (twittering-edit-post-status): add trailing - newlines to new history element because help-overlay need it. - - * twittering-mode.el (twittering-make-display-spec-for-icon): - returns nil if the type of the image is not supported. - -2010-01-09 Satoshi Yatagawa - - * twittering-mode.el (twittering-status-to-status-datum): Change - retweet related variables to local scope from global one. - - * twittering-mode.el (twittering-extract-timeline-spec): Change - syntax of error message to fit the GNU Emacs Lisp convention. - (twittering-timeline-spec-to-host-method): Likewise. - (twittering-get-and-render-timeline): Likewise. - - * twittering-mode.el (twittering-extract-timeline-spec): Remove an - unnecessary call to `format' because all arguments of `error' pass - to `format'. - (twittering-timeline-spec-to-host-method): Likewise. - (twittering-get-and-render-timeline): Likewise. - - * twittering-mode.el (twittering-read-username-with-completion): - Convert a list of username strings to an alist before calling - `completing-read' to work on Emacs21; same as - `twittering-read-timeline-spec-with-completion'. - - * twittering-mode.el (twittering-icon-path): Delete function. - -2010-01-09 Yuto Hayamizu - - * twittering-mode.el (twittering-edit-mode): setup - twittering-warning-overlay and after-change-functions - (twittering-edit-length-check): add. check length and set warning - overlay if the length exceeds 140 chars. - (twittering-edit-mode-map): fix keymap - (twittering-edit-extract-status): add. extract status from pop-up - buffer by removing trailing whitespace chars. - (twittering-edit-post-status): use edit-extract-status. - (twittering-edit-status): takes reply-to-id as a second argument - (twittering-enter, twittering-organic-retweet) - (twittering-direct-message, twittering-reply-to-user): use - twittering-edit-status - (twittering-edit-post-status): bug fix. - -2010-01-09 Tadashi MATSUO - - * twittering-mode.el (twittering-http-get-list-index-sentinel): - `save-excursion' had no effect because of the following - `set-buffer'. This is fixed so that `save-excursion' saves the - state of `temp-buffer'. - (twittering-get-response-header): Likewise. - (twittering-get-response-body): Likewise. - (twittering-tinyurl-get): Likewise. - (twittering-tinyurl-get): `buffer' are killed even if - `search-forward-regexp' fails. - -2010-01-09 Yuto Hayamizu - - * twittering-mode.el (twittering-edit-setup-help): add to setup - help overlay in pop-up buffer - (twittering-edit-next-history, twittering-edit-previous-history): - use twittering-edit-setup-help - -2010-01-08 Yuto Hayamizu - - * twittering-mode.el (twittering-percent-encode): bug fix: - '\n','\r','\t' were not encoded correctly. - -2010-01-08 Satoshi Yatagawa - - * twittering-mode.el (twittering-use-show-minibuffer-length): Add - suggestion into a docstring. - -2010-01-08 Yuto Hayamizu - - * twittering-mode.el (twittering-status-not-blank-p): bug fix: - always return nil with strings with trailing newline. - (twittering-edit-next-history): add. - (twittering-edit-previous-history, twittering-edit-history): add - history for pop-up buffer - (twittering-edit-mode-map): defined key for next/previous-history - (twittering-edit-mode): initialize local variables for history - (twittering-edit-mode): setup help string overlay - (twittering-edit-post-status): don't close buffer if tweet is - empty - -2010-01-08 Tadashi MATSUO - - * twittering-mode.el (twittering-image-type): Try to detect image - type with `image-type-from-data' at first. - (twittering-retrieve-image): Do not invoke `convert' if Emacs - supports the image type and resize is not required. - -2010-01-08 Yuto Hayamizu - - * twittering-mode.el (twittering-tmp-dir): delete - (twittering-icon-mode): don't make temp dir - (twittering-image-data-table): add. hash table where image data - are stored. key:( . ),value:( . ) - (twittering-use-wget): delete - (twittering-image-type): re-implemented. Now it just returns a - type of a given image. - (twittering-make-display-spec-for-icon): Now it receives image URL - as an argument. - (twittering-retrieve-image): Now it receives image URL as an - argument. - (twittering-url-copy-file-async): delete - (twittering-retrieve-image-without-wget): delete - (twittering-retrieve-image-with-wget): delete - (twittering-retrieve-image): changed default image type from png - to xpm - (twittering-image-type): bug fix in the case of bitmap - (twittering-retrieve-image): handle error of determining image - type. - (twittering-image-type): let case-fold-search is t. - - * url-emacs21/*: add url library for emacs21 - -2010-01-07 Yuto Hayamizu - - * twittering-mode.el (twittering-url-reserved-p): bug fix: some - reserved characters considered unreserved. Thanks to IMAI - Toshiyuki - (twittering-cert-file): add - (twittering-ensure-ca-cert): generate temporary file for CA certificate - -2010-01-06 Satoshi Yatagawa - - * twittering-mode.el (twittering-http-get-default-sentinel): Move - `debug-printf' to outside of `unwind-protect' because we expect - that mostly code of this function should be executed by way of - BODYFORM of `unwind-protect', not UNWINDFORM. - (twittering-http-post-default-sentinel): Likewise. - - * twittering-mode.el (twittering-http-get-list-index-sentinel): Add - `debug-printf' same as `twittering-http-get-default-sentinel'. - - * twittering-mode.el (twittering-status-not-blank-p): Fix and - modify a regexp pattern. - -2010-01-06 Tadashi MATSUO - - * twittering-mode.el - (twittering-read-timeline-spec-with-completion): return nil for - an invalid timeline spec string. The function is unified with - `twittering-read-timeline-spec-string-with-completion'. If the - argument `as-string' is non-nil, it returns a spec string. - (twittering-update-mode-line): the delimiter followed by a - timeline spec string on mode-line is changed to a whitespace. - (twittering-timeline-spec-bookmark): new variable for timeline - spec bookmark. - (twittering-extract-timeline-spec): support timeline spec - bookmark. - (twittering-equal-string-as-timeline): add. - (twittering-get-and-render-timeline): accept a timeline spec - string as well as a S-expression. - `twittering-last-requested-timeline-spec' will be updated even if - the requested spec essentially equals to the current one. - (twittering-initial-timeline-spec): replaced by - `twittering-initial-timeline-spec-string'. - (twittering-last-requested-timeline-spec): replaced by - `twittering-last-requested-timeline-spec-string'. - (twittering-last-retrieved-timeline-spec): replaced by - `twittering-last-retrieved-timeline-spec-string'. - (twittering-initial-timeline-spec-string): added to replace - `twittering-initial-timeline-spec'. - (twittering-last-requested-timeline-spec-string): added to replace - `twittering-last-requested-timeline-spec'. - (twittering-last-retrieved-timeline-spec-string): added to replace - `twittering-last-retrieved-timeline-spec'. - (twittering-last-timeline-spec-string): removed. - (twittering-visit-timeline): call - `twittering-get-and-render-timeline' with a timeline spec string - just as it has been input by the user. - (twittering-extract-timeline-spec): `bookmark' is renamed `alias'. - (twittering-timeline-spec-alias): this variable replaces - `twittering-timeline-spec-bookmark'. - - * test/test-twittering-mode.el (timeline-spec): add tests of - timeline spec normalization. - -2010-01-04 Satoshi Yatagawa - - * twittering-mode.el (twittering-get-response-header): Change - syntax of error message to fit the GNU Emacs Lisp convention. - (twittering-get-response-body): Likewise. - (twittering-tinyurl-get): Likewise. - - * twittering-mode.el (twittering-start-http-session): Change - syntax of question message to fit the GNU Emacs Lisp convention. - - * twittering-mode.el (twittering-user-agent-default-function): Use - `format' instead of `concat' to easy understand. - (twittering-sign-string-default-function): Likewise. - - * twittering-mode.el (twittering-start-http-session): Remove an - unnecessary call to `format' because all arguments of `error' pass - to `format'. - (twittering-make-http-request): Likewise. - (twittering-url-copy-file-async): Likewise. - -2010-01-04 Tadashi MATSUO - - * twittering-mode.el (twittering-last-requested-timeline-spec): - new variable storing the last requested timeline spec. - (twittering-last-retrieved-timeline-spec): new variable storing - the last successfully retrieved timeline spec. - (twittering-last-timeline-retrieved): removed. - (twittering-last-host): removed. - (twittering-last-method): removed. - (twittering-convert-last-timeline-retrieved): removed. - (twittering-last-timeline-spec): removed. - (twittering-get-twits): do not update the information of the last - request. - (twittering-get-and-render-timeline): update the information of - the last request instead of `twittering-get-twits'. - (twittering-current-timeline): replace `twittering-get-twits' by - `twittering-get-and-render-timeline'. - (twittering-erase-old-statuses): replace `twittering-get-twits' by - `twittering-get-and-render-timeline'. - (twittering-initial-timeline-spec): new variable. - -2010-01-03 Tadashi MATSUO - - * twittering-mode.el, test/test-twittering-mode.el: rebase the - `timeline-spec' branch. The new timeline spec based on - S-expression is introduced. - - * twittering-mode.el (twittering-timeline-spec-to-string): add. - (twittering-extract-timeline-spec): add. - (twittering-string-to-timeline-spec): add. - (twittering-timeline-spec-singlep): add. - (twittering-timeline-spec-to-host-method): add. - (twittering-host-method-to-timeline-spec): add. - (twittering-last-timeline-spec): add. - (twittering-last-timeline-spec-string) - (twittering-add-timeline-history): modified for new timeline spec. - (twittering-update-mode-line): modified for new timeline spec. - (twittering-get-twits-with-timeline-spec): modified for new - timeline spec. - (twittering-read-timeline-spec-string-with-completion): add. - (twittering-read-timeline-spec-with-completion): modified for new - timeline spec. - (twittering-get-timeline, twittering-get-list): replaced with - `twittering-get-twits-with-timeline-spec'. - (twittering-get-and-render-timeline): renamed from - `twittering-get-twits-with-timeline-spec'. - - * test/test-twittering-mode.el (timeline-spec): add tests for new - timeline spec. - -2010-01-03 Michael D. Ivey - - * twittering-mode.el (twittering-retweet): Add support for native - retweets - -2010-01-03 Yuto Hayamizu - - * twittering-mode.el (twittering-tinyurl-get): more descriptive - error message - (twittering-url-copy-file-async): more descriptive error message - -2010-01-02 Alberto Garcia - - * twittering-mode.el (twittering-start-http-ssl-session): - Set noninteractive using lexical-let so the HTTP sentinel can - receive its value and `twittering-new-tweets-hook' works - correctly. - -2010-01-02 Satoshi Yatagawa - - * twittering-mode.el (twittering-use-show-minibuffer-length): New - defvar to enable/disable a function which is show the number of - charactors in minibuffer. - (twittering-update-status-from-minibuffer): Refer it to add/remove - hooks. - -2009-12-30 Yuto Hayamizu - - * test/server.rb: add. Twitter API and Proxy mock server - - * twittering-mode.el (twittering-get-response-header) - (twittering-get-response-body): Raise an error on broken - responses. - -2009-12-30 Tadashi MATSUO - - * twittering-mode.el (twittering-get-response-header): On failure, - the function returns an empty string instead of the whole contents - of the buffer. - (twittering-get-response-body): When the function fails to find - the tail of header, it returns nil without trying to parse a - region. - (twittering-find-proxy): add new function for - finding proxy. - (twittering-setup-proxy): add new function for configuring - `twittering-proxy-server' and `twittering-proxy-port' if they have - not been configured yet. - (twittering-mode-init-variables): invokes - `twittering-setup-proxy'. - -2009-12-30 Satoshi Yatagawa - - * twittering-mode.el (twittering-get-response-header): Correct a - reference to an unbound object. This problem was found by highmt. - -2009-12-30 Yuto Hayamizu - - * test/el-test-runner.el (with-network): add macro. body of - with-network is executed only when 'NETWORK' env var is set. - * twittering-mode.el (twittering-image-type): No temporary files - for resing images. Use standard in/out and temporary buffers - instead. - (twittering-convert-fix-size): set 48px as the default size of - icon images. - -2009-12-30 Tadashi MATSUO - - * twittering-mode.el (twittering-image-type): Don't generate - redundant temporary files. The image format is specified by - the command line instead of a file extension. - -2009-12-30 Satoshi Yatagawa - - * twittering-mode.el (twittering-image-type): Don't set a third - argument of `make-temp-file' to work on Emacs21. - -2009-12-29 Satoshi Yatagawa - - * twittering-mode.el (twittering-get-response-header): Add an - optional third argument for `search-forward-regexp'. - -2009-12-29 Yuto Hayamizu - - * twittering-mode 0.9.0 release - - * twittering-mode.el (twittering-start-http-session): check if - curl can use https or not. - (twittering-get-response-body): bug fix: goto the beginning of - buffer before search-forward. 'xml-parse-region' doesn't return - when parsing unbalanced XML. - (twittering-start-http-session): Use call-process instead of - shell-command-to-string. If 'curl-program' contains space - characters, shell-command fails. - -2009-12-29 Satoshi Yatagawa - - * twittering-mode.el (twittering-get-response-body): Return nil - explicitly when a broken XML data passed into `xml-parse-region'. - (twittering-http-get-default-sentinel): Adjust callers. - (twittering-http-post-default-sentinel): Likewise. - - * twittering-mode.el (twittering-http-post-default-sentinel): Add - `debug-printf' same as `twittering-http-get-default-sentinel'. - - * twittering-mode.el (twittering-http-post-default-sentinel): - Change a regexp pattern for HTTP response status line; same as - `twittering-http-get-default-sentinel'. - (twittering-http-get-list-index-sentinel): Likewise. - -2009-12-29 Yuto Hayamizu - - * twittering-mode.el: load mule-ucs if needed (emacs21) - (twittering-start-http-ssl-session): add 'Expect: ' header field - for avoiding '417 Expectation Failed' HTTP response error. See - http://d.hatena.ne.jp/imait/20091228/1262004813 and - http://www.escafrace.co.jp/blog/09/10/16/1008 - - * twittering-mode.el: load 'cl' only at compile - time. cf. http://www.gnu.org/software/emacs/manual/html_node/cl/Overview.html - -2009-12-28 Yuto Hayamizu - - * twittering-mode.el (twittering-get-response-header) - (twittering-get-response-body): inefficient code were - replaced. thanks to Tadashi MATSUO - -2009-12-27 Tadashi MATSUO - - * twittering-mode.el (twittering-show-minibuffer-length): keeps - activated mark from being forcefully deactivated. - -2009-12-27 Yuto Hayamizu - - * test/run-test.sh: add. invoke unit test for each emacsen - - * Makefile (check): add check rule. - - * test/el-test-runner.el (twittering-run-test): exit with - appropriate status code. - - * test.el (test-transform-body): add. transforms the body of - `defcase' recursively - (defcase): use `test-transform-body' - - * test/run-test.el (twittering-run-test): colorize resulting - outputs - -2009-12-27 Satoshi Yatagawa - - * twittering-mode.el (twittering-http-post-default-sentinel): - Check if buffer live-p before killing it. - (twittering-http-get-list-index-sentinel): Likewise. - - * twittering-mode.el (twittering-setup-minibuffer): Remove an - unnecessary call. - - * twittering-mode.el (twittering-other-user-list-interactive): Fix - condition to detect a cancel. - - * twittering-mode.el (twittering-http-get-list-index-sentinel): - Use `search-forward-regexp' instead of `search-forward' to fix a - meaningless search. - -2009-12-26 Tadashi MATSUO - - * twittering-mode.el (twittering-format-string): reimplement - without `block'. - (twittering-format-string): invokes a function in replacement - table with a context alist. - (twittering-retweet): replacement table is adapted to the new - `twittering-format-string'. - (twittering-format-status): reimplement with - `twittering-format-string'. - -2009-12-26 Yuto Hayamizu - - * twittering-mode.el (twittering-ensure-ca-cert): kludge for ssl - certificate problem. - (twittering-start-http-ssl-session): use - `twittering-ensure-ca-cert' - -2009-12-25 Satoshi Yatagawa - - * twittering-mode.el (twittering-show-minibuffer-length): Replace - `minibufferp' by `minibuffer-window-active-p' to work this on - Emacs21. - (twittering-show-minibuffer-length): Change a message style for - Emacs23. - (twittering-setup-minibuffer, twittering-finish-minibuffer): Hook - `post-command-hook' instead of `after-change-functions' to work in - cooperation with SKK. - -2009-12-25 Satoshi Yatagawa - - * twittering-mode.el (twittering-tinyurl-get): Fix typo to resolve - error "Symbol's value as variable is void". This problem was found - by naota. - -2009-12-25 Yuto Hayamizu - - * twittering-mode.el (twittering-show-minibuffer-length): disabled - on Emacs21 because `minibufferp' is not available. - (twittering-update-status-from-minibuffer): set - `minibuffer-message-timeout' to `nil'. `t' causes error on - Emacs23. - -2009-12-23 Satoshi Yatagawa - - * twittering-mode.el (twittering-show-minibuffer-length): New - defun to show the number of charactors in minibuffer. - (twittering-setup-minibuffer): New defun to add it to - `after-change-functions'; invoke via `minibuffer-setup-hook'. - (twittering-finish-minibuffer): New defun to remove it from - `after-change-functions'; invoke via `minibuffer-exit-hook'. - - * twittering-mode.el (twittering-update-status-from-minibuffer): - Set `minibuffer-setup-hook' and `minibuffer-exit-hook' temporarily. - -2009-12-23 Yuto Hayamizu - - * test/test-twittering-mode.el (tinyurl): add test for tinyurl - - * twittering-mode.el (twittering-tinyurl-get): fix for emacs22. - In emacs22, there's "^M" at the end of a buffer created by - url-retrieve - (twittering-tinyurl-get): fix by cvmat - - * twittering-mode.el (twittering-edit-mode-map): keybind 'u' to - twittering-edit-status. F4 to tinyurl - -2009-12-22 Tadashi MATSUO - - * twittering-mode.el (twittering-tinyurl-get): retrieves a - shortened URL without `url-insert'. - (twittering-url-copy-file-async): add new - function for downloading a file asynchronously. - (twittering-retrieve-image-without-wget): retrieves images - asynchronously with `twittering-url-copy-file-async'. - -2009-12-22 Yuto Hayamizu - - * twittering-mode.el (twittering-ucs-to-char): turned into - function from macro - (twittering-update-lambda, twittering-update-jojo): more portable - string expression. Executable only in Japanese environment. - (twittering-tinyurl-get): use with-temp-buffer with url-insert - -2009-12-21 Tadashi MATSUO - - * twittering-mode.el (twittering-icon-path): `require' is added. - (twittering-tinyurl-get, twittering-retrieve-image-without-wget): - The dependency on `mm-url' is removed by using `url' library. - (twittering-http-application-headers): - `Content-Length' is added to `headers'. - -2009-12-22 Satoshi Yatagawa - - * twittering-mode.el (twittering-get-host-method-from-timeline-spec) - (twittering-get-timeline-spec): Add more timeline specification. - - * test/test-twittering-mode.el (timeline-spec): add more tests for - timeline specification. - -2009-12-20 Tadashi Matsuo - - * test/test-twittering-mode.el (timeline-spec): add tests for - timeline specification. - * twittering-mode.el (twittering-get-host-method-from-timeline-spec) - (twittering-get-timeline-spec): Add new functions for timeline - specification. - (twittering-update-mode-line): Shows timeline specification. - (twittering-render-timeline): Invokes - `twittering-update-mode-line' to update the mode-line. - (twittering-timeline-history): Add new variable for history of - timeline specifications. - (twittering-add-timeline-history): Add new function for adding - timeline history. - (twittering-http-get-default-sentinel): Invokes - `twittering-add-timeline-history' to update history when - retrieving tweets successfully. - (twittering-other-user-list-interactive): The codes for retrieving - list index synchronously are extracted as the new function - `twittering-get-list-sync'. - (twittering-get-list-index-sync): Add new function for retrieving - list synchronously. - (twittering-read-list-name): Add new function for reading a list - name from the minibuffer. - (twittering-read-timeline-spec-with-completion): Add new function - for reading timeline specification from the minibuffer. - (twittering-get-twits-with-timeline-spec): Add new function for - retrieving tweets with timeline specification. - (twittering-visit-timeline): Add new function for visiting a - timeline. - (twittering-mode-map): The key "V" is bound to - 'twittering-visit-timeline'. - -2009-12-20 Yuto Hayamizu - - * twittering-mode.el (twittering-update-mode-line): add - (twittering-toggle-proxy, twittering-icon-mode) - (twittering-scroll-mode, twittering-jojo-mode): use - update-mode-line - -2009-12-19 Yuto Hayamizu - - * twittering-mode.el (twittering-use-ssl): add - (twittering-find-curl-program): add - (twittering-start-http-ssl-session): add - (twittering-start-http-non-ssl-session): add - (twittering-http-application-headers): add - (twittering-http-get): rewritten by using start-http-session - (twittering-http-post): rewritten by using start-http-session - (twittering-http-post-default-sentinel): use the same argument - format of http-get-default-sentinel - -2009-12-16 Yuto Hayamizu - - * twittering-mode.el (twittering-tinyurl-replace-at-point): - distinguish between URL and others based on - `bounds-of-thing-at-point'. - -2009-12-15 haya - - * twittering-mode.el (twittering-status-not-blank-p): fix invalid escape sequence - (twittering-tinyurl-replace-at-point): disabled when 'mm-url' doesn't exist. - -2009-12-12 Alberto Garcia - - * twittering-mode.el (twittering-retrieve-image-without-wget): - Kill buffer after retrieving the image - -2009-12-11 Satoshi Yatagawa - - * twittering-mode.el (twittering-tinyurl-get): Call - `mm-url-insert' only if argument `longurl' is non-nil to avoid - error "Wrong type argument", otherwise return nil explicitly. - (twittering-tinyurl-replace-at-point): Replace a region with - newurl when `newurl' is non-nil. - -2009-12-07 Naohiro Aota - - * twittering-mode.el (twittering-http-get-default-sentinel): Check - if buffer live-p before killing it. - -2009-12-07 Yuto Hayamizu - - * twittering-mode.el (twittering-read-username-with-completion): - rename from `twittering-get-username-with-completion' - (twittering-make-list-from-assoc): simplified - (twittering-other-user-timeline-interactive): changed init string - to nil - -2009-12-06 NAKAYA Toshiharu - - * twittering-mode.el (twittering-retrieve-image-without-wget): set - require-final-newline is nil locally since emacs can not save icon - images because of "error in process filter: save-buffer: Text is - read-only". - -2009-12-06 Tadashi MATSUO - - * twittering-mode.el (twittering-use-wget): new variable for - specifying whether the external command `wget' should be used. - (twittering-retrieve-image): new function for retrieving icon - images with/without wget. - (twittering-get-twits): retrieve images with - `twittering-retrieve-image'. - (twittering-use-convert): add a new variable specifying whether - the external command `convert' should be used. - (twittering-make-display-spec-for-icon): new function for - generating properties for icon with/without cropping the image. - (twittering-retrieve-image-without-wget): write an image as binary - explicitly. - -2009-12-05 Satoshi Yatagawa - - * twittering-mode.el (twittering-get-username-with-completion): - New defun as a wrapper function for read-from-minibuffer. - (twittering-follow): Call it instead of read-from-minibuffer. - (twittering-other-user-timeline-interactive): Likewise. - (twittering-other-user-list-interactive): Likewise. - - * twittering-mode.el (twittering-make-list-from-assoc): New defun. - -2009-12-04 Yuto Hayamizu - - * test/test-twittering-mode.el (sign-string): add test - - * twittering-mode.el (twittering-current-hashtag): docstring - (twittering-idle-time): removed (unused?) - -2009-12-03 Tadasohi MATSUO - - * twittering-mode.el (twittering-mode-map): define bindings so - as to be also valid even on non-window terminal. - -2009-12-02 Naohiro Aota - - * twittering-mode.el (twittering-icon-path): New funciton. - (twittering-format-status): Use it. - (twittering-get-twits): Ditto; wget now invoked for each icon. - -2009-12-01 Satoshi Yatagawa - - * twittering-mode.el (twittering-update-status-from-minibuffer): - Add more strict length check for status. - - * twittering-mode.el (twittering-status-not-blank-p): New defun to - separate a check code from twittering-update-status-if-not-blank. - (twittering-update-status-from-minibuffer): Integrate a post code - from twittering-update-status-if-not-blank. - (twittering-update-status-if-not-blank): Remove. - -2009-11-30 Yuto Hayamizu - - * twittering-mode.el (twittering-max-number-of-tweets-on-retrieval) - (twittering-number-of-tweets-on-retrieval): add - (twittering-http-get-list-index-sentinel): restore the variable - 'indexes' removed by mistake - (twittering-get-twits): use 'twittering-number-of-tweets-on-retrieval' - These changes were made by cvmat. thanks. - -2009-11-29 Yuto Hayamizu - - * twittering-mode.el (twittering-status-to-status-datum): defined - screen-name-in-text property - (twittering-enter) - (twittering-other-user-timeline-interactive) - (twittering-other-user-timeline): - put a screen-name-in-text ahead of other elements(uri, ...) - -2009-11-28 Yuto Hayamizu - - * test/run-test.el (twittering-run-test): use test.el - - * twittering-mode.el (twittering-http-get, twittering-http-post): - use a temp-buffer for each connection. This change solved the - problem caused by concurrent HTTP request. - (twittering-get-response-header, twittering-get-response-body): - requires 'buffer' because now each http request is associated with - its temp buffer - (twittering-http-buffer): removed - -2009-11-19 Tadashi MATSUO - - * twittering-mode.el (twittering-format-string): Add new function - to format strings with a user-defined table. - (twittering-retweet): Use 'twittering-format-string'. - -2009-11-18 Alberto Garcia - - * twittering-mode.el - (+twittering-direct-message, twittering-mode-map): - New `twittering-direct-message' function to send direct messages. - -2009-11-15 Naohiro Aota - - * twittering-mode.el (twittering-convert-fix-size): New variable. - (twittering-image-type): Use it; Resize icons to fix size if the - above variable is set. - -2009-11-15 Yuto Hayamizu - - * test/test-twittering-mode.el, test/run-test.el, test/elunit.el: add unit testing framework elunit. - - * twittering-mode.el (twittering-goto-next-thing, - (twittering-goto-previous-thing): add new commands. - (twittering-goto-previous-status): check whether prev-pos is not nil. - (twittering-set-current-hashtag, twittering-hashtag-history): add functions to support hashtag. Set the current hashtag with C-c C-h. - (twittering-update-status-from-minibuffer): use the current hashtag if set. - -2009-11-13 Satoshi Yatagawa - - * twittering-mode.el (twittering-convert-last-timeline-retrieved): - New defun to keep a backward compatibility. - (twittering-last-host, twittering-last-method): Call it. - -2009-11-10 Satoshi Yatagawa - - * twittering-mode.el (twittering-follow): New command. - (twittering-unfollow): Likewise. - (twittering-manage-friendships): New defun. - - * twittering-mode.el (twittering-favorite): New command. - (twittering-unfavorite): Likewise. - (twittering-manage-favorites): New defun. - -2009-11-09 Satoshi Yatagawa - - * twittering-mode.el (twittering-mode-map): Bind "L" to - `twittering-other-user-list-interactive'. - - * twittering-mode.el (twittering-other-user-list-interactive): Set - default username interactively. - (twittering-other-user-list-interactive): Fix typo. - - * twittering-mode.el (twittering-make-http-request): Use let - instead of let*. - -2009-11-07 Satoshi Yatagawa - - * twittering-mode.el: Add (preliminary) Lists support. - - * twittering-mode.el (twittering-other-user-list-interactive): New - command. - - * twittering-mode.el (twittering-get-list): New defun. - (twittering-get-list-index): Likewise. - (twittering-http-get-list-index-sentinel): Likewise. - - * twittering-mode.el (twittering-last-timeline-retrieved): Now it - expects a list, not a string. - (twittering-last-host, twittering-last-method): New defuns. - (twittering-list-index-retrieved): New defvar. - - * twittering-mode.el (twittering-get-twits): Rename from - twittering-get-timeline. - (twittering-get-timeline): Call twittering-get-twits instead - of (previous) twittering-get-timeline. - (twittering-current-timeline): Likewise. - (twittering-erase-old-statuses): Likewise. - (twittering-goto-next-status): Likewise. - - * twittering-mode.el (twittering-make-http-request): New defun. - (twittering-http-get): Use it. - (twittering-http-post): Likewise. - - * twittering-mode.el (twittering-http-get): Add new local variable - `server' which point to "twitter.com", "api.twitter.com", or your - nearest proxy server. Otherwise `host' always point to - "twitter.com" or "api.twitter.com". - (twittering-http-post): Likewise. - - * twittering-mode.el (twittering-http-post): Add new argument - `host'. - (twittering-http-post): Change handling of the argument - `method'. Now it expects `(concat method-class "/" method)'. - - * twittering-mode.el (twittering-update-status-if-not-blank): - Adjust for change to twittering-http-post. - (twittering-update-lambda): Likewise. - (twittering-update-jojo): Likewise. - - * twittering-mode.el (twittering-get-twits): Set parameter `count' - from twittering-get-count if existing. - -2009-11-06 Naohiro Aota - - * twittering-mode.el (twittering-image-type): Support bitmap type - using `convert'. - (twittering-convert-program): New varibale. - -2009-11-05 Satoshi Yatagawa - - * twittering-mode.el (twittering-render-timeline): Set the - `fill-column' locally. - -2009-09-01 Alberto Garcia - - * twittering-mode.el (twittering-retweet): - Don't set the original status ID when retweeting. - -2009-08-23 Yuto Hayamizu - - * twittering-mode.el (twittering-keybind-message): add. displaying important keybindings in minibuffer - -2009-08-22 Yuto Hayamizu - - * twittering-mode.el (twittering-get-username): add - (twittering-get-password): changed prompt - (twittering-status-to-status-datum): added a new text property 'uri-in-text' - (twittering-enter): use 'uri-in-text' - -2009-08-19 Alberto Garcia - - * twittering-mode.el - (twittering-image-type): - Use external 'file' program if available to detect image types, - and store the results in memory to avoid having to call it once - and again. - (twittering-format-status): - Pass full image path to `twittering-image-type' - -2009-06-18 Alberto Garcia - - * twittering-mode.el (twittering-http-get) - (twittering-http-get-default-sentinel) - (twittering-get-timeline, twittering-mode-map) - (twittering-current-timeline-noninteractive) - (twittering-current-timeline, twittering-erase-old-statuses): - Get rid of the `twittering-last-timeline-interactive' global - variable. - -2009-06-18 Tsuyoshi CHO - - * twittering-mode.el (twittering-sign-simple-string) - (twittering-sign-string-default-function) - (twittering-sign-string-function, twittering-sign-string): Add - new. - (twittering-update-status-if-not-blank): Fix params, support sign. - -2009-06-18 Tsuyoshi CHO - - * twittering-mode.el (twittering-mode-map) - (twittering-format-status, twittering-retweet): Add new feature - ReTweet - -2009-06-18 Alberto Garcia - - * twittering-mode.el - (twittering-status-to-status-datum): - Read 'in_reply_to_status_id' and 'in_reply_to_user_id' attributes. - (twittering-format-status): - Add new '%r' format string for " in reply to user". - (twittering-update-status-if-not-blank): - Code refactoring. No need to use (format) to convert a string. - -2009-06-18 Tsuyoshi CHO - - * twittering-mode.el (twittering-status-format) - (twittering-format-status, twittering-status-to-status-datum) - (twittering-update-status-if-not-blank, twittering-enter): Fix - in_reply_to_status_id support not work problem, and marge Alberl - patch below. - -2009-06-17 Tsuyoshi CHO - - * twittering-mode.el (twittering-last-timeline-interactive): New - add variable. - (twittering-new-tweets-count): Ditto. - (twittering-new-tweets-hook): Ditto. - (twittering-mode-map): Add new binding v/V - (twittering-http-get-default-sentinel): Add new hook support - `twittering-new-tweets-hook'. - (twittering-render-timeline, twittering-get-timeline): Support - console emacs. - (twittering-current-timeline-interactive): Add new function. - (twittering-current-timeline-noninteractive): Ditto. - (twittering-other-user-timeline): Ditto. - (twittering-other-user-timeline-interactive): Ditto. - (twittering-status-to-status-datum): Add support status id and - reply to id. - (twittering-update-status-if-not-blank): Ditto. - (twittering-update-status-from-minibuffer): Ditto. - -2009-03-12 Tsuyoshi CHO - - * twittering-mode.el (twittering-start): Update target chagne to - current. - -2009-03-12 Tsuyoshi CHO - - * twittering-mode.el: Append new methods by Alberto Garcia - 's patch. - (twittering-get-timeline): Add new general method. Old name is - `twittering-friends-timeline'. - (twittering-friends-timeline): Renew use general method. - (twittering-replies-timeline): Add new. - (twittering-public-timeline): Ditto. - (twittering-user-timeline): Ditto. - (twittering-current-timeline): Ditto. - (twittering-last-timeline-retrieved): Add new variable. - (twittering-mode-map): Add new key binding. - (twittering-erase-old-statuses): Support multi method. - - (twittering-timer): Comment update. - (twittering-icon-mode): Ditto. - (twittering-http-post): Ditto. - (twittering-get-response-body): Ditto. - (twittering-cache-status-datum): Ditto and Fix renaming. - (twittering-timeline-data, twittering-timeline-last-update): - Rename. - (twittering-render-timeline): Ditto. - (twittering-icon-mode): Fix renaming. - (twittering-http-get-default-sentinel): Ditto. - (twittering-format-status): Fix indentation. - -2009-03-09 Tsuyoshi CHO - - * twittering-mode.el (twittering-mode): Add keybind in Major mode - docstring by Alex Schröder - -2008-08-03 Tsuyoshi CHO - - * twittering-mode.el (twittering-mode-version): Update to 0.6 - * twittering-mode.el (twittering-friends-timeline-last-update): 新 - 規変数 - (twittering-setftime, twittering-local-strftime) - (twittering-global-strftime): `twittering-local-strftime'を機能分 - 割 - (twittering-http-get): オプション引数`parameters'を追加、他調整 - (twittering-http-post): 同上の調整 - (twittering-status-to-status-datum): last-updateを更新する処理を追 - 加 - (twittering-friends-timeline, twittering-erase-old-statuses): - statusのupdate時にsinceをパラメータと指定する処理をサポート - -2008-07-21 Tsuyoshi CHO - - * twittering-mode.el (twittering-http-get, twittering-http-post): - 改行が1つ多かったので除去 - -2008-05-11 Tsuyoshi CHO - - * twittering-mode.el (twittering-format-status): id/user-idのフォー - マット整形。時間情報にuriを付与。Nicholasのパッチにより全体に - username情報を付与 - (twittering-status-to-status-datum): username/user-screen-nameにつ - いて整理 - (twittering-get-status-url): 新規関数(マクロでもいいんだけど...) - -2008-05-01 Tsuyoshi CHO - - * twittering-mode.el : 全体のコメント修正、以下の修正は大部分を - gan2さんが実施した - (twittering-mode-version): 新規関数 - (twittering-timer): コメント追加 - (twittering-scroll-mode, twittering-jojo-mode) - (twittering-icon-mode): Nicholas Riley さんのパッ - チ採用、バッファローカル化 - (list-push): 新規マクロ - (twittering-mode-map): キーバインド変更 - (twittering-mode-hook): フック変数新規作成(以前から利用してたけど - 定義がなかった) - (twittering-render-friends-timeline): Nicholas Riley - さんのパッチ採用、ステータスの挿入正常化 - (twittering-goto-next-status) - (twittering-get-next-username-face-pos) - (twittering-goto-previous-status) - (twittering-get-previous-username-face-pos) - (twittering-goto-next-status-of-user) - (twittering-goto-previous-status-of-user) - (twittering-get-username-at-pos, twit): 新規関数 - -2008-02-08 Tsuyoshi CHO - - * twittering-mode.el : 全体的に整形、Proxy、Safe Password、 - User-Agent、Major mode stringを対応。Version 0.3 - (twittering-mode-version): 暫定のバージョン定数を定義 - (twittering-proxy-use): プロキシ関係設定を導入 from - (twittering-proxy-server): 同上 - (twittering-proxy-port, twittering-proxy-user): 同上 - (twittering-proxy-password): 同上 - (twittering-toggle-proxy): 同上 - (twittering-user-agent-default-function): 同上 - (twittering-user-agent-default-function): デフォルトUser-Agent生成関数 - (twittering-user-agent-function): User-Agent生成関数指定変数を導入 - (twittering-user-agent): 内部でのUser-Agent生成関数 - (twittering-tmp-dir): ユーザー固有のImageTmpDirを生成 from - (twittering-mode-map): プロキシの有効無効のキーバインド定義 - (twittering-mode-string): メジャーモード文字列を変数定義 - (twittering-mode): メジャーモード開始時に文字列を設定 - (twittering-http-get): プロキシ、User-Agentによる処理を追加 - (twittering-http-post): 同上 - (twittering-get-password): パスワードを動的に確認する関数を定義 - -2007-10-14 Y. Hayamizu - - * twittering-mode.el : Naoya T. , masa_edw のパッチをとりこむ - (twittering-url-encode): 使わないので削除 - (twittering-decode-html-entities): patched: 数値エンティティだけでなく,asciiエンティティにも対応. - (twittering-font-lock-keywords): font-lock-keywordsを削除.text propertyによって設定する. - (twittering-format-status): patched: statusとformat-strからstatusの表示用文字列を生成. - (twittering-scroll-mode): patched: 新しいtwitがあったときに,カーソルもスクロールするか固定するかを設定するマイナモード, masa_edwのパッチ - (twittering-status-format): twitの表示方法をきめるテンプレート文字列 - (twittering-icon-mode): patched: ifをwhenにおかえた.nilを渡されたときはマイナモードのスイッチに振舞を変更 - (twittering-local-strftime): patched: 時間をフォーマット文字列に従い文字列化 - (twittering-mode-init-variables): font-lock-modeは,Emacs21系ではautoloadするために一度呼ぶ必要がある. icon-mode, scroll-modeをマイナモードに登録. - (twittering-inspect-object): 使わないので削除 - (twittering-http-get-default-sentinel): エラーを追いやすくするため,condition-caseを廃止 - (twittering-status-to-status-datum): 全てのデータを抽出するようコード追加.ユーザ名,URIリンク表示などの処理もここで. - -2007-10-13 Y. Hayamizu - - * twittering-mode.el (twittering-font-lock-keywords): ユーザー名のフェイスを適用する規則を修正.アイコン画像を表示したときに,下線が画像にかからないようにした. - (twittering-render-friends-timeline): ポイントが特定のtwitに対して固定されるようにした(patch from masa_edw) - -2007-10-12 Y. Hayamizu - - * twittering-mode.el (twittering-idle-time): つかわないので削除 - (twittering-get-or-generate-buffer): バッファ取得のための関数.存在しないバッファだったら,新たに生成して返す. - (twittering-buffer): Variable:twittering-bufferを名前に持つバッファを返す関数.このバッファを使う場合は,(twittering-buffer)によって取得する. - (twittering-http-buffer): twittering-bufferと同じ - (twittering-wget-buffer): twittering-bufferと同じ - - -2007-10-11 Y. Hayamizu - - * twittering-mode.el (twittering-icon-mode): アイコンを表示するか否かのフラグ - (twittering-wget-buffer): アイコン画像をwgetで取得するプロセスのバッファ - (twittering-icon-mode): アイコンの表示/非表示を切り換えるコマンド - (twittering-tmp-dir): アイコンの画像を保存するディレクトリ - (twittering-image-stack): ダウンロードすべきアイコン画像のリスト - (twittering-image-type): 画像の種類を判別する関数 - (twittering-render-friends-timeline): friends timelineを表示する部分を切り出した - -2007-10-10 Y. Hayamizu - - * twittering-mode.el: バージョン番号をつけた 0.1.0 - -2007-10-07 Y. Hayamizu - - * twittering-mode.el (twittering-http-get-default-sentinel): http-bufferを毎回生成-削除するのをやめて,内容をeraseして使い回すようにした. - (twittering-http-get-default-sentinel):HTTPレスポンスのステータスコードが上手く拾えなかったときの処理を追加 - (twittering-http-get-default-sentinel): カレントバッファか*twittering*のときは,friends-timelineを更新してもポイントの位置が変わらないように修正. - -2007-09-24 Y. Hayamizu - - * twittering-mode.el (twittering-status-to-status-datum): URIをクリック可能にする処理を追加 - -2007-09-23 Y. Hayamizu - - * twittering-mode.el (twittering-uri-face): URI用のフェイス - (twittering-click): クリック時に実行されるコマンド - (twittering-enter): EnterかC-mが押されたときに実行されるコマンド - -2007-09-19 Y. Hayamizu - - * twittering-mode.el (twittering-mode-syntax-table): "(double quote)を,文字列クオートと認識しないようにsytax-tableを変更. - (twittering-friends-timeline): friends timelineの取得したデータを保存しておく変数.twittering modeが起動している限り,この変数に取得したstatusを随時追加してゆく. - (cl): assocrefをinnner defunして,バイトコンパイル時にWarningが出ていた.clパッケージのfletを使うことでWarningが出ないように解決した. - (twittering-status-to-status-datum): twittering-status-to-lineから名前変更 - (twittering-friends-timeline-data): twittering-friends-timelineから名前変更 - (twittering-status-to-status-datum): idもstatus datumに含めるようにした. - (twittering-cache-status-datum): status datumをdata-var(デフォルトはtwittering-friends-timeline-data)にキャッシュする関数.すでにあるstatus datumを渡すとnil,新しいstatus datumを渡すとtを返してdata-varに追加する. - (twittering-http-get-default-sentinel):過去のstatus datumをキャッシュして,バッファに過去のstatusも表示されるようにした. - (twittering-erase-old-statuses): 21件目以降の古いstatusを消す関数.実際はキャッシュを全部消して,twittering-http-getを呼んでいるだけ.C-c C-eにバインド. - (twittering-username-face): ユーザ名用のface.(defface )の後に(defvar )で使用可能になった.なぜ? - (twittering-status-to-status-datum): ユーザ名のテキストにmouse-face属性と,uri属性(ユーザのページのURI)を付加するようにした. - (twittering-click-username): ユーザ名をクリックするか,C-mを押したときに起動するコマンド. - (twittering-mode-map): vimライクなキーバインドを追加 - (twittering-mode): twittering-mode-hookでfont-lock-defaultsが設定された後に,font-lock-mode を2回呼んで変更を反映させるようにした. - (twittering-mode-init-variables): twittering-username-faceの定義をこの関数の中にうつした. - (twittering-browse-user-page): twittering-click-usernameから名前変更. - (twittering-update-status-interactive): twittering-update-statusから名前変更. - (twittering-reply-to-user): ユーザ名上でEnterを押すとこの関数が呼びだされるようにキーバインド変更.ミニバッファに @<ユーザ名> が自動挿入される. - (twittering-view-user-page): twittering-browse-user-pageから名前変更.C-c C-vにバインド. - (twittering-update-status-if-not-blank): 引数statusが,空白文字のみか, @<ユーザ名> のみの場合には nil を返し,他の文字も含む場合には POSTしてtを返す関数. - (twittering-update-status-from-minibuffer): ミニバッファからstatusを更新するための関数.無効な文字(twittering-update-status-if-not-blankで判定)が入力された場合は,有効な文字列が入力されるまでループする. - -2007-09-12 Y. Hayamizu - - * twittering-mode.el (twittering-ucs-to-char): Emacs21系では,Mule-UCSがロードされていないと,(decode-char 'ucs HOGE)がnilになり,文字コードを取得できないことがある.そこで,ucs-to-charが使える環境ではucs-to-charを,使えない環境(Emacs22など)ではdecode-charを使うように自動で切り替えるマクロを書いた. - -2007-09-10 Y. Hayamizu - - * twittering-mode.el (twittering-refresh-buffer): 使わないので削除 - (twittering-http-post-default-sentinel): condition-case でエラーハンドリングするようにした. - (twittering-http-get-default-sentinel): *twittering*バッファをread-onlyにした - (twittering-http-post-default-sentinel): condition-case でエラーハンドリングするコードを追加. - (twittering-start): 複数のタイマが走らないように,twittering-timerがnilでない=既存のタイマが走っている場合は一旦twittering-stopを呼び出してからタイマをスタートするようにした. - -2007-09-09 Y. Hayamizu - - * twittering-mode.el: リリース - (case-string): CarbonEmacs (Emacs22)で,case-stringを呼びだすコードよりも前にdefmacroを持ってきたら,警告が出ないという報告. - (twittering-decode-html-entities): ucs-to-charの使用をやめ,(decode-char 'ucs ...)を使うことに. (reported by masa_edw) - (twittering-update-status): read-from-minibufferの7番目の引数にtを指定し,input methodをカレントバッファから継承するようにした. - (twittering-decode-html-entities): string-to-intはobsoleteなので,string-to-numberに変更 (reported by masa_edw) - (twittering-get-response-header): (setq (get-buffer ...)) となっていたので,(setq buffer (get-buffer ...))に修正. twittering-get-response-bodyも同様 - (twittering-timer-action): twittering-refresh-triggerは既に使っていない変数だったので削除した - (debug-print): マクロが最初にコンパイルされる時点では,debug-modeが変数として宣言されていないので,debug-modeの判断まで含めたコードを吐くようにした. - (twittering-http-post-default-sentinel): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに伴い書き換えた - (twittering-get-response-body): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに伴い書き換えた - (twittering-xmltree-to-status): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに伴い書き換えた - (twittering-status-lines): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに伴い書き換えた - (twittering-status-to-line): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに伴い書き換えた - (twittering-get-timeline): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに削除 - (twittering-status-lines): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに削除 - (twittering-parse-xml): xml-parse.elのかわりに,xml.el(Emacs標準?)を使うように変更したことに削除 - (twittering-timer-interval): twittering-refresh-intervalから名前変更 - (twittering-inspect-object): 任意のLispオブジェクトを文字列で表現できるユーティリティ関数 - (twittering-timer-action): xml.elにより処理が軽くなったので,一定時間間隔での更新に変更. - (twittering-xmltree-to-status): Emacs21とEmacs22のxml.elの差異を吸収するコードを追加.Emacs22では,ノードのリストに空の文字列が混入することがあるため,文字列を除去するようにした. - diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/INSTALL b/xemacs-packages/lisp/twittering-mode-3.0.0/INSTALL deleted file mode 100644 index 4de4505c..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/INSTALL +++ /dev/null @@ -1,46 +0,0 @@ - - -Installation Guide -================== - -For Windows users ------------------ - -* Uncompress the archive file, and add a path of a directory - containing `twittering-mode.el` to your `load-path`. - * For example, if you uncompressed it under `C:\foo\`, there may be - a directory `C:\foo\twittering-mode-X.X.X\` which contains - `twittering-mode.el`. So add the following code to your `.emacs` - - (add-to-list 'load-path "C:/foo/twittering-mode-X.X.X") - -* Proceed to **Set up your Emacs** - -For Linux and other Unix users ------------------------------- - -* Uncompress the archive file, and add a path of a directory - containing `twittering-mode.el` to your `load-path`. - * For example, if you uncompressed it under `/path/to/foo`, there may be - a directory `/path/to/foo/twittering-mode-X.X.X/` which contains - `twittering-mode.el`. So add the following code to your `.emacs` - - (add-to-list 'load-path "/path/to/foo/twittering-mode-X.X.X") - -* Install cURL, gnutls, or openssl for using SSL connection. -* Proceed to **Set up your Emacs** - -Set up your Emacs ------------------ - -* Add following code to your `.emacs`: - - (require 'twittering-mode) - -Run twittering-mode -------------------- - -1. Execute `M-x twit` to run twittering-mode. -2. Open OAuth authorization page with your browser, click "Allow", and -enter the PIN code. -3. Your friends' timeline will appear. Enjoy! diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/INSTALL.ja b/xemacs-packages/lisp/twittering-mode-3.0.0/INSTALL.ja deleted file mode 100644 index 424b0b6b..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/INSTALL.ja +++ /dev/null @@ -1,49 +0,0 @@ - - - インストールの手引き -====================== - - Windows ---------- - -* twittering-modeのファイルを展開して現れたディレクトリを`load-path`に - 追加する。 - * 例: `C:\foo\`というディレクトリの下に展開したとすると、 - `twittering-mode.el`が入っているディレクトリ - `C:\foo\twittering-mode-X.X.X\`があるはずなので、`.emacs`に次の内容 - を追加する: - - (add-to-list 'load-path "C:/foo/twittering-mode-X.X.X") - -* **Emacsの設定** へ進む - - Linuxやその他Unix環境 ------------------------ - -* twittering-modeのファイルを展開して現れたディレクトリを`load-path`に - 追加する。 - * 例: `/path/to/foo`というディレクトリの下に展開したとすると、 - `twittering-mode.el`が入っているディレクトリ - `/path/to/foo/twittering-mode-X.X.X/`があるはずなので、`.emacs`に次の内容 - を追加する: - - (add-to-list 'load-path "/path/to/foo/twittering-mode-X.X.X") - -* SSL通信を利用するためには、cURL、gnutls、opensslのどれかをインストー - ルしておく -* **Emacsの設定** へ進む - - Emacsの設定 -------------- - -* 次のコードを`.emacs`に追加する: - - (require 'twittering-mode) - - twittering-modeを動かす -------------------------- - -1. `M-x twit`を実行 -2. 画面の指示に従いOAuthの認証ページを開き、"Allow"ボタンをクリックして、 -表示されたPINコードをEmacsに入力する -3. Twitterのタイムラインが表示されるはず! diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/LAST-VERSION b/xemacs-packages/lisp/twittering-mode-3.0.0/LAST-VERSION deleted file mode 100644 index 4a36342f..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/LAST-VERSION +++ /dev/null @@ -1 +0,0 @@ -3.0.0 diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/Makefile b/xemacs-packages/lisp/twittering-mode-3.0.0/Makefile deleted file mode 100644 index f509684f..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/Makefile +++ /dev/null @@ -1,65 +0,0 @@ - -EMACS ?= emacs - -DISTRIB_FILES = twittering-mode.el \ - README README.ja \ - NEWS NEWS.ja \ - INSTALL INSTALL.ja \ - win-curl \ - url-emacs21 \ - emacs21 - -.PHONY: all check clean update-po release release-upload upload - -all: - -update-po: - $(MAKE) -C doc update-po - -check: - ./test/run-test.sh -y - -clean : - rm -f twittering-mode.elc README *.zip *.tar.gz - -VERSION = $$(cat VERSION) -DISTRIB_DIR = twittering-mode-$(VERSION) - -README: README.markdown - cp $< $@ -release: $(DISTRIB_FILES) - @(! [ -z "$${SF_USERNAME}" ] || (echo "Environmental variable 'SF_USERNAME', which is a username of sf.net, is required."; false)) - @echo -n "wrote NEWS file? [y or n]: "; read ans; [ "$${ans}" = "y" ] - @echo -n "What is next version number?: " && \ - read version && \ - (if [ "$${version}" != "$$(cat VERSION)" ]; then \ - mv VERSION LAST-VERSION; \ - echo $${version} > VERSION; \ - fi) && \ - ruby misc/vernum-updater.rb \ - --prev-version=$$(cat LAST-VERSION) --next-version=$$(cat VERSION) \ - doc/web/index.text - ruby misc/vernum-updater.rb \ - --prev-version=HEAD --next-version=$$(cat VERSION) \ - twittering-mode.el NEWS NEWS.ja - @([ -d $(DISTRIB_DIR) ] && rm -rf $(DISTRIB_DIR)) || true - mkdir $(DISTRIB_DIR) - cp -r -t $(DISTRIB_DIR)/ $(DISTRIB_FILES) - zip -r $(DISTRIB_DIR).zip $(addprefix $(DISTRIB_DIR)/,$(DISTRIB_FILES)) - tar czvf $(DISTRIB_DIR).tar.gz $(addprefix $(DISTRIB_DIR)/,$(DISTRIB_FILES)) - rm -rf $(DISTRIB_DIR) - -release-upload: release - make upload - -upload: - (echo "cd /home/frs/project/t/tw/twmode/"; \ - echo "-rm $(DISTRIB_DIR)/*"; \ - echo "-rmdir $(DISTRIB_DIR)"; \ - echo "mkdir $(DISTRIB_DIR)"; \ - echo "cd $(DISTRIB_DIR)"; \ - echo "put $(DISTRIB_DIR).zip"; \ - echo "put $(DISTRIB_DIR).tar.gz") > upload.bat - sftp -b upload.bat $${SF_USERNAME},twmode@web.sourceforge.net - rm -f upload.bat - diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/NEWS b/xemacs-packages/lisp/twittering-mode-3.0.0/NEWS deleted file mode 100644 index 42746957..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/NEWS +++ /dev/null @@ -1,655 +0,0 @@ - - NEWS -- The history of twittering-mode -======================================== - - HEAD: XXXX-XX-XX ------------------- - -### Important notice - -### Improvements - -### Bug fixes - - 3.0.0: 2013-04-21 ------------------- - -### Important notice -* Obsolete implicit sign string feature. - The function `twittering-sign-string-function' and the variable - `twittering-sign-simple-string' are now obsolete. The `edit - skeleton' feature can be used as an alternative. For example, - the configuration - (setq twittering-sign-simple-string "footer") - is equivalent to the following one; - (setq twittering-edit-skeleton-footer " [footer]") - (setq twittering-edit-skeleton 'footer) -* Obsolete variable `twittering-scroll-mode' - The variable `twittering-scroll-mode' is obsolete. The current - version of twittering-mode always behaves as the previous version - does on scroll-mode. To track the latest tweet, put the cursor on - the header or footer that is rendered on the latest end. -* A new key binding for "C-cC-w", future replacement for "C-cD". - "C-cD" has been bound to `twittering-delete-status`, the function to - delete a tweet. But the binding violates the Emacs Key Binding - Conventions. "C-cC-w" is bound to the function. The old binding is - also valid, but the new one is recommended. - -### Improvements -* Edit skeleton according to the current timeline. - You can define edit skeletons that refer to the current timeline. - See the docstring of the variable `twittering-edit-skeleton-alist'. - In addition, `inherit-hashtags' and `inherit-any', the predefined - edit skeletons, insert hashtags if the current timeline is a search - timeline where the query string includes hashtags. -* Disabling overlay on excessive string. - In default, `twittering-edit-mode' emphasizes too long strings by - putting the overlay `twittering-warning-overlay' on characters - following the 140th character. On some environments, however, some - input methods seem to interfere the update of the overlay. In such - case, you may avoid the problems by disabling the update of the - overlay as follows. - (setq twittering-disable-overlay-on-too-long-string t) -* Jump to next/previous URI - You can go to tne next or previous URI explicitly written in a tweet - by the command `twittering-goto-next-uri' or - `twittering-goto-previous-uri'. - Also, you can use the commands, `twittering-goto-next-thing' and - `twittering-goto-previous-thing'. With a prefix argument by - preceding "C-u", they ignore things except URIs explicitly written - in a tweet. -* Additional root CA certificates. - The root CA certificates `VeriSign Class 3 Public Primary CA - G2' - and `GeoTrust Global CA' are also embedded in `twittering-mode.el'. - They are used for verifying `api.twitter.com' and - `search.twitter.com', respectively. The certificate `Equifax Secure - Certificate Authority', which has been embedded, is now used for - verifying the server `www.googleapis.com' when shortening a URI. -* Support for new URL shortening services. - You can use `migre.me' as URL shortening service by the following. - (setq twittering-tinyurl-service 'migre.me) ;; for mig.re -* Support for retweeted_by_user and retweeted_to_user timeline. - ":retweeted_by_user/USER" and ":retweeted_to_user/USER" are added as - a new timeline specs. The former consists of retweets posted by the - user and the latter consists of retweets that will be sent to the - home timeline of the user. - After specifying ":retweeted_by_user/" or ":retweeted_to_user/" for - `twittering-visit-timeline', which is bound to "V" in default, you - can supplement a username with referring the username history. -* Counting characters with considering the t.co link wrapper. - When editing a tweet, the t.co link wrapper will be taken into - account. The length of wrapped URIs is retrieved with - help/configuration API periodically. The default period is 1 day. - You can configure the interval of updating the length by the - variable `twittering-service-configuration-update-interval'. -* Ad-hoc support for non-ASCII hashtags. - Non-ASCII hashtags are decorated and you can visit its timeline by - `v'. Note that the rule of detecting hashtags may be looser than - that of the Twitter web UI. Problems have not been found yet, but a - string considered as a hashtag in twittering-mode may not be treated - as a hashtag in the Twitter web UI. -* Rendering the t.co wrapped link as the original URL. - If a tweet includes a link wrapped by the t.co service, it is - rendered as the original URL. If `json.el' is unavailable, a link on - a search timeline is rendered as the wrapped URL. But the link will - be opened as the wrapped URL when you invoke `twittering-enter' - (bound to `C-m' in default). -* Posting a tweet consiting of mentions from pop-up buffer. - From pop-up buffer, you can post a tweet consisting of - mentions. -* Restoring timeline buffers with `revive.el' by HIROSE Yuuji. - Timeline buffers can be restored with the Emacs LISP program - `revive.el' written by HIROSE Yuuji. There are two types of - configuration. - 1. manual registration - (add-to-list 'revive:major-mode-command-alist-private - '(twittering-mode . twittering-revive:twittering)) - (add-to-list 'revive:save-variables-local-private - '(twittering-mode twittering-timeline-spec-string)) - (require 'revive) - 2. automatic registration (for revive.el 2.19) - (require 'revive) - (twittering-setup-revive) - Note that `(add-to-list ...)' of the manual configuration must be - evaluated before loading `revive.el' and `(twittering-setup-revive)' - of the automatic one must be evaluated after loading `revive.el'. - Since the Emacs LISP program `windows.el' written by HIROSE Yuuji - implicitly loads `revive.el' if possible, you should also take care - of the order of loading `windows.el' and the configuration. -* New format specifier "%u" for `twittering-retweet-format'. - "%u" is added as a new format specifier for - `twittering-retweet-format'. It is replaced with the URL of the - cited tweet. -* Skeleton for initializing an organic retweet. - You can use a skeleton as the variable `twittering-retweet-format' - for initializing an organic retweet. This means that you can also - specify the initial cursor position. Strings included in the - skeleton are converted with the below replacement table and then the - skeleton is inserted with `skeleton-insert'. - The replacement table is as follows. - %s - The screen-name of the cited tweet. - %t - The text of the cited tweet. - %u - The URL of the cited tweet. - %# - The ID of the cited tweet. - %% - % itself. - This is equivalent to the rule applied for - `twittering-retweet-format' as a string. - Note that it is inserted before the edit skeleton specified by - `twittering-edit-skeleton' is performed. -* Tweet type of edit skeleton for an organic retweet. - The symbol `organic-retweet' is added as a tweet type specifying the - type of the tweet being edited, which is referred by edit skeleton. - You can define an edit skeleton that is performed only for organic - retweets. Note that edit skeletons cannot refer to the tweet being - retweeted in the current implementation. -* Support for list names including non-ASCII characters. -* Display of replied tweets on a search timeline. - If `json.el' is available, twittering-mode can retrieve an ID which - a tweet on a search timeline replies to. If so, replied tweets can - be displayed by `twittering-toggle-show-replied-statuses' bound to - "r" in default. -* Header and footer on a timeline buffer. - On a timeline buffer, the header and footer are rendered. They are - special field and do not correspond to tweets. If you press the - enter key (or invoking `twittering-enter') on the header or footer, - the timeline buffer will be extended by retrieving more tweets - according to whether the cursor is placed on the latest end or - oldest one. - You can track the latest tweet by putting the cursor on the latest - side of the header and footer. - You can customize the header and footer strings with the variables - `twittering-timeline-header' and `twittering-timeline-footer', - respectively. Their face can also be customized with the variables - `twittering-timeline-header-face' and - `twittering-timeline-footer-face'. -* Support for exclude-if timelines. - ":exclude-if/FUNC/SPEC" is added as a new timeline spec. The - timeline equals SPEC, except that it does not include tweets that - the function FUNC returns non-nil for. FUNC must be a function that - receives an alist corresponding to a tweet as an argument. A lambda - expression and a symbol bound to a function are valid as FUNC. But a - symbol name must not include two special characters, "(" or "/". You - can specify any timeline spec for SPEC. For example, you can ignore - tweets including "WORD" from the home timeline by the following - timeline spec; ":exclude-if/(lambda (tweet) (string-match \"WORD\" - (cdr (assq 'text tweet))))/:home". -* Support for merge timelines. - Merge timelines such as "(SPEC1+SPEC2)" or "(SPEC1+SPEC2+SPEC3)" and - so on, are added as new timeline specs. The merge timeline consists - of all tweets in the specified timelines. You can specify any - timeline spec for constituents. For example, you can see all direct - messages, which you have sent or received, on a buffer by the - following timeline spec; - "(:direct_messages+:direct_messages_sent)". -* New hook invoked when rendering tweets. - A new hook variable `twittering-new-tweets-rendered-hook' is - added. The hook is invoked when new tweets are rendered. It is not - invoked when rendering tweets that are retrieved formerly. Since the - existing hook `twittering-new-tweets-hook' is invoked for each - successful retrieval of tweets, it may be invoked for tweets that - are not rendered in composite timelines such as exclude-if and merge - timelines. The new hook works well for composite timelines. - In the new hook, you can use `twittering-rendered-new-tweets' as a - list of new tweets. `twittering-rendered-new-tweets-spec' and - `twittering-rendered-new-tweets-spec-string' can be used as the - timeline spec and the timeline spec string. For detail, see the - docstring of the new hook variable. -* New hook invoked after initializing global variables. - A new hook variable `twittering-mode-init-hook' is added. The hook - is invoked after initializing global variables. Unlike - `twittering-mode-hook', which is invoked every time a buffer is - generated for twittering-mode, the new hook invoked only once. -* Description on a pop-up edit buffer. - The description is rendered on the top of the pop-up edit - buffer. Which the tweet is a reply, a direct message or an - independent ordinary tweet is explicitly displayed. You can also - copy the tweet being replied. -* Switch of a reply and a normal tweet on a pop-up edit buffer. - You can toggle whether the tweet being edited will be sent as a - reply or a normal tweet by invoking `twittering-edit-toggle-reply' - bound to "C-c C-r" in default. -* Support for exclude-re timelines. - ":exclude-re/REGEXP/SPEC" is added as a new timeline spec. The - timeline equals SPEC, except that it does not include tweets that - match the regular expression REGEXP. In REGEXP, a slash must be - escaped with a backslash. For example, tweets including a slash are - excluded from the timeline corresponding to the Emacs string literal - ":exclude-re/\\//:home". -* Iterative retrieval of a series of replies. - You can trace back a series of replies by a new function - `twittering-toggle-or-retrieve-replied-statuses' bound to "R" in - default. The function behaves as follows: - - If some of tweets in the series of replies pointed by the cursor - have not been rendered, try to show them as possible. If some of - them have not been retrieved yet, retrieve the latest one and show - it. - - If all tweets in the series of replies pointed by the cursor - have been rendered, hide them. - - If the cursor does not point to one of tweets in a series of - replies, do nothing. -* Configuration of how to open a window for an edit buffer. - A new variable `twittering-pop-to-buffer-function' is added. It - specifies how to open a window for an edit buffer. The default value - is `twittering-pop-to-buffer-in-bottom-largest-window', which opens - a window by splitting the largest window on the bottom of the - current frame. You can also use the function - `twittering-pop-to-buffer-in-current-window', which splits the - current window. -* Support for `single tweet' timelines. - ":single/ID" is added as a new timeline spec. The timeline consists - of a tweet specified by ID. You can read a very old tweet by using - the timeline spec. -* Single tweet timeline from a URL in a tweet. - You can visit a `single tweet' timeline from a URL pointing to the - tweet by invoking `twittering-other-user-timeline' on the URL. The - function is bound to "v" in default. -* New command to get tweets before a specific time. - By using the new command `twittering-get-tweets-before', you can get - tweets of the current timeline before a specific time. -* Support for backward retrieval of favorites timeline. -* Different intervals of retrieving timelines. - An interval of retrieving each timeline can be configured by the new - variable `twittering-relative-retrieval-interval-alist'. The alist - consists of pairs of a regexp and a relative interval. The regexp - specifies timelines and they are retrieved at intervals that are the - relative interval times as long as the variable - `twittering-timer-interval'. -* Support for the Twitter REST API v1.1. - The default value of `twittering-service-method' is changed to - `twitter-api-v1.1'. The configuration means that twittering-mode - uses the Twitter REST API v1.1. The service method requires SSL - connection and JSON parser. Note that the former requires cURL with - OpenSSL, GNU Wget with OpenSSL, OpenSSL or GnuTLS and the latter - requires `json.el' that is not distributed with Emacs 22 or - earlier. - In addition, some timelines are obsolete in the Twitter REST API - v1.1. The obsolete timeline spec strings follow; ":friends", - ":replies", ":public", ":retweeted_by_me", ":retweeted_to_me", - ":retweeted_by_user/USER", ":retweeted_to_user/USER". - -### Bug fixes -* Fix of displaying a message of authorization. -* Fix of confirmation of available connection methods. -* Fix of the function for HMAC-SHA1. - Results from the function `twittering-hmac-sha1' might return - incorrect digests depending on the current coding system. The - problem has been fixed. -* Fix of confusion of a username consisting of digits with a user ID. - The confusion when retrieving `user_timeline' has been fixed. But - the confusion when retrieving `favorites' for other users has not - been fixed yet because the API for `favorites' has no parameters to - directly specify a screen name not a user ID. - Thanks to Makoto Fujiwara who reported this problem. -* Fix of unintentional cursor motion on editing a tweet. - If the current buffer was not managed by `twittering-mode', the - cursor of the buffer was moved without intention by calling - `twittering-update-status-interactive' from the buffer. The bug has - been fixed. - Thanks to mofigan who reported this problem. -* Fix of storing icons on some cases. - Icons were not correctly saved if `twittering-icon-storage-limit' or - `twittering-convert-fix-size' was nil. The bug has been fixed. - Thanks to HufflepuffBR who reported this problem about the former - variable `twittering-icon-storage-limit'. -* Fix of unconditional addition of `load-path' on byte-compilation. - On byte-compilation, the directories `emacs21' and `url-emacs21', - which are included in the repository of twittering-mode, were - unconditionally added into `load-path'. Due to this bug, some macros - were embedded as obsolete definitions for Emacs21 in the result of - byte-compilation. Some functions in the result cause errors on Emacs - 22 or later because the obsolete definitions conflict with Emacs - newer than 21. On Emacs 22 or later, the directories are no longer - added to `load-path' on byte-compilation. The bug has been fixed. - Thanks to HKey who has discovered the bug. -* Fix of the strange motion of the cursor. - The cursor motion based on logical lines had caused non-intuitive - behavior by interfering text property attaced to tweets. The problem - did not appear when the motion was based on display line. The bug - has been fixed. - Thanks to lemit who reported the problem. -* Deletion of a tweet from a buffer after the API is succeeded. - A tweet is deleted from a buffer after receiving a successful - response of the `destroy-status' API. If the API ends in failure, - you can try to delete the status again because the status remains on - the buffer. -* Fix of the escape of a query string in a search timeline spec. -* Fix of errors raised by asynchronous sentinels. - Previously, an error might be raised from a sentinel when a timeline of - non-existent user was requested. The bug has been fixed. - - 2.0.0: 2011-04-22 ------------------- - -### Important notice - -### Improvements - -* Support for storing private information in a file encrypted by master - password. Once you save the authorized account by using master password, - you have to input PIN no longer. This is enabled by - `(setq twittering-use-master-password t)'. - The private information is stored in `~/.twittering-mode.gpg', which can - be specified by `twittering-private-info-file'. - To enable master password, you need GnuPG and an additional Emacs LISP - program, which is `alpaca.el' or EasyPG (Emacs23 includes EasyPG). - To use with `alpaca.el', you should use the version 0.13. With other - versions of `alpaca.el' the current implementation may not work well - because it deeply depends on internal implementation of `alpaca.el'. -* Authentication via xAuth. - You can enable xAuth by "(setq twittering-auth-method 'xauth)". -* Rejection of invalid PIN code input and strip extra white spaces. -* Confirmation of process status for avoiding dead-lock. -* Native retweets on `user', `friends', `mentions' and `public' timelines. -* Detection of abnormal exit of an invoked process. - The exit-status on abnormal exit is printed to the buffer "*Messages*". -* Support for disabling server authentication. - Server authentication is enabled by default. - It can be disabled by "(setq twittering-allow-insecure-server-cert t)". -* Replacement of unknown numeric character references with its alternative. - The alternative can be specified by "twittering-unicode-replacement-char". - Its default value is U+FFFD. -* Addition of the files ".nosearch". - The files ".nosearch" are added to sub-directories. This makes the sub- - directories be excluded from recursive registration of "load-path". -* Suppression of multiple authorization. - Authorization will be performed only once even if multiple timelines - are specified as initial timelines. -* Independence of byte-compiled form from "cl". - Byte-compiled `twittering-mode.el' does not depend on `cl'. -* Update of the embedded CA certificate. - The embedded CA certificate is replaced with `Equifax Secure Certificate - Authority'. -* Support for StatusNet. - You can switch `twittering-mode.el' to StatusNet mode by - "(setq twittering-service-method 'statusnet)". Note that you cannot - use one instance of Emacs with `twittering-mode.el' for Twitter and - StatusNet simultaneously. - To use StatusNet, you must configure variables of host information. - For the service on `http://identi.ca/', you may require the below - configuration. - (setq twittering-service-method 'statusnet) - (setq twittering-auth-method 'basic) - (setq twittering-username "YOUR-ACCOUNT-NAME") - ;; host - (setq twittering-api-host "identi.ca") - (setq twittering-api-search-host "identi.ca") - (setq twittering-web-host "identi.ca") - ;; paths for API - (setq twittering-api-prefix "api/") - (setq twittering-search-api-method "api/search") - (setq twittering-web-path-prefix "") -* Copy a URI in a tweet or a URI pointing to the tweet by "U". - Thanks to Faried Nawaz. -* Copy tweets by "C-". - Thanks to Faried Nawaz. -* Support for `wget'. - The external program `wget' can be used for communicating with Twitter - as well as `curl'. You can give priority to `wget' by the below - configuration. - (setq twittering-connection-type-order '(wget curl native)) -* Display of the current connection method on the mode-line. - By default, the current connection method is displayed on the mode-line. - You can disable it by "(setq twittering-display-connection-method nil)". -* Silent retrieval of icons. - The default value of `twittering-url-show-status' is changed to nil. - So, icons are retrieved silently by default. -* New connection methods, `urllib-http' and `urllib-https'. - New connection methods are added, which are implemented by using `url' - library. The library supports HTTP redirection, but it may be slow and - unstable. This method is not recommended if you can use other methods. - If you give incorrect account information on BASIC authentication or - xAuth with this new methods, you will be asked to input account - information again. This behavior is a function of the url library, but - twittering-mode cannot use account information given on the second try. - When you are asked to input it again, cancel it by 'C-g' and do - 'M-x twit'. -* Redisplaying tweets with idle timer. - Twittering-mode waits for Emacs to become idle before it redisplays - tweets for time and icon image. Tweets are redisplayed each time Emacs - remains idle for a certain time specified by the variable - `twittering-timer-interval-for-redisplaying', which is 1 second by - default. -* Retrieval of icon images by `curl' and `wget'. - Icon images can be retrieved by the same connection method as that used - for retrieving tweets. The priority of methods is similarly determined - by `twittering-connection-type-order'. -* Lazy invocation of `convert'. - The program `convert' for converting the size of icon images is invoked - after Emacs remains idle a certain time. The delay will prevent Emacs - from stucking on inputting characters on other buffer. The delay time is - specified by the new variable `twittering-url-request-sentinel-delay', - which is 1 second by default. -* Support for favorites timeline. - ":favorites" and ":favorites/USER" are added as new timeline specs. - By using the latter, you can read favorites for other users. You can - specify a username with completion when you input ":favorites/" for - `twittering-visit-timeline' bound to "V" in default. - Note that favorites are rendered in order of time when each tweet is - posted. This is because it is impossible to retrieve the time when a - tweet was favorited. At most, 20 favorites can be retrieved. Backward - retrieval of more previous favorites is not supported yet. -* Support for new URL shortening services. - You can use `bit.ly', `goo.gl', `is.gd' or `j.mp' as URL shortening - service by the following. - (setq twittering-tinyurl-service 'bit.ly) ;; for bit.ly - (setq twittering-tinyurl-service 'goo.gl) ;; for goo.gl - (setq twittering-tinyurl-service 'is.gd) ;; for is.gd - (setq twittering-tinyurl-service 'j.mp) ;; for j.mp - To use `bit.ly' or `j.mp', you need to configure `twittering-bitly-login' - and `twittering-bitly-api-key' according to your account as follows. - (setq twittering-bitly-login "YOUR-LOGIN-NAME") - (setq twittering-bitly-api-key "YOUR-API-KEY") - Thanks to Michael Kohl and Lars Gregori. -* Change of the format specifiers, "%c", "%C", "%@", for official ReTweet. - `created_at' for official ReTweet means when the original tweet was - posted instead of when it was retweeted. -* Function to report a user as a spammer. - The function `twittering-block-and-report-as-spammer' is added. By - invoking the function on a tweet, you can block its author and report - him or her as a spammer. -* Function to block a user. - The function `twittering-block' is added. By invoking the function - on a tweet, you can block its author. -* Support for persistent icon storage. - By "(setq twittering-use-icon-storage t)", you can save retrieved - and resized icon images into a persistent storage, which is disabled - in default. On next and later invocation, twittering-mode can - display icons faster because the storage reduces time required to - retrieve and resize images. - In default, recently rendered 500 icons are stored at most. You can - change the limit by the variable `twittering-icon-storage-limit'. To - store all icons, configure the variable as nil. - The default storage file is `~/.twittering-mode-icons.gz'. You can - change it by changing `twittering-icon-storage-file'. Note that icon - images in the storage generated on a certain version of Emacs may be - unavailable on another version of Emacs. -* New format specifier "%RT{...}". - For `twittering-status-format', the new format specifier "%RT{...}" - is added, which is rendered only when the tweet is an official - ReTweet. In the brace, you can use any format specifiers, which are - rendered with the information of the retweet itself instead of the - retweeted original tweet. For example, "%RT{%s}" means who retweeted - the tweet. -* Cancel of official ReTweets. - If an official ReTweet has been posted by yourself, you can cancel - it by 'C-cD', which is the same way of deleting a tweet. -* Completion of lists to which a specific user subscribes. - You can visit a list to which a specific user subscribes by 'C-uL'. - Thanks to Naohiro Aota. -* Edit skeleton. - Edit skeleton is a dynamic template system on posting a tweet. You - can define an "edit skeleton", which specifies what string is - automatically inserted as a footer, header or others before editing - a tweet. `twittering-edit-skeleton-alist' is the alist of edit - skeletons. For further details, see docstring of - `twittering-edit-skeleton-alist'. - The following edit skeletons are pre-defined; - none: insert nothing, - footer: insert `twittering-edit-skeleton-footer' as a footer, - footer-only-normal: insert `twittering-edit-skeleton-footer' as a - footer only when the tweet being edited is a normal tweet, not a - reply or direct message, - inherit-hashtags: insert hashtags extracted from the replied tweet, - inherit-mentions: insert mentions extracted from the replied tweet, - inherit-any: insert hashtags and mentions extracted from the replied - tweet. - You can switch the current edit skeleton by invoking - `twittering-switch-edit-skeleton'. - The footer string, `twittering-edit-skeleton-footer', can be changed - by invoking `twittering-edit-skeleton-change-footer'. -* Variable of fallback image format. - You can change the fallback format of images by changing the - variable `twittering-fallback-image-format'. The default format is - XPM. Images which Emacs does not supports are displayed by - converting them into the fallback format. - By the following configuration, you may avoid strange behaviors when - displaying XPM images on NTEmacs. Thanks to Silver Chariot. - (setq twittering-fallback-image-format 'png) - -### Bug fixes - -* Support for the url library included in Emacs 23 and later. -* Fix of options of `curl' for POST with an empty body. -* Fix of retweeting a retweet. -* Fix of a race condition on abnormal exit of a process for verification. -* Fix of replying to tweets displayed as replied tweets. - Thanks to Naohiro Aota. -* Fix of rendering the format specifier "%L". - The specifier "%L" is correctly rendered with a preceding whitespace. - Thanks to Tom X. Tobin. -* Fix of repeatedly registering a sentinel for retrieving an image. - - 1.0.0: 2010-06-05 ------------------- - -### Important notice - -#### Posting tweets with minibuffer is obsolete now. - -There's two way to edit and post tweets in twittering-mode: with -minibuffer (existing way), and with pop-up buffer (new feature!). You -can choose it by setting the variable -`twittering-update-status-function`. Currently its default value is -the new way, `twittering-update-status-from-pop-up-buffer`. If you -want to post from minibuffer, set the variable value to -`twittering-update-status-from-minibuffer`. - -The new feature, pop-up buffer, has several advantages over the -existing way. - -* Not conflicting with input methods. -* Much less risk of posting halfway typed tweets by error. -* Visual assertion of length of tweets. - -### Improvements - -* Introduction of a concept 'timeline spec'. -* Pop-up buffer to edit and post tweets. -* Auto proxy setup with environment variables (http_proxy, HTTP_PROXY) -* Support for official ReTweet. -* Added some format specifiers of tweets. -* Support for recursive format specifiers such as - "%FILL{%FACE[bold]{%C{%m/%d}}: %T}". -* Support for user-defined prefix on filling by "%FILL[prefix]{...}". -* Displaying image files without temporary files. -* Support multiple buffers, where their name is derived from timeline spec. -* Multiple initial timelines by setting a list of timeline spec strings to - the variable `twittering-initial-timeline-spec-string'. -* Toggle automatic retrieval of the timeline by pressing 'a'. -* Improved compatibility with global-font-lock mode. -* Unread statuses notifier on mode-line (experimental). -* Switching timeline buffers by pressing 'f' or 'b'. -* Graphical indicators for SSL and ACTIVE/INACTIVE state on mode-line. -* Asynchronous retrieval of icon images. -* Deleting a tweet by inputting 'C-cD'. -* HTTPS connection using `tls' library working with an external command - `gnutls' or `openssl' instead of `curl'. -* Individual proxy configurations for HTTP and HTTPS. - If `twittering-proxy-server' and `twittering-proxy-port' are non-nil, - they have priority over the other variables `twittering-http-proxy-*' and - `twittering-https-proxy-*'. To use individual proxies for HTTP and HTTPS, - you must keep the prior variables (`twittering-proxy-server' and - `twittering-proxy-port') nil. -* Silent retrieval of icon images. - You can enable silent retrieval by "(setq twittering-url-show-status nil)". -* Authentication via OAuth. - It requires a consumer information registered with Twitter and an external - WWW browser to authorize a request token. Additionally, for SSL, it - requires an external command `curl' or another command included in the - variable `tls-program', which may be `openssl' or `gnutls-cli'. - (Caution: Neither `openssl' nor `gnutls-cli' support SSL via proxy.) - You can disable SSL for OAuth by "(setq twittering-oauth-use-ssl nil)". - You can enable OAuth by "(setq twittering-auth-method 'oauth)". - If `twittering-oauth-invoke-browser' is non-nil, twittering-mode - automatically opens a browser on authorization. - -### Bug fixes - -* Avoid SSL certificate error by embedding CA cert in code. - * twittering-cert-file - * twittering-ensure-ca-cert -* Fix URI (percent) encoding (thanks to IMAI Toshiyuki). - * twittering-url-reserved-p - * twittering-percent-encode -* Improved portability. - * twittering-completing-read -* And lots of minor fixes - -### Thanks to - -* Alberto Garcia -* IMAI Toshiyuki - - 0.9.0: 2009-12-29 -------------------- - -### Improvements - -* Moved to GitHub. -* Brand new web site in English and Japanese. -* Secure sessions via HTTPS if 'cURL' is available. -* Lists support. -* Follow/remove support. -* Favorite/unfavorite support. -* Hash tag support. -* Direct message support. -* On-the-spot TinyURL-ize(tinyurl or to.ly). -* On-the-fly tweet length check. -* ReTweet format string. -* Remembers visited user names and tweets. -* Parameterized the number of tweets retrieved at a time. -* Walk through items(username, URL, etc) by TAB. -* Image type discriminant with 'file' program if available. -* More descriptive error messages on minibuffer. -* Do not discard old timeline data as possible. -* Suspend by hitting 'q'. -* Image file resize with 'convert' program(imagemagick) if available. -* Unit test framework was introduced. -* Support 'Proxy-connection: Keep-Alive'. -* Flexible format string function (twittering-format-string). -* Refactored 'twittering-format-status' by twitterint-format-string. -* More efficient HTTP response processing. - -### Bug fixes - -* URL cannot not be opened by mouse-click or Enter. -* Don't set the original status ID when retweeting. -* Wrong regexp for searching URL in status text. -* Username extraction from status text. -* Update mode-line immediately. -* Use a temporary buffer for each HTTP session. -* Use MD5 hash to distinguish image files with the same name. -* Check whether temp buffers are alive in sentinels before killing them. -* And some typos. - -### Thanks to - -* Alberto Garcia -* Jaemok Jeong -* Kouhei Sutou -* Naohiro Aota -* Satoshi Yatagawa -* Tadashi MATSUO -* Thomas Danckaert -* Tsuyoshi CHO -* IMAI Toshiyuki diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/NEWS.ja b/xemacs-packages/lisp/twittering-mode-3.0.0/NEWS.ja deleted file mode 100644 index 9480ef96..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/NEWS.ja +++ /dev/null @@ -1,618 +0,0 @@ - - NEWS -- twittering-modeのあゆみ -================================= - - HEAD: XXXX-XX-XX ------------------- - -### 重要なお知らせ - -### 改良 - -### バグ修正 - - 3.0.0: 2013-04-21 ------------------- - -### 重要なお知らせ -* 暗黙に署名を付加する機能の廃止 - 関数`twittering-sign-string-function'と変数 - `twittering-sign-simple-string'の機能は廃止されました。同様の機能は - `edit skeleton'で設定できますので、こちらを使ってください。 - 例えば以前までの設定 - (setq twittering-sign-simple-string "footer") - は、以下の設定で置き換えられます。 - (setq twittering-edit-skeleton-footer " [footer]") - (setq twittering-edit-skeleton 'footer) -* 変数`twittering-scroll-mode'の廃止 - 変数`twittering-scroll-mode'は廃止されました。現在の版は、過去の版で - scroll-modeが有効であったときのように振舞います。最新のtweetに追従す - るには、timelineバッファの最新側のヘッダもしくはフッタ上にカーソルを - 置いてください。 -* "C-cD"の代替として"C-cC-w"を導入 - これまで、"C-cD"がtweet削除用関数'twittering-delete-status'にbindさ - れていました。しかしこのキーはEmacsのKey Binding Conventionsに則って - いません。そこでその代替として"C-cC-w"を同関数にbindしました。"C-cD" - も有効ですが、"C-cC-w"の使用を推奨します。 - -### 改良 -* 現在のtimelineに応じたedit skeleton - 現在のtimelineに応じたedit skeletonを定義できるようになりました。 - 詳しくは変数`twittering-edit-skeleton-alist'のdocstringを参照くださ - い。 - また、定義済みedit skeleton `inherit-hashtags'と`inherit-any'は現在 - のtimelineがハッシュタグを含むようなsearch timelineである場合に、そ - のハッシュタグを自動で追加するよう変更されています。 -* 超過文字列の強調表示無効化 - 通常、`twittering-edit-mode'では140字を超える部分にoverlay - `twittering-warning-overlay'を付加して強調表示するようになっています。 - しかし環境によってはinput methodとこのoverlayの更新とが干渉して問題 - を起こす場合があるようです。そのような場合、下記の設定でoverlayの付 - 加を無効化すれば問題を回避できる可能性があります。 - (setq twittering-disable-overlay-on-too-long-string t) -* tweet中のURI文字列へのジャンプ - tweet中のURI文字列へジャンプするコマンド`twittering-goto-next-uri'、 - `twittering-goto-previous-uri'が追加されました。 - また、旧来のコマンド`twittering-goto-next-thing'と - `twittering-goto-previous-thing'にC-uでprefix argumentを与えると - tweet中のURI文字列だけを対象としてジャンプするようになりました。 -* CA証明書を追加 - 新たにRoot CA証明書`VeriSign Class 3 Public Primary CA - G2'と - `GeoTrust Global CA'を内蔵しました。これらの証明書はそれぞれ、 - `api.twitter.com'と`search.twitter.com'のサーバ認証で参照されます。 - 以前から内蔵されている証明書`Equifax Secure Certificate Authority'は - URI短縮に用いる`www.googleapis.com'のサーバ認証でのみ参照されるよう - になりました。 -* 新たな短縮URL生成サービスに対応 - 新たに`migre.me'に対応しました。下記のような設定で有効にできます。 - (setq twittering-tinyurl-service 'migre.me) ;; for mig.re -* 指定したユーザ関連のretweetを集めたtimelineに対応 - 新しく":retweeted_by_user/USER", ":retweeted_to_user/USER"の2種類の - timelineに対応しました。前者は指定したユーザUSERが投稿したretweetを - 集めたtimelineで、後者は指定したユーザのhome timelineに届くretweetを - 集めたtimelineです。 - `twittering-visit-timeline'(デフォルトでは"V"にbindされています)で指 - 定する際には":retweeted_by_user/"もしくは":retweeted_to_user/"と入力 - してEnterを入力すると、続けて補完機能付きでユーザ名を入力できます。 -* 文字数カウント時にt.coでの短縮を考慮 - tweetを編集する際に、t.coでのURI変換を考慮した文字数を表示するように - なりました。変換後の文字数はhelp/configuration APIを通じて定期的に更 - 新されます。デフォルトの更新間隔は1日ですが、変数 - `twittering-service-configuration-update-interval'で変更することもで - きます。 -* 非ASCII文字を含むハッシュタグへの簡易的な対応 - 非ASCII文字を含むハッシュタグについても、強調表示されるようになり、 - `v'でそのtimelineを開くことができるようになりました。ハッシュタグの - 検出基準がTwitterのweb UIのそれとは多少異なる点に注意してください。 - 今のところ大きな問題は見つかっていませんが、場合によっては - twittering-mode上でハッシュタグと見なされる文字列がTwitterのweb UIで - はハッシュタグとは見なされない恐れはあります。 -* t.coで短縮されたリンクを短縮前のURLで表示 - Twitter公式のt.coサービスで短縮されたリンクが短縮前のURLとして描画さ - れるようになりました。但し`json.el'が利用不可の場合はsearch timeline - 上ではt.coで生成されたURLがそのまま描画されます。また、リンク上で - `twittering-enter'(デフォルトでは`C-m')を実行した場合は短縮URL経由で - 開かれます -* mentionのみからなるtweetの投稿 - ポップアップバッファからであれば、mentionのみからなるtweetも投稿でき - るようになりました。 -* `revive.el'によるtimelineバッファの復元 - HIROSE Yuujiさん作のEmacs LISPプログラム`revive.el'でtimelineバッファ - を復元できるようになりました。設定方法には下記の2通りがあります。 - 1. 手動登録 - (add-to-list 'revive:major-mode-command-alist-private - '(twittering-mode . twittering-revive:twittering)) - (add-to-list 'revive:save-variables-local-private - '(twittering-mode twittering-timeline-spec-string)) - (require 'revive) - 2. 関数を使っての自動登録 (revive.el 2.19用) - (require 'revive) - (twittering-setup-revive) - 上記設定で、手動登録の`(add-to-list ...)'の部分は`revive.el'をloadす - る前に評価する必要がある点に注意してください。また逆に自動登録の場合 - は`revive.el'をloadした後で`(twittering-setup-revive)'を評価する必要 - があります。 - また、同じくHIROSE Yuujiさん作のEmacs LISPプログラム`windows.el'は - `revive.el'を暗黙にloadしますので、`windows.el'をloadするタイミング - にも注意してください。 -* `twittering-retweet-format'用の新しい書式指定子"%u" - `twittering-retweet-format'で指定できる書式指定子として"%u"が追加さ - れました。これは引用されるtweetを指すURLと置き換えられます。 -* skeletonによる非公式ReTweetの初期文字列設定 - 非公式ReTweetを編集する際の初期文字列を指定する変数 - `twittering-retweet-format'にskeletonを指定できるようになりました。 - 文字列に加えて編集開始時のカーソル位置も指定できます。skeletonに含ま - れる文字列を下記の対応表によって変換してから、関数`skeleton-insert' - で挿入します。 - 対応表は以下の通りです。 - %s - 引用されるtweetの投稿者のscreen-name - %t - 引用されるtweetの内容 - %u - 引用されるtweetを指すURL - %# - 引用されるtweetのID - %% - %自身 - この表は`twittering-retweet-format'に適用される規則と同じです。 - この変数`twittering-retweet-format'による初期文字列の挿入後に変数 - `twittering-edit-skeleton'で指定されたedit skeletonが適用される点に - 注意してください。 -* edit skeleton用に非公式ReTweetを示すシンボルを追加 - edit skeletonにおける編集中tweetの種別を表現するシンボルに - `organic-retweet'が追加されました。非公式ReTweetにのみ適用されるedit - skeletonを定義できます。但し、現在の実装ではedit skeleton側から非公 - 式ReTweetされようとしているtweetの内容を参照することはできません。 -* 非ASCII文字を含むリスト名に対応 -* search timeline上での返信先tweetの表示 - `json.el'が使用可能な場合には、search timelineにおいても返信先tweet - のIDが取得できるようになりました。`json.el'が使用可能であれば関数 - `twittering-toggle-show-replied-statuses'(デフォルトでは"r"にbindさ - れています)を呼び出すことで返信先tweetを表示できます。 -* ヘッダとフッタの表示 - timelineバッファにヘッダとフッタが表示されるようになりました。これら - はtweetとは独立の特別な行として描画されます。ヘッダやフッタ上でEnter - キーを押す(もしくは`twittering-enter'を実行する)と、それがtimelineの - 時系列で最新の側か過去の側かに応じてtweetを取得して描画します。 - また、ヘッダとフッタの内の最新側にカーソルを置いておくと、常にカーソ - ル行の近くに最新tweetを描画するようにできます。 - ヘッダ、フッタとして表示される文字列は、`twittering-timeline-header'、 - `twittering-timeline-footer'という変数で変更できます。また、表示する - 際のfaceは`twittering-timeline-header-face'と - `twittering-timeline-footer-face'で変更できます。 -* exclude-if timelineに対応 - 新しく":exclude-if/FUNC/SPEC"というtimelineに対応しました。この - timelineはSPECで表されるものとほぼ同じですが、関数FUNCがnon-nilを返 - すようなtweetは除外されている点が異なります。FUNCはひとつのtweetに対 - 応した連想リストをひとつ受け取る関数でなければなりません。FUNCとして - はλ式もしくは関数に対応するシンボルが指定できます。但しシンボルで指 - 定する場合、名前に"("や"/"を含むものは指定できません。SPECには任意の - timeline specを指定できます。例えば、home timelineから"WORD"を含む - tweetを除外したtimelineは下記のtimeline specで指定できます。 - ":exclude-if/(lambda (tweet) (string-match \"WORD\" (cdr (assq 'text - tweet))))/:home" -* merge timelineに対応 - 新しく"(SPEC1+SPEC2)"や"(SPEC1+SPEC2+SPEC3)"といった形式のtimelineに - 対応しました。merge timelineは指定したtimelineのtweetを全て含む - timelineです。任意のtimeline specを構成要素にできます。例えば、 - "(:direct_messages+:direct_messages_sent)"というtimeline specを使え - ばこれまでに送ったり受け取ったりしたdirect messageの全てをひとつのバッ - ファに表示できます。 -* tweet描画時に実行される新しいhookの追加 - 新しいhook変数`twittering-new-tweets-rendered-hook'を追加しました。 - このhookは実際に新しいtweetを描画したときに実行されます。以前に取得 - したtweetを再描画する際には実行されません。既存のhook変数 - `twittering-new-tweets-hook'はtweetの取得に成功するたびに実行される - ので、exclude-if timelineやmerge timelineのような複合timelineに含ま - れる実際には描画されないtweetについてもhookを実行します。新しいhook - は複合timelineについてもうまく動作します。 - hook内では、`twittering-rendered-new-tweets'という変数で描画された - tweetのリストを参照できます。他にも描画されたtimelineを表すtimeline - specとtimeline spec文字列を`twittering-rendered-new-tweets-spec'と - `twittering-rendered-new-tweets-spec-string'という変数で参照できます。 - 詳細は`twittering-new-tweets-rendered-hook'のdocstringを参照してくだ - さい。 -* 大域変数初期化時に実行される新しいhookの追加 - 新しいhook変数`twittering-mode-init-hook'を追加しました。このhookは - 大域変数を初期化した後に実行されます。twittering-mode用のbufferを作 - 成するたびに実行される`twittering-mode-hook'とは異なり、新しいhookは - 一度しか実行されません。 -* 編集バッファ上でのtweet種別の表示 - 編集中のtweetについての情報が編集バッファの先頭に表示されるようにな - りました。編集中のtweetがreplyなのか、direct messageなのか、あるいは - 通常のtweetなのかが確認できます。reply先のtweet内容のコピーもできま - す。 -* 編集中のtweetをreplyとして送るかどうかの切り替え - 編集中のtweetをreplyとして送るかどうかを編集バッファ上で切り替えられ - るようになりました。関数`twittering-edit-toggle-reply'(デフォルトでは - "C-c C-r"にbindされています)を呼ぶたびにreplyとして送るかどうかが切 - り替わります。 -* exclude-re timelineに対応 - 新しく":exclude-re/REGEXP/SPEC"というtimelineに対応しました。この - timelineはSPECで表されるものとほぼ同じですが、正規表現REGEXPにマッチ - するようなtweetは除外されている点が異なります。REGEXP内で / を指定す - る際は \ でエスケープする必要があります。例えば、Emacsの文字列リテラ - ル":exclude-re/\\//:home"で表されるtimelineでは、 / を含むtweetが除 - 外されています。 -* replyの系列の逐次取得 - 新しい関数`twittering-toggle-or-retrieve-replied-statuses'(デフォル - トでは"R"にbindされています)を使って、replyを遡って取得できるように - なりました。この関数の動作は下記の通りです。 - - カーソルがreply、もしくは展開表示されたreply先のいずれかを指してい - て、そのreplyの系列の一部がまだ表示されていない場合、そのreply系列 - を可能な限り表示します。reply系列内のいくつかのtweetが未取得の場合 - には、その内の最新のものを取得し、表示します。 - - カーソルがreply、もしくは展開表示されたreply先のいずれかを指してい - て、そのreplyの系列が全て展開表示されている場合、展開表示をとりや - めます。 - - カーソルがreply系列内のtweetを指していない場合、何もしません。 -* 編集バッファ用を開く方法の設定 - 新たに変数`twittering-pop-to-buffer-function'を追加しました。この変 - 数は編集バッファを開く方法を指定するものです。デフォルトの値は関数 - `twittering-pop-to-buffer-in-bottom-largest-window'となっています。 - この関数は現在のフレーム内で最下段にあるウィンドウの内、面積最大のも - のを分割することで編集バッファ用のウィンドウを確保します。他にも、関 - 数`twittering-pop-to-buffer-in-current-window'を指定することもできま - す。この関数は現在のウィンドウを分割してウィンドウを確保します。 -* single tweet timelineに対応 - 新しく":single/ID"というtimelineに対応しました。このtimelineはIDで - 指定されたtweetのみからなるtimelineです。非常に古いtweet等にアクセス - するのに利用できます。 -* tweetに含まれるURLからのsingle tweet timeline取得 - 特定のtweetを指すURL上で関数`twittering-other-user-timeline'を呼ぶこ - とで、そのtweetに対応したsingle tweet timelineを開けるようになりまし - た。この関数はデフォルトでは"v"にbindされています。 -* 特定日時以前のtweetを取得するコマンドを追加 - 現在のtimelineの、指定した日時以前のtweetを取得できる新しいコマンド - `twittering-get-tweets-before'が追加されました。 -* favorites timelineで過去のtweetの遡って取得する機能を追加 -* timelineごとに異なる取得間隔 - 新しい変数`twittering-relative-retrieval-interval-alist'で、timeline - ごとに取得間隔を変更できるようになりました。この変数は正規表現と相対 - 間隔からなる連想リストです。この正規表現にマッチするtimelineは、 - `twittering-timer-interval'を「相対間隔」倍した間隔で更新されるよう - になります。 -* Twitter REST API v1.1に対応 - 変数`twittering-service-method'の値を`twitter-api-v1.1'に変更しまし - た。この設定でtwittering-modeはTwitter REST API v1.1を使うようになり - ます。この場合、SSL接続とJSON解析器が必要です。SSL接続にはcURL with - OpenSSL, GNU Wget with OpenSSL, OpenSSLとGnuTLSのいずれかが必要で、 - さらにJSON解析器として`json.el'が必要となる点に注意してください。 - Emacs22とそれ以前のEmacsでは`json.el'が同梱されていませんので別途用 - 意する必要があります。 - また、Twitter REST API v1.1ではいくつかのtimelineが廃止されています。 - 廃止されたtimelineに対応するtimeline spec文字列は":friends", - ":replies", ":public", ":retweeted_by_me", ":retweeted_to_me", - ":retweeted_by_user/USER", ":retweeted_to_user/USER"です。 - -### バグ修正 -* 認証成功・失敗についてのメッセージが表示されるよう修正 -* 利用可能な通信方法(connection method)の確認処理の修正 -* HMAC-SHA1の計算を修正 - 以前の`twittering-hmac-sha1'は現在のcoding-systemによっては間違った - 結果を返す場合がありました。この問題を修正しました。 -* 数字からなるユーザ名(screen_name)とユーザIDの混同を一部修正 - 他ユーザのtimelineを取得する際、数字のみからなるユーザ名を指定すると - ユーザIDと混同してしまう問題を修正しました。他ユーザの「お気に入り」 - (favorites)を取得する場合にも同様の問題が起こりますが、こちらは修正 - できていません。「お気に入り」を取得するAPIにユーザIDではなくユーザ - 名を指定するパラメータがないためです。 - Thanks to Makoto Fujiwara who reported this problem. -* tweet編集バッファを開いた際の意図しないカーソル移動を解消 - `twittering-mode'で管理されていないバッファから - `twittering-update-status-function'を呼び出して編集バッファを作ると - 元のバッファでのカーソルが不必要に動かされてしまうバグを解消しました。 - Thanks to mofigan who reported this problem. -* アイコン保存処理を修正 - `twittering-icon-storage-limit'もしくは`twittering-convert-fix-size' - がnilの場合に、アイコンが正しく保存できていなかったのを修正しました。 - Thanks to HufflepuffBR who reported this problem about the former - variable `twittering-icon-storage-limit'. -* byte-compile時、`load-path'に無条件でパスが追加される問題を解消 - twittering-modeのrepositoryに含まれているディレクトリ`emacs21', - `url-emacs21'がbyte-compile時に無条件で`load-path'に加えられており、 - byte-compile時にいくつかのマクロがEmacs21用の古い定義として取り込ま - れていました。古い定義は22以降のEmacs上で使うことができませんので - byte-compileによって正しく動作しないファイルが生成される状態になって - いました。そこでbyte-compile時にもEmacs 22以降ではパスが追加されない - よう変更して、この問題を解消しました。 - Thanks to HKey who has discovered the bug. -* カーソル移動がおかしくなる問題を解消 - tweetに割り当てたtext propertyが干渉して、twittering-modeのbuffer内 - での論理行単位のカーソル移動がおかしくなっていました。この問題を解消 - しました。 - Thanks to lemit who reported the problem. -* bufferからtweetを消すのをtweet削除APIが成功した後に変更 - bufferからtweetを消去するタイミングを`destroy-status' APIが成功した - という応答を受け取った後に変更しました。APIが失敗に終わった場合、 - 対象tweetはbufferに残っているので再度削除を試みることができます。 -* search timeline spec内の検索文字列のエスケープを修正 -* 非同期実行される関数がエラーを起こしていたのを修正 - 存在しないユーザのtimelineを取得しようとすると非同期実行される関数が - エラーを起こしてしまっていましたので、修正しました。 - - 2.0.0: 2011-04-22 ------------------- - -### 重要なお知らせ - -### 改良 - -* OAuth, xAuthで取得した認証済みaccess tokenの暗号化保存に対応 - 認証済みaccess tokenをGnuPGで暗号化して保存することができます。 - tokenを保存しておけば、次回以降の起動時にOAuthのための外部 - ブラウザ起動やPIN入力等の手続きは必要なくなります。代わりに暗号化を - 解くためのpassphraseを入力してください。 - この機能は"(setq twittering-use-master-password t)"とすれば有効に - なります(デフォルトでは無効です)。 - 暗号化された秘密情報はデフォルトでは`~/.twittering-mode.gpg'に記録 - されますがこの保存先は変数`twittering-private-info-file'で変更可能 - です。 - この機能を有効にするには外部プログラムGnuPGに加えてEmacs LISPプロ - グラム`alpaca.el'かEasyPGが必要です。Emacsは23以降であればEasyPGを - 同梱していますので追加のEmacs LISPプログラムは必要ありません。 - `alpaca.el'はversion 0.13を想定していますので、他のversionでは動作に - 問題がある恐れがあります。 -* xAuthのサポート - OAuth認証の他にxAuthによる認証にも対応しました。xAuthによる認証を - 有効にするには"(setq twittering-auth-method 'xauth)"の設定を追加して - ください。 -* PINコード入力時に不必要な空白を自動で削除 -* 起動した外部プロセスのstatusを確認してdead-lockを回避 -* `user', `friends', `mentions', `public'でもnative retweetを表示 -* 起動した外部プロセスの異常終了を検出 - 異常終了したプロセスのexit-statusは"*Messages*"バッファで確認できます。 -* HTTPS通信でのサーバ認証の無効化に対応 - サーバ認証はデフォルトでは有効ですが、これを無効化することもできる - ようになりました。"(setq twittering-allow-insecure-server-cert t)"の - 設定でHTTPS通信時にもサーバ認証を行わなくなります。 -* 未知の数値文字参照を代替文字で置換 - decodeできない数値文字参照が現れたときにその文字を変数 - `twittering-unicode-replacement-char'で指定された文字に置換して表示 - します。代替文字のデフォルトはU+FFFDです。 -* サブディレクトリに`.nosearch'を追加 - 必要のないサブディレクトリが再帰的に`load-path'に追加されるのを防ぎ - ます。 -* 初期timelineを複数設定している場合の認証情報入力回数を1回に変更 -* byte-compile後のclライブラリへの依存を解消 -* 内蔵しているCA証明書を更新 - 内蔵しているCA証明書を`Equifax Secure Certificate Authority'で置き - 換えました。 -* StatusNetモードをサポート - `twittering-mode.el'をStatusNet用に切り替えられるようになりました。 - "(setq twittering-service-method 'statusnet)"という設定で切り替わ - ります。TwitterとStatusNetを同時に使うことはできませんので注意して - ください。 - StatusNet向けに使うにはホスト情報の設定も必要になります。 - `http://identi.ca/'でのサービスの場合、以下のような設定が必要です。 - (setq twittering-service-method 'statusnet) - (setq twittering-auth-method 'basic) - (setq twittering-username "YOUR-ACCOUNT-NAME") - ;; host - (setq twittering-api-host "identi.ca") - (setq twittering-api-search-host "identi.ca") - (setq twittering-web-host "identi.ca") - ;; paths for API - (setq twittering-api-prefix "api/") - (setq twittering-search-api-method "api/search") - (setq twittering-web-path-prefix "") -* "U"でtweet中のURIやそのtweet自体へのURIをコピー - Thanks to Faried Nawaz. -* "C-"でtweetをコピー - Thanks to Faried Nawaz. -* wgetによるtweet取得に対応 - Twitterサーバとの通信に外部プログラムwgetを使えるようになりました。 - 下記の設定でwgetが優先して使われるようになります。 - (setq twittering-connection-type-order '(wget curl native)) -* 現在の通信方法(connection method)をモードライン上に表示 - デフォルトで現在の通信方法(connection method)がモードライン上に表示 - されます。下記の設定で表示しないようにもできます。 - (setq twittering-display-connection-method nil) -* アイコン取得時の情報表示をデフォルトで抑制 - `twittering-url-show-status'のデフォルト値がnilに変更されました。 - デフォルトではアイコン取得時の情報は表示されなくなります。 -* urlライブラリによるtweet取得に対応 - 通信方法(connection method)として`urllib-http'と`urllib-https'を追加 - しました。`native'とは異なりHTTP redirectionもサポートしていますが - 動作は遅く、また不安定になる場合もあるようです。他のmethodが利用できる - 場合にはそちらを用いることを推奨します。 - `urllib-http',`urllib-https'を用いてのBASIC認証,xAuthで間違ったアカウ - ント情報を与えるとurlライブラリの機能で再入力を求められますが、再入力 - した情報で通信を続行することはできません。再入力を求められたときはC-g - でキャンセルし、改めてM-x twitを実行してください。 -* ユーザからの入力待ち状態になってから再描画 - 時刻やアイコン画像の表示のためのtweetの再描画を、Emacsがユーザからの - 入力待ち状態(idle状態)に入り、その状態が一定時間継続してから行うように - しました。待ち時間は変数`twittering-timer-interval-for-redisplaying'で - 指定できます。デフォルトの待ち時間は1秒です。 -* curlやwgetでのアイコン画像取得に対応 - アイコン画像の取得にtweet取得と同じ通信方法(connection method)が使える - ようになりました。各methodの優先順位はtweet取得と同じく変数 - `twittering-connection-type-order'で決定されます。 -* アイコン画像変更プログラムの遅延呼び出し - アイコン画像を指定されたサイズに変更するためのプログラム(convert)実行 - をEmacsがユーザからの入力待ち状態(idle状態)になって一定時間が経過して - から行うようにしました。待ち時間は変数 - `twittering-url-request-sentinel-delay'で指定できます。デフォルトの - 待ち時間は1秒です。 -* 「お気に入り」に対応 - 「お気に入り」一覧を表示するtimeline specとして":favorites"と - ":favorites/USER"を追加しました。":favorites/USER"で指定したユーザの - 「お気に入り」を見ることができます。`twittering-visit-timeline'(デフォ - ルトでは"V"にbindされています)に対して":favorites/"と入力してEnter - すると、続いてユーザ名を補完入力できます。「お気に入り」は元々のtweetの - 投稿時刻の順に表示されるので注意してください。これは「お気に入り」に - 登録した時刻を取得する方法がないためです。また、取得できる「お気に入 - り」は最大20件です。より過去にさかのぼっての取得は未対応です。 -* 新たにいくつかの短縮URL生成サービスに対応 - 新たに`bit.ly', `goo.gl', `is.gd', `j.mp'に対応しました。下記のような - 設定で有効にできます。 - (setq twittering-tinyurl-service 'bit.ly) ;; bit.lyの場合 - (setq twittering-tinyurl-service 'goo.gl) ;; goo.glの場合 - (setq twittering-tinyurl-service 'is.gd) ;; is.gdの場合 - (setq twittering-tinyurl-service 'j.mp) ;; j.mpの場合 - `bit.ly'や`j.mp'を使うにはお持ちのアカウントに応じて下記のように - `twittering-bitly-login'と`twittering-bitly-api-key'を設定しておく必要が - あります。 - (setq twittering-bitly-login "YOUR-LOGIN-NAME") - (setq twittering-bitly-api-key "YOUR-API-KEY") - Thanks to Michael Kohl and Lars Gregori. -* 公式ReTweetについての書式指定子"%c","%C","%@"の意味を変更 - 公式ReTweetの`created_at'は、retweetした時刻ではなくオリジナルの - tweetを投稿した時刻を意味するようになりました。 -* spam送信者報告機能 - 関数`twittering-block-and-report-as-spammer'を追加しました。tweet上で - この関数を呼び出すと、その投稿者をブロックし、さらにspam送信者として - 報告できます。 -* ブロック機能 - 関数`twittering-block'を追加しました。tweet上でこの関数を呼び出すと、 - その投稿者をブロックできます。 -* アイコン画像保存機能 - "(setq twittering-use-icon-storage t)"とすることで一度取得・サイズ変 - 更したアイコン画像を専用のファイルに保存しておけるようになりました。 - この機能はデフォルトでは無効です。次回以降は専用ファイルに格納された - 画像が優先的に使われますのでアイコン取得・サイズ変更にかかる時間が省 - けます。 - デフォルトでは直近に描画されたアイコンを最大500個まで保存します。保 - 存されるアイコンの個数は変数`twittering-icon-storage-limit'で変更で - きます。この変数をnilに設定すると全てのアイコンが保存されます。 - アイコンを保存するファイルはデフォルトでは - `~/.twittering-mode-icons.gz'ですが`twittering-icon-storage-file'と - いう変数で変更できます。あるバージョンのEmacsで生成したアイコン保存 - ファイルは別のバージョンでは使えない恐れがあるので注意してください。 -* 新しい書式指定子"%RT{...}" - `twittering-status-format'で使える書式指定子として"%RT{...}"が追加さ - れました。これは対象となるtweetが公式RTのときだけ描画されます。括弧 - の中には任意の文字列と書式指定子を入れることができ、括弧内の書式指定 - 子はRTされたtweetではなくそのRT自身の情報を使って描画されます。例え - ば、"%RT{%s}"はRTしたユーザのscreen_nameとなります。 -* 公式ReTweetのキャンセル - 自分自身が投稿した公式ReTweetをtweet削除と同じ操作(デフォルトで - は'C-cD')でキャンセルできるようになりました。 -* あるユーザがフォローしているリストの補完付き選択機能 - 'C-uL'で特定ユーザがフォローしているリストを補完付きで選択し、開ける - ようになりました。 -* Edit skeleton - 投稿内容編集開始時に状況に応じて自動的に文字を追加できる仕組みを導入 - しました。edit skeletonはいつ、どのような文字列を先頭に、あるいは末 - 尾に追加するかの規則です。連想リスト`twittering-edit-skeleton-alist' - に要素を追加することで、新しいedit skeletonを定義できます。edit - skeletonの定義方法の詳細については`twittering-edit-skeleton-alist'の - docstringを参照ください。 - デフォルトでは以下のedit skeletonが定義されています。 - none: 何も追加しません。 - footer: `twittering-edit-skeleton-footer'で指定された文字列をフッタ - として末尾に追加します。 - footer-only-normal: footerと同様ですがreplyやdirect messageを編集す - る際には追加を行いません。 - inherit-hashtags: 返信先に含まれるハッシュタグを末尾に追加します。 - inherit-mentions: 返信先に含まれるユーザ参照を先頭に追加します。 - inherit-any: 返信先に含まれるハッシュタグやユーザ参照を追加します。 - 関数`twittering-switch-edit-skeleton'で有効なedit skeletonを切り替え - るにはことができます。 - また、フッタ文字列`twittering-edit-skeleton-footer'の内容は関数 - `twittering-edit-skeleton-change-footer'で変更できます。 -* 代替画像形式を指定する変数 - アイコン画像の形式がEmacsにサポートされていない形式である場合、画像 - をEmacsがサポートする形式に変換してから表示するのですが、その際の変 - 換先の画像形式を指定する変数`twittering-fallback-image-format'を追加 - しました。デフォルトの形式はXPMです。 - 下記のように設定すれば、NTEmacsでXPMを表示する際の不自然な挙動を回避 - できるかもしれません。 Thanks to Silver Chariot. - (setq twittering-fallback-image-format 'png) - -### バグ修正 - -* Emacs 23以降に同梱されているurlライブラリでも正しく動くよう修正 -* 外部コマンドcURLでbodyが空のPOSTを正しく行えるよう修正 -* Native retweetをさらにretweetできるよう修正 - オリジナルのtweetへのretweet扱いになります。 -* アカウント認証時に発生する可能性のあった競合状態が起こらないよう修正 -* 返信先として表示されているtweetへの返信を正しく扱うよう修正 - `twittering-show-replied-statuses'で返信先として表示されているtweetに - 対して`twittering-enter'で返信したときに、カーソル下のtweetに対する - 返信となるよう修正しました。 - Thanks to Naohiro Aota. -* 書式指定子"%L"の振舞いを修正 - `twittering-status-format'のdocstringの通りに空白が挿入されるように - なりました。 - Thanks to Tom X. Tobin. -* アイコン画像取得の際に同一sentinelを複数回登録していたのを修正 - - 1.0.0: 2010-06-05 ------------------- - -### 重要なお知らせ - -#### ミニバッファからの投稿はサポート廃止予定です - -twittering-modeでtweetを投稿するには、これまではミニバッファから入力す -る方法を採用していましたが、今回新機能としてポップアップバッファから投 -稿できる機能を実装しました。変数 `twittering-update-status-function` を -設定することによってこの2つの方法を切り替えることができます。今回のリリー -スでは、新しいポップアップバッファがデフォルトに設定されています。従来 -通りミニバッファから投稿したい場合は、この変数の値を -twittering-update-status-from-minibuffer に設定してください。 - -ポップアップバッファによる投稿では、従来の投稿方法に比べて次のような利 -点があります: - -* tweet入力時にIME等と干渉しない -* 入力途中で誤って投稿してしまうミスがおきにくい -* 入力内容の文字数を表示してくれる - -### 改良 - -* ポップアップバッファを用いたtweetの編集、投稿機能 -* 環境変数 http_proxy, HTTP_PROXY を利用した自動プロキシ設定 -* 公式ReTweetサポート -* タイムライン表示のフォーマット指定子に新たなものを追加 -* 一時ファイルを生成しない画像ファイル表示方法を採用 -* 'timeline spec'導入による柔軟なタイムライン表示機能 -* 'timeline spec'導入による複数タイムライン・複数バッファ表示のサポート - * `twittering-initial-timeline-spec-string'を設定することで、初期化時 - に複数のタイムラインを表示させることが可能 -* 自動更新のon/offをサポート(キーボードの'a'で切り替え) -* global-font-lockモードとの親和性向上 -* モードラインでの未読通知 (experimental) -* フォーマット指定子 "%FILL{...}" の修正 -* タイムラインの切り替え機能(キーボードの 'f' と 'b' で切り替え) -* SSLの有効/無効をモードラインの画像で表示 -* アイコン画像の非同期な取得と表示 -* tweetの削除機能('C-cD' で削除) -* 'gnutls', 'openssl'コマンドを利用したtlsライブラリによるHTTPS通信 -* HTTPとHTTPSに個別のプロキシを設定可能に -* 画像取得時の出力を抑制 - * .emacs に (setq twittering-url-show-status nil) を追加することで有 - 効にできる -* OAuth認証対応 - - 0.9: 2009-12-29 ------------------ - -### 改良 - -* GitHubへ移動 -* 英語と日本語でWebサイトを開設 -* cURLが利用可能なときはHTTPSを使ってセキュアに通信するように -* リスト対応 -* フォロー/リムーブ対応 -* お気に入り機能に対応 -* ハッシュタグ対応 -* ダイレクトメッセージ送信に対応 -* URLをその場でTinyURL化する機能 -* 入力文字列の文字数チェック -* ReTweetの形式を選択可能に -* 閲覧したユーザー名や、送信したつぶやきの履歴を保存 -* 一度に取得するつぶやきの数をパラメータ化 -* ユーザー名やURLなどの要素をTABキーで移動可能に -* 'file'コマンドを利用した画像の種類の判別 -* よりわかりやすいエラー出力 -* 取得済みのタイムラインのデータを保持するように -* サスペンド機能 -* Imagemagickが利用可能なときは画像のリサイズを行うように -* 単体テストフレームワークの導入 -* 'Proxy-connection: Keep-Alive'への対応 -* 柔軟な文字列フォーマット関数の導入(twittering-format-string) -* HTTPレスポンス処理の効率改善 - -### バグ修正 - -* マウスクリックやEnterキーでURLを開けない問題を修正 -* ReTweetのときはオリジナルIDを設定しないように -* URL抽出の正規表現を修正 -* ユーザー名抽出の処理を修正 -* モードラインを即時更新するよう修正 -* 各HTTPセッションごとに一時バッファを利用するよう変更 -* MD5ハッシュを利用して同じ名前の画像ファイルの衝突を回避 -* センティネルでバッファをkillする際のエラー処理 -* いくつかの誤字修正 - -### 感謝 - -* Alberto Garcia -* Jaemok Jeong -* Kouhei Sutou -* Naohiro Aota -* Satoshi Yatagawa -* Tadashi MATSUO -* Thomas Danckaert -* Tsuyoshi CHO -* IMAI Toshiyuki - diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/README.ja b/xemacs-packages/lisp/twittering-mode-3.0.0/README.ja deleted file mode 100644 index 816fd874..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/README.ja +++ /dev/null @@ -1,52 +0,0 @@ - Twittering-mode: Emacs用Twitterクライアント -============================================= - -Twittering-modeを使うと、EmacsenからTwitterを利用することができます。 - -- web: http://twmode.sf.net -- github: http://github.com/hayamiz/twittering-mode - - 機能 ------- - -* Twitterの機能への対応状況: - * 様々なタイムラインの閲覧 - * フレンドタイムライン - * 返信 - * ユーザーのタイムライン - * パブリックタイムライン - * つぶやきの投稿 - * ダイレクトメッセージ - * ReTweet - * ハッシュタグ - * 署名 - * フォロー/リムーブ - * お気に入り -* HTTPプロキシ対応 -* HTTPSによる安全な通信 - - 動作確認環境 --------------- - -- GNU Emacs 21 (一部機能制限あり) -- GNU Emacs 22, 23 - - 作者と協力者 --------------- - -- Y. Hayamizu -- naoya_t -- Tsuyoshi CHO -- Alberto Garcia -- Satoshi Yatagawa -- 高山智也 -- 松尾(cvmat) -- 青田(naota) -- Jaemok Jeong(jmjeong) -- Thomas Danckaert -- IMAI Toshiyuki - - 参考 ------- - -- http://www.emacswiki.org/emacs-en/TwitteringMode diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/README.markdown b/xemacs-packages/lisp/twittering-mode-3.0.0/README.markdown deleted file mode 100644 index c0f47b22..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/README.markdown +++ /dev/null @@ -1,338 +0,0 @@ - Twittering-mode: a Twitter client for Emacs -============================================= - -Twittering-mode enables you to twit on Emacsen. - -- web: http://twmode.sf.net -- github: http://github.com/hayamiz/twittering-mode - - Features ----------- - -* Activities on Twitter - * Viewing various timelines - * Home timeline - * Replies - * User's timeline - * Public timeline - * Favorites timeline - * Retweets timeline - * Merged timeline - * Timeline without tweets satisfying a condition - * Posting tweets - * Direct message - * ReTweet - * Hash tag - * Signature - * Following and removing users - * Marking tweets as favorites -* HTTP Proxy support -* Secure connection via HTTPS (cURL, GNU Wget, OpenSSL or GnuTLS is required) - - Supported Emacsen -------------------- - -- GNU Emacs 21 (some restrictions) -- GNU Emacs 22, 23, 24 - - Prerequisites -------------------- - -- For SSL connection, one of the followings is required. - SSL connection is required for the Twitter REST API v1.1. - - cURL http://curl.haxx.se/ - - GNU Wget http://www.gnu.org/software/wget/ - - OpenSSL http://www.openssl.org/ - - GnuTLS http://www.gnu.org/software/gnutls/ -- For parsing JSON, json.el is required. - It is distributed with Emacs 23.1 and later. -- For keeping an OAuth authorized token in a local storage encrypted - with master password, GnuPG ( http://www.gnupg.org/ ) is required. - On Emacs 22 and earlier, either EasyPG ( http://epg.sourceforge.jp/ ) - or alpaca.el( http://www.mew.org/~kazu/proj/cipher/ ) is also - required. -- For displaying icons in formats that are not supported by Emacs and - resizing icon images, ImageMagick ( http://www.imagemagick.org/ ) or - its compatible alternative is required, e.g. GraphicsMagick - ( http://www.graphicsmagick.org/ ). Note that twittering-mode on - icon-mode converts retrieved icons into XPM in default. So, - icon-mode without additional configuration requires, ImageMagick (or - its alternative). -- For keeping retrieved icons in a local storage, gzip - ( http://www.gzip.org/ ) is required. - - Quick start ------------------------- - -0. Put *twittering-mode.el* in a directory specified by the variable - `load-path`. Note that the directories *emacs21* and *url-emacs21* - must be placed at the same directory on Emacs 21. On Windows - without curl or wget, the directory *win-curl* must be placed - there. You can add a directory to the variable `load-path` by - `(add-to-list 'load-path "ADDITIONAL-DIRECTORY")`. -1. Execute `M-x twit` to run twittering-mode. -2. Open OAuth authorization page with an external browser, click *Allow*, - and enter the PIN code in the prompt of Emacs. - - If you have introduced the configuration - `(setq twittering-use-master-password t)`, twittering-mode will - ask you a master password and it will write the authorized OAuth - token into *~/.twittering-mode.gpg* (in default) with encryption. - Once the authorized OAuth token is encrypted, you do not have to - retrieve a PIN code with an external browser. The master password - is only required to establish authorized connection to Twitter. -3. Your home timeline will appear. Basic key bindings are as - follows. - - `V`: Open or switch to another timeline by - [timeline-spec](#timeline-spec). - - `u` or `C-cC-s`: Post a tweet. - - `RET`: Post a reply to the pointed tweet or open the pointed URL - with `browse-url`. - - `C-c RET`: Post an organic retweet. This is only a tweet citing - the pointed tweet and not an official/native retweet. - - `C-uC-c RET`: Post an official/native retweet. - - `d`: Send a direct message. - - `C-cC-w`: Delete the pointed tweet. -4. Add some of the following major configurations to your init file - if you like. - - To display icons, add `(setq twittering-icon-mode t)`. - This may require ImageMagick or its compatible alternative. - - To resize icons, add `(setq twittering-convert-fix-size SIZE)`. - The default size is 48 pixels. This requires ImageMagick or its - compatible alternative. - - To keep retrieved icons in a local storage, add - `(setq twittering-use-icon-storage t)`. This requires gzip. The - icons are saved on *~/.twittering-mode-icons.gz*, which can be - changed by the variable `twittering-icon-storage-file`. - - To display tweets in the *reverse* order, add - `(setq twittering-reverse-mode t)`. With it, the latest tweet - is rendered the bottom of the buffer. - - To use a HTTP proxy, add the following configuration. -

-        (setq twittering-proxy-use t)
-        (setq twittering-proxy-server "PROXY-HOSTNAME")
-        (setq twittering-proxy-port PROXY-PORT-NUMBER)
-      
- - To change the number of tweets retrieved at once, add - `(setq twittering-number-of-tweets-on-retrieval NUMBER)`. - - To change the interval of retrieving tweets, add - `(setq twittering-timer-interval SECOND)`. You should be careful - not to exceed the limitation of number of API calls. - - To display the number of unread tweets on the mode-line, add - `(twittering-enable-unread-status-notifier)`. - - To display the remaining number of API calls, add - `(setq twittering-display-remaining t)`. - - To change the format of an organic retweet, configure the - variable `twittering-retweet-format`. For example, add - `(setq twittering-retweet-format '(nil _ " %u RT @%s: %t"))`. - For details, see the docstring of the variable by - `M-x describe-variable`. - - To change the timelines automatically opened on starting - twittering-mode, configure the variable - `twittering-initial-timeline-spec-string`. For example, - add the below configuration. -

-        (setq twittering-initial-timeline-spec-string
-              '("(:home+@)"
-                "(:search/twittering mode/+:search/twmode/)"))
-      
- For details, see the docstring of the variable by - `M-x describe-variable`. - - To customize the format of tweets, configure the variable - `twittering-status-format`. For example, add the below - configuration. -

-        (setq twittering-status-format
-              "%FOLD{%RT{%FACE[bold]{RT}}%i%s>>%r @%C{%Y-%m-%d %H:%M:%S} %@{}\n%FOLD[ ]{%T%RT{\nretweeted by %s @%C{%Y-%m-%d %H:%M:%S}}}}")
-      
- For details, see the docstring of the variable by - `M-x describe-variable`. - - To inherit mentions and hashtags on editing a reply, add - `(setq twittering-edit-skeleton 'inherit-any)`. - For details, see the docstring of the variable by - `M-x describe-variable`. - - Enjoy! - - Usage ------------------------- -- Move the cursor. - - `0`: Go to the beginning of the line. - - `^`: Go to the beginning of the text on the line. - - `$`: Go to the end of the line. - - `G`: Go to the bottom tweet. - - `H`: Go to the top tweet. - - `h`: Move the cursor left. - - `j`: Go to the next tweet. - - `k`: Go to the previous tweet. - - `l`: Move the cursor right. - - `n`: Go to the next tweet by the author of the pointed tweet. - - `p`: Go to the previous tweet by the author of the pointed tweet. - - `TAB`: Go to the next thing (link, user name, URL, etc.). - - `M-TAB` or ``: Go to the previous thing (link, user name, - URL, etc.). - - `C-v` or `SPC`: Scroll the buffer upward. - - `M-v` or ``: Scroll the buffer downward. -- Switch a timeline. - - `L`: Open a list timeline interactively. - - `V`: Open a timeline by [timeline-spec](#timeline-spec). - - `b`: Switch to the previous timeline. - - `f`: Switch to the next timeline. - - `C-cC-d`: Open the direct messages timeline. - This is equivalent to `V` with `:direct_messages`. - - `v`: Open the home timeline of the pointed user. - - `C-cC-f`: Open the friend timeline. - This is equivalent to `V` with `:friends`. - - `C-cC-q`: Open a search timeline. - This is equivalent to `V` with `:search/QUERY/`. - - `C-cC-r`: Open the replies timeline. - This is equivalent to `V` with `:replies`. - - `C-cC-u`: Open the current user timeline. - This is equivalent to `V` with `USERNAME`, where *USERNAME* is - your screen-name. - - `q`: Close the current buffer. -- Update/clear the timeline. - - `g`: Update the current timeline. - - `C-cC-e`: Erase tweets of the current buffer from memory. -- Display replied tweets. - - `r`: Display replied tweets or hide them. - - `R`: Display replied tweets, retrieve the replied tweet or hide - them. -- Post a tweet. - - `u` or `C-cC-s`: Post a tweet. - - `RET`: Post a reply to the pointed tweet or open the pointed URL - with `browse-url`. - - `C-c RET`: Post an organic retweet. This is only a tweet citing - the pointed tweet and not an official/native retweet. - - `C-uC-c RET`: Post an official/native retweet. - - `d`: Send a direct message. - - `C-cC-l`: Post a joke message. -- Delete a tweet. - - `C-cC-w`: Delete the pointed tweet. -- View more info. - - `U`: Push the URL of the pointed link or tweet onto the kill ring. - - `C-cC-v`: Open the profile of the pointed user with `browse-url`. - - ``: Open the pointed URL with `browse-url`. -- Change the mode of twittering-mode. - - `a`: Toggle the state of the buffer between active/inactive. - Twittering-mode does not update an inactive buffer. - - `i`: Toggle the state of the buffer between with or without icon - images. - - `t` or `C-cC-p`: Toggle between with or without a proxy server. - - `C-cC-t`: Set the current hashtag. - - -Timeline spec ------------------------- -By pressing *V* (`twittering-visit-timeline`) on twittering-mode, you -can specify a timeline to be opened by *timeline spec*. -A timeline spec can be used anywhere you have to specify a timeline. - -The valid timeline specs follows: - -- Basic timeline - - `:home` : The home timeline. - - `:mentions` : Tweets mentioning you. - - `:public` : The public timeline. - - `USER` : Tweets posted by *USER*. - - `USER/LISTNAME` : - The list timeline owned by *USER* and named *LISTNAME*. -- Direct message - - `:direct_messages` : Direct messages sent to you. - - `:direct_messages_sent` : Direct messages that you sent. -- Favorite - - `:favorites` : Tweets that you marked as a favorite. - - `:favorites/USER` : Tweets that *USER* marked as a favorite. -- Hashtag - - `#HASHTAG` : Tweets including *#HASHTAG*. -- Retweet - - `:retweeted_by_me` : Retweets that you posted. - - `:retweeted_by_user/USER` : Retweets posted by *USER*. - - `:retweeted_to_me` : Retweets sent to your home timeline. - - `:retweeted_to_user/USER` : - Retweets sent to *USER*'s home timeline. - - `:retweets_of_me` : - Your tweets that have been retweeted by others. -- Single - - `:single/ID` : A tweet specified by *ID*. -- Search - - `:search/QUERY-STRING/` : - Tweets matching *QUERY-STRING*. In *QUERY-STRING*, */* (slash) and - *\\* (backslash) must be escaped as *\\/* or *\\\\*, respectively. -- Alias
- You can define aliases for timeline specs. By defining a short alias - as a long timeline spec, you can refer it more easily. There are two - types of alias, *simple* and *functional* as below. Both types are - defined in the association list bound to the variable - `twittering-timeline-spec-alias`. - - `$ALIAS-NAME` - The timeline spec bound to *ALIAS-NAME* in - `twittering-timeline-spec-alias`. - - `$ALIAS-NAME(ARGUMENT)` - The timeline spec generated by calling the function, which is - bound to *ALIAS-NAME* in `twittering-timeline-spec-alias`, with - the argument *ARGUMENT*. The function can be specified as a symbol - or a lambda expression. - Functions must receive one string argument. - - As an example, consider the following definition of - `twittering-timeline-spec-alias`. -

-    (setq twittering-timeline-spec-alias
-          '(("FRIENDS" . "my-account/friends-list")
-            ("related-to" .
-             (lambda (username)
-               (if username
-                   (format ":search/to:%s OR from:%s OR @%s/"
-                           username username username)
-                 ":home")))
-            ("related-to-twitter" . "$related-to(twitter)")))
-  
- With this configuration, you can use the below aliases. - - `$FRIENDS` is equivalent to `my-account/friends-list`. - - `$related-to` is equivalent to `:home`. - - `$related-to(twitterapi)` is equivalent to `:search/to:twitterapi OR from:twitterapi OR @twitterapi/`. - - `$related-to-twitter` is equivalent to `:search/to:twitter OR from:twitter OR @twitter/`. - - You can use an alias on definition of other aliases, but an alias - including a circular-reference is forbidden. -- Composite timeline spec - - `(SPEC1+SPEC2)` : - The timeline generated by merging two timelines, specified by - *SPEC1* and *SPEC2*. - - `:exclude-if/FUNC/SPEC` : - The timeline equals *SPEC*, except that it does not include tweets - that the function *FUNC* returns non-nil for. *FUNC* must be a - function that receives an alist corresponding to a tweet as an - argument. A lambda expression and a symbol bound to a function are - valid as *FUNC*. But a symbol name must not include two special - characters, "(" or "/". You can specify any timeline spec for - *SPEC*. For example, you can ignore tweets including "WORD" from the - home timeline by the following timeline spec; - `:exclude-if/(lambda (tweet) (string-match "WORD" (cdr (assq 'text tweet))))/:home`. - - `:exclude-re/REGEXP/SPEC` : - The timeline equals *SPEC*, except that it does not include tweets - that match the regular expression *REGEXP*. In *REGEXP*, a slash - must be escaped with a backslash. For example, tweets including a - slash are excluded from the timeline corresponding to the Emacs - string literal `":exclude-re/\\//:home"`. - - Authors & Contributors ------------------------- - -- Y. Hayamizu -- naoya_t -- Tsuyoshi CHO -- Alberto Garcia -- Satoshi Yatagawa -- 高山智也 -- Tadashi MATSUO (cvmat) -- 青田(naota) -- Jaemok Jeong(jmjeong) -- Thomas Danckaert -- IMAI Toshiyuki - - See also ----------- - -- http://www.emacswiki.org/emacs-en/TwitteringMode diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/TODO b/xemacs-packages/lisp/twittering-mode-3.0.0/TODO deleted file mode 100644 index c4841f73..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/TODO +++ /dev/null @@ -1,5 +0,0 @@ - -== ToDo List == - -- use temporary buffers for http request -- write more tests diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/VERSION b/xemacs-packages/lisp/twittering-mode-3.0.0/VERSION deleted file mode 100644 index 4a36342f..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/VERSION +++ /dev/null @@ -1 +0,0 @@ -3.0.0 diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/cert/.nosearch b/xemacs-packages/lisp/twittering-mode-3.0.0/cert/.nosearch deleted file mode 100644 index e69de29b..00000000 diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/cert/Equifax_Secure_Certificate_Authority.cer b/xemacs-packages/lisp/twittering-mode-3.0.0/cert/Equifax_Secure_Certificate_Authority.cer deleted file mode 100644 index 676db975..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/cert/Equifax_Secure_Certificate_Authority.cer +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy -dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 -MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx -dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f -BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A -cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ -MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm -aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw -ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj -IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y -7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh -1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 ------END CERTIFICATE----- diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/cert/GeoTrust_Global_CA.cer b/xemacs-packages/lisp/twittering-mode-3.0.0/cert/GeoTrust_Global_CA.cer deleted file mode 100644 index b69f0029..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/cert/GeoTrust_Global_CA.cer +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT -MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i -YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg -R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 -9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq -fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv -iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU -1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ -bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW -MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA -ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l -uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn -Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS -tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF -PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un -hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV -5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== ------END CERTIFICATE----- diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/cert/PCA-3G2.pem b/xemacs-packages/lisp/twittering-mode-3.0.0/cert/PCA-3G2.pem deleted file mode 100644 index 5e7f6a60..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/cert/PCA-3G2.pem +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 -pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 -13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk -U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i -F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY -oJ2daZH9 ------END CERTIFICATE----- \ No newline at end of file diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/.nosearch b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/.nosearch deleted file mode 100644 index e69de29b..00000000 diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/Makefile b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/Makefile deleted file mode 100644 index 121acbac..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/Makefile +++ /dev/null @@ -1,11 +0,0 @@ - -.PHONY: all update-po - -all: - -update-po: - $(MAKE) -C web update-po - $(MAKE) -C manual update-po - - - diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/manual/Makefile b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/manual/Makefile deleted file mode 100644 index 5f4c3f6d..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/manual/Makefile +++ /dev/null @@ -1,12 +0,0 @@ - -.PHONY: all update-po clean - -all: twmode/twmode.html - -update-po: - -twmode/twmode.html: twmode.texinfo - texi2html --split chapter $< - -clean: - rm -rf twmode diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/manual/fdl.texi b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/manual/fdl.texi deleted file mode 100644 index b03f7b08..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/manual/fdl.texi +++ /dev/null @@ -1,402 +0,0 @@ - -@appendix GNU Free Documentation License - -@cindex FDL, GNU Free Documentation License -@center Version 1.1, March 2000 - -@display -Copyright @copyright{} 2000 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA 02111-1307, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -@end display - -@enumerate 0 -@item -PREAMBLE - -The purpose of this License is to make a manual, textbook, or other -written document @dfn{free} in the sense of freedom: to assure everyone -the effective freedom to copy and redistribute it, with or without -modifying it, either commercially or noncommercially. Secondarily, -this License preserves for the author and publisher a way to get -credit for their work, while not being considered responsible for -modifications made by others. - -This License is a kind of ``copyleft'', which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - -@item -APPLICABILITY AND DEFINITIONS - -This License applies to any manual or other work that contains a -notice placed by the copyright holder saying it can be distributed -under the terms of this License. The ``Document'', below, refers to any -such manual or work. Any member of the public is a licensee, and is -addressed as ``you''. - -A ``Modified Version'' of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -A ``Secondary Section'' is a named appendix or a front-matter section of -the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall subject -(or to related matters) and contains nothing that could fall directly -within that overall subject. (For example, if the Document is in part a -textbook of mathematics, a Secondary Section may not explain any -mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -The ``Invariant Sections'' are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. - -The ``Cover Texts'' are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. - -A ``Transparent'' copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, whose contents can be viewed and edited directly and -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup has been designed to thwart or discourage -subsequent modification by readers is not Transparent. A copy that is -not ``Transparent'' is called ``Opaque''. - -Examples of suitable formats for Transparent copies include plain -@sc{ascii} without markup, Texinfo input format, La@TeX{} input format, -@acronym{SGML} or @acronym{XML} using a publicly available -@acronym{DTD}, and standard-conforming simple @acronym{HTML} designed -for human modification. Opaque formats include PostScript, -@acronym{PDF}, proprietary formats that can be read and edited only by -proprietary word processors, @acronym{SGML} or @acronym{XML} for which -the @acronym{DTD} and/or processing tools are not generally available, -and the machine-generated @acronym{HTML} produced by some word -processors for output purposes only. - -The ``Title Page'' means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, ``Title Page'' means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. - -@item -VERBATIM COPYING - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. - -@item -COPYING IN QUANTITY - -If you publish printed copies of the Document numbering more than 100, -and the Document's license notice requires Cover Texts, you must enclose -the copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a publicly-accessible computer-network location containing a complete -Transparent copy of the Document, free of added material, which the -general network-using public has access to download anonymously at no -charge using public-standard network protocols. If you use the latter -option, you must take reasonably prudent steps, when you begin -distribution of Opaque copies in quantity, to ensure that this -Transparent copy will remain thus accessible at the stated location -until at least one year after the last time you distribute an Opaque -copy (directly or through your agents or retailers) of that edition to -the public. - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. - -@item -MODIFICATIONS - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: - -@enumerate A -@item -Use in the Title Page (and on the covers, if any) a title distinct -from that of the Document, and from those of previous versions -(which should, if there were any, be listed in the History section -of the Document). You may use the same title as a previous version -if the original publisher of that version gives permission. - -@item -List on the Title Page, as authors, one or more persons or entities -responsible for authorship of the modifications in the Modified -Version, together with at least five of the principal authors of the -Document (all of its principal authors, if it has less than five). - -@item -State on the Title page the name of the publisher of the -Modified Version, as the publisher. - -@item -Preserve all the copyright notices of the Document. - -@item -Add an appropriate copyright notice for your modifications -adjacent to the other copyright notices. - -@item -Include, immediately after the copyright notices, a license notice -giving the public permission to use the Modified Version under the -terms of this License, in the form shown in the Addendum below. - -@item -Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. - -@item -Include an unaltered copy of this License. - -@item -Preserve the section entitled ``History'', and its title, and add to -it an item stating at least the title, year, new authors, and -publisher of the Modified Version as given on the Title Page. If -there is no section entitled ``History'' in the Document, create one -stating the title, year, authors, and publisher of the Document as -given on its Title Page, then add an item describing the Modified -Version as stated in the previous sentence. - -@item -Preserve the network location, if any, given in the Document for -public access to a Transparent copy of the Document, and likewise -the network locations given in the Document for previous versions -it was based on. These may be placed in the ``History'' section. -You may omit a network location for a work that was published at -least four years before the Document itself, or if the original -publisher of the version it refers to gives permission. - -@item -In any section entitled ``Acknowledgments'' or ``Dedications'', -preserve the section's title, and preserve in the section all the -substance and tone of each of the contributor acknowledgments -and/or dedications given therein. - -@item -Preserve all the Invariant Sections of the Document, -unaltered in their text and in their titles. Section numbers -or the equivalent are not considered part of the section titles. - -@item -Delete any section entitled ``Endorsements''. Such a section -may not be included in the Modified Version. - -@item -Do not retitle any existing section as ``Endorsements'' -or to conflict in title with any Invariant Section. -@end enumerate - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. - -You may add a section entitled ``Endorsements'', provided it contains -nothing but endorsements of your Modified Version by various -parties---for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. - -@item -COMBINING DOCUMENTS - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice. - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. - -In the combination, you must combine any sections entitled ``History'' -in the various original documents, forming one section entitled -``History''; likewise combine any sections entitled ``Acknowledgments'', -and any sections entitled ``Dedications''. You must delete all sections -entitled ``Endorsements.'' - -@item -COLLECTIONS OF DOCUMENTS - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. - -@item -AGGREGATION WITH INDEPENDENT WORKS - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, does not as a whole count as a Modified Version -of the Document, provided no compilation copyright is claimed for the -compilation. Such a compilation is called an ``aggregate'', and this -License does not apply to the other self-contained works thus compiled -with the Document, on account of their being thus compiled, if they -are not themselves derivative works of the Document. - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one quarter -of the entire aggregate, the Document's Cover Texts may be placed on -covers that surround only the Document within the aggregate. -Otherwise they must appear on covers around the whole aggregate. - -@item -TRANSLATION - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License provided that you also include the -original English version of this License. In case of a disagreement -between the translation and the original English version of this -License, the original English version will prevail. - -@item -TERMINATION - -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. - -@item -FUTURE REVISIONS OF THIS LICENSE - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -@uref{http://www.gnu.org/copyleft/}. - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License ``or any later version'' applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. -@end enumerate - -@page -@appendixsubsec ADDENDUM: How to use this License for your documents - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: - -@smallexample -@group - Copyright (C) @var{year} @var{your name}. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.1 - or any later version published by the Free Software Foundation; - with the Invariant Sections being @var{list their titles}, with the - Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}. - A copy of the license is included in the section entitled ``GNU - Free Documentation License''. -@end group -@end smallexample - -If you have no Invariant Sections, write ``with no Invariant Sections'' -instead of saying which ones are invariant. If you have no -Front-Cover Texts, write ``no Front-Cover Texts'' instead of -``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts. - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. - -@c Local Variables: -@c ispell-local-pdict: "ispell-dict" -@c End: - diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/manual/twmode.texinfo b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/manual/twmode.texinfo deleted file mode 100644 index d0fd2569..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/manual/twmode.texinfo +++ /dev/null @@ -1,222 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@c %**start of header -@setfilename twmode.info -@settitle Twittering-mode user's manual -@c %**end of header -@copying -The manual for twittering-mode users.. - -Copyright @copyright{} 2010 Yuto Hayamizu - -@quotation -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 -or any later version published by the Free Software Foundation; -with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. -A copy of the license is included in the section entitled ``GNU -Free Documentation License''. - -A copy of the license is also available from the Free Software -Foundation Web site at @url{http://www.gnu.org/licenses/fdl.html}. - -@end quotation - -The document was typeset with -@uref{http://www.texinfo.org/, GNU Texinfo}. - -@end copying - -@titlepage -@title Twittering-mode manual -@subtitle The manual for twittering-mode lovers. -@author Yuto Hayamizu -@page -@vskip 0pt plus 1filll -@insertcopying -@end titlepage - -@c Output the table of the contents at the beginning. -@contents - -@ifnottex -@node Top -@top Twittering-mode manual - -@insertcopying -@end ifnottex - -@c Generate the nodes for this menu with `C-c C-u m'. -@menu -* Getting started:: -* Introduction:: -* Copying This Manual:: -* Index:: -@end menu - -@c Update all node entries with `C-c C-u C-n'. -@c Insert new nodes with `C-c C-c n'. - -@node Getting started -@chapter Getting started - -@section Installation - -@itemize @bullet -@item -Download the latest twittering-mode from -@uref{http://twmode.sf.net/,http://twmode.sf.net/}, and expand it. -@item -Copy following files and directories to the same directory, which is -included in your @code{load-path}: -@itemize @bullet -@item -@file{twittering-mode.el} -@item -(Windows users only) @file{win-curl/} -@item -(Emacs21 or older users only) @file{url-emacs21/} -@end itemize -@item -If you are using GNU Emacs on Windows, you might need following -libraries in order to display images(png, jpeg, gif): -@itemize -@item -@uref{http://gnuwin32.sourceforge.net/packages/jpeg.htm,GnuWin32 Jpeg} -@item -@uref{http://gnuwin32.sourceforge.net/packages/libpng.htm,GnuWin32 LibPng} -@item -@uref{http://gnuwin32.sourceforge.net/packages/giflib.htm,GnuWin32 GifLib} -@item -Download binaries and copy *.dll files to the directory where -emacs.exe exists. -@end itemize -@end itemize - -@section Quick start - -Add following code to your @file{.emacs}: - -@example -(add-to-list 'load-path "/path/to/installed/dir") ;; if you need -(require 'twittering-mode) -@end example - -and execute - -@example -M-x twit -@end example - -Then you are prompted to enter your Twitter username and -password. After that, your friends timeline will appear in -@code{*twittering*} buffer. - -@subheading Browsing timelines - -You can see some kinds of timelines on twittering-mode. - -@itemize -@item -@code{g}: Reload current timeline -@item -@code{C-c C-f}: Friends timeline -@item -@code{C-c C-r}: Replies -@item -@code{V} and enter @var{USERNAME}: Show @var{USERNAME}'s tweets -@item -@code{C-c C-u}: Your tweets -@item -@code{C-c C-g}: Public timeline -@end itemize - -Following commands help you move around a timeline. - -@itemize -@item -@code{j}: next tweet. -@item -@code{k}: previous tweet. -@item -@code{h}: move to left. -@item -@code{l}: move to right. -@item -@code{i}: on/off icon-mode -@item -@code{TAB}: next interesting things(usernames, links ...) -@item -@code{G}: go to the end of the buffer -@item -@code{H}: go to the beginning of the buffer - -@end itemize - -@subheading Posting your tweet - -@itemize -@item -@code{C-c C-s}: Post tweet from minibuffer. -@end itemize - -@subheading And more settings - -Some more settings will make your twittering-mode life better. - -@example -(setq twittering-username "YOURNAME") -@end example - -@node Introduction -@chapter Introduction - -@node What is twittering-mode? -@section What is twittering-mode? - -Twittering-mode is an Emacs major mode for Twitter. You can check -timelines, tweet, mark posts as favorites and so on with Emacs. - -@node Supported platforms -@subsection Supported platforms - -@itemize @bullet -@item -GNU Emacs 23 - -@item -GNU Emacs 22 - -@item -GNU Emacs 21 (some restrictions) -@end itemize - -@node Features -@subsection Features - -@itemize @bullet -@item -Feature 1 -@item -Feature 2 -@item -Feature 3 -@end itemize - -@node Copying This Manual -@appendix Copying This Manual - -@menu -* GNU Free Documentation License:: License for copying this manual. -@end menu - -@c Get fdl.texi from http://www.gnu.org/licenses/fdl.html -@include fdl.texi - -@node Index -@unnumbered Index - -@printindex cp - -@bye - -@c twmode.texinfo ends here diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/.htaccess b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/.htaccess deleted file mode 100644 index 2d2e068b..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/.htaccess +++ /dev/null @@ -1,5 +0,0 @@ - -AddLanguage ja .ja - -LanguagePriority ja en - diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/Makefile b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/Makefile deleted file mode 100644 index 17a0d008..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/Makefile +++ /dev/null @@ -1,71 +0,0 @@ - -CATALOGS := ja.po -LANGS := en ja -MARKDOWN_DOCS := \ - index.text \ - how-to-contribute.text \ - screenshot.text - -PUBLISH := ./publish.rb -RM ?= rm -f -HTML_DOCS := $(subst .text,.html,$(MARKDOWN_DOCS)) -HTML_ASSETS := style.css images - -.PHONY: all clean upload update-po publish - -.SUFFIXES: .text .html - -all: publish - -.text.html: $(PUBLISH) header.rhtml footer.rhtml - $(PUBLISH) -H header.rhtml -F footer.rhtml \ - -d lang=\"en\" -d langs="\"$(LANGS)\".split" -d file=\"$@\" \ - -o $@ $< - -upload: upload.bat - @(! [ -z "$${SF_USERNAME}" ] || (echo "Environmental variable 'SF_USERNAME', which is a username of sf.net, is required."; false)) - sftp -b $< $${SF_USERNAME},twmode@web.sourceforge.net - -upload.bat: $(HTML_DOCS) Makefile publish - files=$$(find -name "*.html"; \ - find -name "*.html.??"; \ - find -name ".htaccess"; \ - find -name "*.css"; \ - find -name "*.png"; \ - find -name "*.jpg"); \ - dirs=$$(echo $$files|xargs -n1 dirname|sort|uniq); \ - (echo "cd htdocs"; \ - echo $$dirs | xargs -n 1 echo "-mkdir"; \ - for file in $$files; do echo "put $${file} $${file}"; done) > $@ - -twmode.pot: $(HTML_DOCS) - xml2po -k -o $@ $(HTML_DOCS) - for catalog in $(CATALOGS); do \ - [ -f $$catalog ] || cp $@ $$catalog; \ - done - -update-po: twmode.pot Makefile - for catalog in $(CATALOGS); do \ - xml2po -k -m xhtml -u $$catalog $(HTML_DOCS); \ - done - -publish: $(HTML_DOCS) $(CATALOGS) - for catalog in $(CATALOGS); do \ - lang=$$(echo $$catalog|sed 's/.po$$//'); \ - [ -d $$lang ] || mkdir $$lang; \ - cp -t $$lang -r $(HTML_ASSETS); \ - for text in $(MARKDOWN_DOCS); do \ - html=$$(echo $$text|sed 's/.text$$/.html/'); \ - $(PUBLISH) -H header.rhtml -F footer.rhtml \ - -d lang=\"$$lang\" -d langs="\"$(LANGS)\".split" \ - -d file=\"$$html\" --po-file=$$catalog \ - -o $$lang/$$html $$text; \ - done; \ - done - -clean: - $(RM) *.html *.html upload.bat - for catalog in $(CATALOGS); do \ - lang=$$(echo $$catalog|sed 's/.po$$//'); \ - $(RM) $$lang/*.html; \ - done diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/footer.rhtml b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/footer.rhtml deleted file mode 100644 index 70334b8d..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/footer.rhtml +++ /dev/null @@ -1,27 +0,0 @@ - -
- - -
- - - - - - - - - - diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/header.rhtml b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/header.rhtml deleted file mode 100644 index 76861ccd..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/header.rhtml +++ /dev/null @@ -1,50 +0,0 @@ -<% -lang_menu_items = langs.map do |l| - rel_dir = "../#{l}" - if lang == "en" && l == "en" - rel_dir = "." - elsif lang == "en" - rel_dir = "./#{l}" - elsif l == "en" - rel_dir = ".." - end - "" - end.join(" ") -%> - - - - - Twittering-mode - - - - -
- - - -
- -
-
-<%= lang_menu_items %> -
- -
- - - -
-
diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/how-to-contribute.text b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/how-to-contribute.text deleted file mode 100644 index 0fc7c9c6..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/how-to-contribute.text +++ /dev/null @@ -1,51 +0,0 @@ -# How to contribute to twittering-mode - -## Code - -Recommended way is to fork on [GitHub](http://github.com/hayamiz/twittering-mode). Visit there and click 'fork' button. - -Of course you can clone the git repository in the ordinary way: - - git clone git://github.com/hayamiz/twittering-mode.git - -### How to create patches - -We recommend to follow these steps: - -1. Pull the master branch(`hayamiz/master` on [GitHub](http://github.com/hayamiz/twittering-mode)). -1. Create a **topic branch** and make some modifications. -1. Before sending a patch, **rebase** the topic branch to the master. -1. Now it's ready to **post** your patch. Send a [pull request](http://github.com/guides/pull-requests) on [GitHub](http://github.com/hayamiz/twittering-mode) (if you have forked) and write a mail to [twittering-mode ML](http://sourceforge.net/mail/?group_id=288615). - -#### Topic branch - -(now writing...) - -#### Rebasing a topic branch - -(now writing...) - -#### Posting your patch - -(now writing...) - -## Communication - -All your voices should be sent to [twittering-mode ML](http://sourceforge.net/mail/?group_id=288615). - -### Bug reports - -If you find some bugs in twittering-mode, please send a mail with detailed information to [twittering-mode ML](http://sourceforge.net/mail/?group_id=288615): - -* Platform (Windows, Linux, Mac OS X, ...) -* Kind of Emacs and its version number (GNU Emacs, XEmacs, Carbon Emacs, ...): you can check it by `(emacs-version)` on `*scratch*` buffer. -* What you *wanted* to do, what you *actually did*, and what *happened*. -* Any other information you think it's important. - -If you have enough time, please try to reproduce the bug in a minimal environment. You can launch Emacs without loading any scripts by `emacs -Q`. This saves our time so much :) - -### Feature requests and others - -Join [twittering-mode ML](http://sourceforge.net/mail/?group_id=288615) and let's talk! - -[« Back to top](./index.html) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/bottom.jpg b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/bottom.jpg deleted file mode 100644 index 026616e9ea9dcef2d26bd9d357ee7d7acc2a9ddf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2658 zcmex=uI=H%w(=K}(Mey}1a#RK7?>VxzCA7BvVU=U$eU}h9#U=n0x7G(T?gaPDiCT2#U zGvR=dlZl0ugAoMaVju=knE(SLBL~PMa2>3P%9p3Hi-&VC0=*;1X6P8WP>2&~J|ino zGaEC^07j<3#EBP$CkZMV79M2YXmsfREe0N-AxwhIf(-Ty9}iuRtFF5H|8ntuweLSeTQHY?T-C3;7SDee>b&?JCug(Q^7Y4`47Z(r zKaKchzwnvoFIlhO?w5sX`;+%?f9~TF`faa#{Qiyi*T>D>b9YZ1zq;R^@6Xr!?X7%! zUfy1&@c8TI(BDfY#p_R<{4bD?bASKSxpLWMr_xt78mw@$z84agyzp$iPWRnSGhZ$6 z(GqO046N*HH?7%Ny)D=_gtOJj;Juc<;e}`Gr|H8q$v$;`W+ij=)6sV~eZB^$iEW&^DZuy`4VBTfGMa-%%as*w!=$uL`528}p%hQA z`x$2U@kK>Y-Or$X7r&d#kH7Kq?GItGtF`N^ufKd#^7{7jc=LGi`6utMm;Lej{`NTQ z!sF+U+kE`}D*#CJpbeG9}Mj|4Au#Z iw;A|uFq9o&-o_xif#Gcf`^XR!KK|ox4MQ5^|C<1Y2we#P diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/content.jpg b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/content.jpg deleted file mode 100644 index 174da0a5116d0bcd34c9fe570ed6e4866753a7df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 449 zcmex=uI=H%w(=K}(Mey}1a#RK7?>VxzCA7BvVU|?icU}h9#U=n0x7G(T?gdv`Rk&zMT zNF>0?0Te<+uJciZ7Uy Y`}BBqSxaujK2?bY8*>(m?*D%i02aGKhX4Qo diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/famfamfam-logo.png b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/famfamfam-logo.png deleted file mode 100644 index ac6def409ae998e0eac839507a083426a4f24531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2701 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 Hu0mjfr;_Z+ diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/lang-en.png b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/lang-en.png deleted file mode 100755 index 10f451fe85c41c6c9a06d543a57114ae2f87ecc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 609 zcmV-n0-pVeP){qW|y?pud`Sa)3|NY&vWd%S0u>b>P!2!lUe;6EF*#G_c zFVXVt@6Q{uX@40W{p0iY2Aa+A^Cu7i8KT+YH}2j52q4BskM2rJ$^k9;2Xxc_|Np=M z&VaLlA*IO5FlECMfB<5VUNC{tBZO(|zW*;@GJN;|bTJ71`0*d;`d`2P!x=ymOA`2> z+y@9C##^^8%gd{MW@Y91_2d742B2~OQNf=-zkmD?Vqkdk_wPTUNeuu2#KPTG{_;O4 v7C%8E5*DLB7#Kb?Fnj}}-(W6879hX?8lYRg`Y`<~00000NkvXXu0mjfD6Jtx diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/lang-ja.png b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/lang-ja.png deleted file mode 100755 index 325fbad3ffd3075a4a84d8d898ad26ef7d3e0d56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 zcmV;V0bBlwP)9whYk?f=!Q|Ns8||JN@lTD;`{R1ZWk|EGa3dAO8ObDh3E3Cb;oH_5X#1 z|NHy@|M?558b}5Q|Cf`4hZv9q2p|@?lb|{i68>{>{ol0lx`{mi O0000c{qbcbxyfC3-6Z$y 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 - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/menu.png b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/menu.png deleted file mode 100644 index 02235521620d987601d290bea65b10dc46772265..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 525 zcmeAS@N?(olHy`uVBq!ia0y~yU{(OK!Jo(>lA5hPHPZ!6Kid%2*?(LgnAkq*R@7!f` z-*0FCbhG#3sXM=kWn5^nXWeq^)toF9W8SOFvzb3u*eETs-+FCX=BYFLFT4NKynK5- z6T^Z1$L_y>eEx@F&tZd}#}V1R%kNe9c09dw{miVLwLllH-FhZxt?th)I<7}{tXi$Q z7O4Bp)xXRPH%^#M?FnnQob&A9Rio`v;oI8#ET`%DY+zv6;hVt7P!pcus=w6Y2_M6T)vo*HB9?A>#UaLUAkS%T z-=Z8rCWe~Qy18ri*0D=5H2goKBCNyEpkF2tv6k;F1JGIi)8+;0vxj}RDMSp=tveZh6bRk1wj1ooS)wd==wWy?gqvl NgQu&X%Q~loCIDF0(fI%X diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/pic.jpg b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/pic.jpg deleted file mode 100644 index 8404e88f979059c1742ed747ad9f2860f94ba745..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21894 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 diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/screen-friends-no-icon.png b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/screen-friends-no-icon.png deleted file mode 100644 index 5431a111c8d3d51ee6a1ffcac8a036f0d4edfa09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180074 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ࡓ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 WCAq2fOdX0|r0366WQwJY{r?Z7CDHK! diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/screen-friends.png b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/images/screen-friends.png deleted file mode 100644 index 4b423ba939f9333211ebcad9987d2b2e0fe739c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151293 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 z 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 z

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∓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 diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/index.text b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/index.text deleted file mode 100644 index 3098f922..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/index.text +++ /dev/null @@ -1,45 +0,0 @@ - - - - -Twittering-mode is an Emacs major mode for Twitter. You can check -timelines, tweet, mark posts as favorites and so on with Emacs. - -[![](http://twitter-badges.s3.amazonaws.com/follow_me-a.png)](http://www.twitter.com/twmode) - -## Screenshot - -![](./images/screen-user.png) - -and [more](./screenshot.html) - -## Download - -* Latest release (2013/5/7): [twittering-mode-3.0.0](http://sourceforge.net/projects/twmode/files/) -* Development version: [GitHub repository](http://github.com/hayamiz/twittering-mode/) - -See the [history](http://github.com/hayamiz/twittering-mode/commits/master/twittering-mode.el). - -## Documentation -For the latest release, see [README.markdown](http://github.com/hayamiz/twittering-mode/blob/3.0.x/README.markdown). -For the development version, see [README.markdown](http://github.com/hayamiz/twittering-mode/blob/master/README.markdown). - -## Getting involved - -See [how to contribute](./how-to-contribute.html) for detailed information. - -### Mailing lists - -Join [twittering-mode ML](http://sourceforge.net/mail/?group_id=288615). - -### Repository - -You can clone the git repository: - - git clone git://github.com/hayamiz/twittering-mode.git - -Or fork on [GitHub](http://github.com/hayamiz/twittering-mode) - -## See also - -* [EmacsWiki: TwitteringMode](http://www.emacswiki.org/emacs/TwitteringMode) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/ja.po b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/ja.po deleted file mode 100644 index 08b2e5a0..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/ja.po +++ /dev/null @@ -1,443 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: twittering-mode HEAD\n" -"POT-Creation-Date: 2013-05-07 00:26+0900\n" -"PO-Revision-Date: 2009-12-29 22:18+0900\n" -"Last-Translator: Tadashi Matsuo \n" -"Language-Team: Japanese\n" -"Language: ja\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: index.html:7(title) how-to-contribute.html:7(title) -#: screenshot.html:7(title) -msgid "Twittering-mode" -msgstr "Twittering-mode" - -#: index.html:43(p) -msgid "" -"Twittering-mode is an Emacs major mode for Twitter. You can check timelines, " -"tweet, mark posts as favorites and so on with Emacs." -msgstr "" -"twittering-modeは、EmacsでTwitterをするためのメジャーモードです。タイムライン" -"のチェック、投稿、お気に入りなど様々なTwitterの機能をEmacsから使うことができ" -"ます。" - -#: index.html:48(h2) -msgid "Screenshot" -msgstr "スクリーンショット" - -#: index.html:52(p) -msgid "and more" -msgstr "and more" - -#: index.html:54(h2) -msgid "Download" -msgstr "ダウンロード" - -#: index.html:57(li) -msgid "" -"Latest release (2013/5/7): twittering-mode-3.0.0" -msgstr "" -"最新のリリース (2013/5/7): twittering-mode-3.0.0" - -#: index.html:58(li) -msgid "" -"Development version: GitHub repository" -msgstr "" -"開発版: GitHubレポジト" -"リ" - -#: index.html:61(p) -msgid "" -"See the history." -msgstr "" -"twittering-modeの更新履歴" - -#: index.html:63(h2) -msgid "Documentation" -msgstr "ドキュメント" - -#: index.html:65(p) -msgid "" -"For the latest release, see README.markdown. For the development " -"version, see README.markdown." -msgstr "" -"最新のリリースについてはREADME.markdownを、開発版については" -"README.markdownを参照してください。" - -#: index.html:68(h2) -msgid "Getting involved" -msgstr "twittering-modeの開発に参加する" - -#: index.html:70(p) -msgid "" -"See how to contribute for detailed " -"information." -msgstr "" -"詳しくはTwittering-modeの開発へ参加" -"をご覧ください。" - -#: index.html:72(h3) -msgid "Mailing lists" -msgstr "メーリングリスト" - -#: index.html:74(p) -msgid "" -"Join twittering-" -"mode ML." -msgstr "" -"是非twittering-mode " -"MLを購読してください。" - -#: index.html:76(h3) -msgid "Repository" -msgstr "レポジトリ" - -#: index.html:78(p) -msgid "You can clone the git repository:" -msgstr "次のコマンドを実行することで、gitレポジトリをcloneできます:" - -#: index.html:80(code) how-to-contribute.html:47(code) -msgid "git clone git://github.com/hayamiz/twittering-mode.git" -msgstr "git clone git://github.com/hayamiz/twittering-mode.git" - -#: index.html:83(p) -msgid "" -"Or fork on GitHub" -msgstr "" -"また、GitHubでfork" -"することもできます。" - -#: index.html:85(h2) -msgid "See also" -msgstr "See also" - -#: index.html:88(a) -msgid "EmacsWiki: TwitteringMode" -msgstr "EmacsWiki: TwitteringMode" - -#: index.html:95(a) how-to-contribute.html:100(a) screenshot.html:76(a) -msgid "Free CSS Templates" -msgstr "Free CSS Templates" - -#: index.html:95(a) how-to-contribute.html:100(a) screenshot.html:76(a) -msgid "Chapter 13 Bankruptcy" -msgstr "Chapter 13 Bankruptcy" - -#: index.html:94(div) how-to-contribute.html:99(div) screenshot.html:75(div) -msgid "" -"Designed by , Thanks to \n" -"
\n" -"" -msgstr "" -"Designed by , Thanks to \n" -"
\n" -"" - -#. Piwik -#: index.html:102(script) how-to-contribute.html:107(script) -#: screenshot.html:83(script) -msgid "" -"var pkBaseURL = ((\"https:\" == document.location.protocol) ? \"https://" -"sourceforge.net/apps/piwik/twmode/\" : \"http://sourceforge.net/apps/piwik/" -"twmode/\"); document.write(unescape(\"%3Cscript src='\" + pkBaseURL + " -"\"piwik.js' type='text/javascript'%3E%3C/script%3E\"));" -msgstr "" - -#: index.html:105(script) how-to-contribute.html:110(script) -#: screenshot.html:86(script) -msgid "" -"piwik_action_name = ''; piwik_idsite = 1; piwik_url = pkBaseURL + \"piwik.php" -"\"; piwik_log(piwik_action_name, piwik_idsite, piwik_url);" -msgstr "" - -#: how-to-contribute.html:39(h1) -msgid "How to contribute to twittering-mode" -msgstr "twittering-modeの開発に参加する" - -#: how-to-contribute.html:41(h2) -msgid "Code" -msgstr "Code" - -#: how-to-contribute.html:43(p) -msgid "" -"Recommended way is to fork on GitHub. Visit there and click 'fork' button." -msgstr "" -"GitHubでレポジトリ" -"をforkするのが一番おすすめの方法です。GitHub:twittering-modeを開いて、'fork'ボタンをクリック" -"してください。" - -#: how-to-contribute.html:45(p) -msgid "Of course you can clone the git repository in the ordinary way:" -msgstr "" -"もちろん、次のコマンドを実行してgitのレポジトリを直接cloneしても構いません。" - -#: how-to-contribute.html:50(h3) -msgid "How to create patches" -msgstr "パッチの作り方" - -#: how-to-contribute.html:52(p) -msgid "We recommend to follow these steps:" -msgstr "次のような手順でパッチを作る慣例となっています:" - -#: how-to-contribute.html:55(li) -msgid "" -"Pull the master branch(hayamiz/master on GitHub)." -msgstr "" -"マスターブランチ(GitHubレポジトリのhayamiz/master)を取得する" - -#: how-to-contribute.html:56(li) -msgid "Create a topic branch and make some modifications." -msgstr "トピックブランチを作成して、そこに変更を加える" - -#: how-to-contribute.html:57(li) -msgid "" -"Before sending a patch, rebase the topic branch to the " -"master." -msgstr "" -"パッチを投稿する前に、トピックブランチをマスターブランチにrebaseする" - -#: how-to-contribute.html:58(li) -msgid "" -"Now it's ready to post your patch. Send a pull request on GitHub (if you have forked) and " -"write a mail to twittering-mode ML." -msgstr "" -"以上でパッチを投稿する準備は完了です。(GitHubでforkした人は)" -"pull requestを送って、" -"メーリングリスト" -"へ投稿しましょう" - -#: how-to-contribute.html:61(h4) -msgid "Topic branch" -msgstr "トピックブランチ" - -#: how-to-contribute.html:63(p) how-to-contribute.html:67(p) -#: how-to-contribute.html:71(p) -msgid "(now writing...)" -msgstr "(準備中...)" - -#: how-to-contribute.html:65(h4) -msgid "Rebasing a topic branch" -msgstr "トピックブランチをrebaseする" - -#: how-to-contribute.html:69(h4) -msgid "Posting your patch" -msgstr "パッチを投稿する" - -#: how-to-contribute.html:73(h2) -msgid "Communication" -msgstr "バグ報告、その他意見など" - -#: how-to-contribute.html:75(p) -msgid "" -"All your voices should be sent to twittering-mode ML." -msgstr "" -"バグ報告を始めとして、機能追加や意見、感想などはtwittering-modeのメーリングリストへ投稿してく" -"ださい。" - -#: how-to-contribute.html:77(h3) -msgid "Bug reports" -msgstr "バグ報告" - -#: how-to-contribute.html:79(p) -msgid "" -"If you find some bugs in twittering-mode, please send a mail with detailed " -"information to twittering-mode ML:" -msgstr "" -"もしtwittering-modeにバグを発見したら、メーリングリストに次に示すような情報を添えて投稿" -"してください:" - -#: how-to-contribute.html:82(li) -msgid "Platform (Windows, Linux, Mac OS X, ...)" -msgstr "動作環境(Windows, Linux, Mac OS X, ...)" - -#: how-to-contribute.html:83(li) -msgid "" -"Kind of Emacs and its version number (GNU Emacs, XEmacs, Carbon Emacs, ...): " -"you can check it by (emacs-version)<C-j> on " -"*scratch* buffer." -msgstr "" -"Emacsの種類とバージョン番号 (GNU Emacs, XEmacs, Carbon Emacs, ...): " -"*scratch*バッファで(emacs-version)<C-j>とタイ" -"プすれば確認できます。" - -#: how-to-contribute.html:84(li) -msgid "" -"What you wanted to do, what you actually did, and what " -"happened." -msgstr "" -"何がしたかったのか、実際に行った操作、実際に発生した現" -"象" - -#: how-to-contribute.html:85(li) -msgid "Any other information you think it's important." -msgstr "その他重要であると思われる情報" - -#: how-to-contribute.html:88(p) -msgid "" -"If you have enough time, please try to reproduce the bug in a minimal " -"environment. You can launch Emacs without loading any scripts by emacs " -"-Q. This saves our time so much :)" -msgstr "" -"もし可能であれば、最小の環境でバグを再現してみてください。emacs -QでEmacsを起動すれば、.emacsなどの起動スクリプトを一切読み込みません。こ" -"の環境でバグが再現するかどうかを事前に試してもらえると、バグの原因をつきとめ" -"やすくなります。" - -#: how-to-contribute.html:90(h3) -msgid "Feature requests and others" -msgstr "機能追加の要望や、その他の意見" - -#: how-to-contribute.html:92(p) -msgid "" -"Join twittering-" -"mode ML and let's talk!" -msgstr "" -"twittering-mode の" -"メーリングリストを購読して投稿してください。" - -#: how-to-contribute.html:94(a) screenshot.html:70(a) -msgid "« Back to top" -msgstr "« トップへ戻る" - -#: screenshot.html:39(h1) -msgid "Screenshots" -msgstr "スクリーンショット" - -#: screenshot.html:41(h2) -msgid "Timeline" -msgstr "タイムライン" - -#: screenshot.html:43(h3) -msgid "Friends timeline" -msgstr "フレンズタイムライン" - -#: screenshot.html:45(h4) -msgid "Without icons" -msgstr "アイコン非表示モード" - -#: screenshot.html:49(h4) -msgid "With icons" -msgstr "アイコン表示モード" - -#: screenshot.html:53(h3) screenshot.html:61(li) -msgid "User's timeline" -msgstr "ユーザータイムライン" - -#: screenshot.html:57(h3) -msgid "Supported timelines" -msgstr "表示できるタイムライン" - -#: screenshot.html:60(li) -msgid "Home timeline" -msgstr "ホームタイムライン" - -#: screenshot.html:62(li) -msgid "Mentions" -msgstr "Mentions" - -#: screenshot.html:63(li) -msgid "Lists" -msgstr "リスト" - -#: screenshot.html:64(li) -msgid "Direct messages" -msgstr "ダイレクトメッセージ" - -#: screenshot.html:65(li) -msgid "Search timeline" -msgstr "検索タイムライン" - -#: screenshot.html:66(li) -msgid "Favorites" -msgstr "お気に入り" - -#: screenshot.html:67(li) -msgid "Public timeline" -msgstr "パブリックタイムライン" - -#~ msgid "" -#~ "Currently there's no stable release, but it does not " -#~ "mean twittering-mode is unstable for practical usage." -#~ msgstr "" -#~ "現在のところ、安定版リリースはありませんが、開発版でも十分実用的に使用でき" -#~ "ます。" - -#~ msgid "" -#~ "twittering-mode.el (development version)" -#~ msgstr "" -#~ "twittering-mode.el (開発版)" - -#, fuzzy -#~ msgid "Twittering-mode screenshot" -#~ msgstr "twittering-modeスクリーンショット" - -#~ msgid "twittering-mode.el" -#~ msgstr "twittering-mode.el" - -#~ msgid "Contribute" -#~ msgstr "プロジェクトに参加" - -#~ msgid "" -#~ "See Developer's guideline(will be available soon) for " -#~ "more information." -#~ msgstr "" -#~ "詳しい情報については開発の手引き(準備中)を参照してくださ" -#~ "い。" - -#~ msgid "Japanese" -#~ msgstr "日本語" - -#, fuzzy -#~ msgid "" -#~ "Languages: " -#~ msgstr "" -#~ "Other languages: " - -#~ msgid "Other languages:" -#~ msgstr "Other languages:" - -#~ msgid "English" -#~ msgstr "英語" - -#~ msgid "GitHub" -#~ msgstr "GitHub" - -#~ msgid "Or fork on " -#~ msgstr "またはでforkしてください。" - -#~ msgid "translator-credits" -#~ msgstr "translator-credits" - -#~ msgid "GitHub repository" -#~ msgstr "GitHubレポジトリ" diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/publish.rb b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/publish.rb deleted file mode 100755 index a48ea63c..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/publish.rb +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env ruby -# -*- coding: utf-8 -*- - -require 'optparse' -require 'tempfile' -require 'erb' -#require 'rubygems' -require 'bluecloth' - -$web_dir = File.dirname(__FILE__) - -$default_header = < - - - html document - - - -EOS - -$default_footer = < - -EOS - -def header(options) - b = binding - eval("include ERB::Util", b) - options[:data].each do |data| - eval(data, b) - end - erb = if options[:header] - ERB.new(File.open(options[:header]).read) - else - ERB.new($default_header) - end - erb.result(b) -end - -def footer(options) - b = binding - options[:data].each do |data| - eval(data, b) - end - erb = if options[:footer] - ERB.new(File.open(options[:footer]).read) - else - ERB.new($default_footer) - end - erb.result(b) -end - -def parse_option(argv) - opt = OptionParser.new - opt.banner = "Usage: #{$0} [options] MARKDOWN-FILE" - - options = Hash.new - options[:po_file] = nil - opt.on('-p', '--po-file=FILE', - "\n\t\tTranslate with FILE by gettext") do |v| - - unless File.exist?(v) - $stderr.puts("No such po file: #{v}") - $stderr.puts() - puts opt.help() - exit(1) - end - options[:po_file] = v - - unless system("which xml2po 1> /dev/null 2>/dev/null") - $stderr.puts("'xml2po' command is required.") - $stderr.puts() - $stderr.puts("If you are using Debian or Ubuntu,\n'xml2po' can be installed by the following command:\n apt-get install gnome-doc-utils") - exit(1) - end - end - - options[:output] = nil - opt.on('-o FILE', '--output=FILE', - "\n\t\tPrint resulting text into FILE") do |file| - options[:output] = file - end - - options[:header] = nil - opt.on('-H', '--header=FILE', - "\n\t\tHeader ERB template. Define parameters by --data option") do |file| - unless File.exist?(file) - $stderr.puts("No such file: #{file}") - $stderr.puts() - puts opt.help() - exit(1) - end - options[:header] = file - end - - options[:footer] = nil - opt.on('-F', '--footer=FILE', - "\n\t\tFooter ERB template. Define parameters by --data option") do |file| - unless File.exist?(file) - $stderr.puts("No such file: #{file}") - $stderr.puts() - puts opt.help() - exit(1) - end - options[:footer] = file - end - - options[:data] = Array.new - opt.on('-d', '--data=NAME=VALUE', - "\n\t\tBind VALUE(any ruby expression) to NAME when rendering HTML.") do |data| - if data =~ /([^=])=(.+)/ - options[:data] << data - end - end - - opt.parse!(argv) - - options -end - -def main(argv) - textfile = nil - output = nil - - options = parse_option(argv) - - argv.each do |arg| - next unless File.exist?(arg) - textfile = File.open(arg) - - if options[:output] - output = File.open(options[:output], "w") - else - output = $stdout - end - break - end - - unless textfile - textfile = $stdin - output = $stdout - end - - tempfile = Tempfile.new("twmode-publish") - - html_body = BlueCloth.new(textfile.read).to_html - tempfile.puts(header(options) + html_body + footer(options)) - tempfile.fsync() - - translated_str = nil - if options[:po_file] - translated_str = `xml2po -k -m xhtml -p #{options[:po_file]} -o /dev/stdout #{tempfile.path}` - else - translated_str = File.open(tempfile.path).read - end - - translated_str = translated_str.gsub(/\A\s*<\?xml\s*version="1\.0"\s*encoding="utf-8"\s*\?>/, '') - - output.puts(translated_str) - - true -end - -if __FILE__ == $0 - exit(main(ARGV)) -end diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/screenshot.text b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/screenshot.text deleted file mode 100644 index 9cc968bc..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/screenshot.text +++ /dev/null @@ -1,31 +0,0 @@ - -# Screenshots - -## Timeline - -### Friends timeline - -#### Without icons - -![](./images/screen-friends-no-icon.png) - -#### With icons -![](./images/screen-friends.png) - -### User's timeline - -![](./images/screen-user.png) - -### Supported timelines - -- Home timeline -- User's timeline -- Mentions -- Lists -- Direct messages -- Search timeline -- Favorites -- Public timeline - -[« Back to top](./index.html) - diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/style.css b/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/style.css deleted file mode 100644 index f508ae1c..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/doc/web/style.css +++ /dev/null @@ -1,190 +0,0 @@ -* { - padding: 0; - margin: 0; -} - -body { -background: #555; -font-family: Verdana, Arial, Helvetica, sans-serif; -font-size: 12pt; -line-height: 13pt; -color: #333333;; -} - -li { -margin-left: 20pt; -padding: 2pt 3pt 2pt 3pt; -} - -p { -margin: 3pt; -padding: 3pt; -} - -img { border: none; } -a { color: #3E92EA; } -a:hover { text-decoration: none; color : #000; } - -#wrap { -margin: 40px auto 0 auto; -width: 800px; -} - -#header { -padding-bottom:10px; -} -#header h1 { -font-size: 28pt; -font-weight: 100; -letter-spacing: -1pt; -padding: 12px 0 5px 10px; -} -#header h1 a { -color: #fff; -text-decoration: none; -} -#header h1 a:hover { -color: #fff; -text-decoration: none; -} -#header h2 { -color: #ccc; -font-size: 15pt; -font-weight: 100; -padding: 0 0 0 11px; -letter-spacing: -1pt; -line-height: 18pt; -} - -#menu { -height: 75px; -line-height: 75px; -background: #222 url(images/menu.png) repeat-y; -} -#menu ul { -padding-left: 10px; -list-style-type: none; -} -#menu ul li { -display: block; -float: left; -padding: 0; -marging: 0; -} -#menu ul li a { -color: #eee; -padding: 0 10px; -text-decoration: none; -font-weight: 600; -} -#menu ul li a:hover { -color: #fff; -text-decoration: underline; -} - -#content { -background: #555 url(images/content.jpg) repeat-y; -padding: 10px 30px; -} - -.left { -/* width: 568px; */ -float: left; -text-align: justify; -} -.left h1 { -font-size: 24pt; -line-height: 32pt; -letter-spacing: -2pt; -padding : 10px 0 15px 0; -} -.left h2 { -color: #FF4800; -font-size: 22pt; -line-height: 22pt; -letter-spacing: -2pt; -font-weight: 100; -padding : 10px 0 15px 0; -} - -.left h3 { -text-decoration: underline; -line-height: 22pt; -margin: 0 0 5pt 0; -padding : 10pt 0 15pt 0; -} - -.left h4 { -line-height: 20pt; -border-left: 10px solid gray; -padding-left: 5px; -margin: 10pt 0 15pt 0; - -} - -.left ul { -padding: 10px 0 10px 0; -} - -.left ol { -padding: 10px 0 10px 0; -} - -.left pre { -margin: 10px; -padding: 10px; -border: 1px solid gray; -border-left: none; -border-right: none; -background: AliceBlue; -} - -.left code { -border: 1px solid lightgray; -background: wheat; -} - -.left pre code { -border: none; -background: none; -} - -.right { -width: 150px; -float: right; -padding: 10px; -border-left: 1px solid #bbb; -font-size: 12px; -} -.right ul { -list-style-type: none; -padding: 5px 10px 10px 10px; -} -.right h2 { -height: 30px; -font-size: 12px; -color: #666; -line-height: 30px; -} -.right a { text-decoration: none } - -#top { -background: #555 url(images/top.jpg) no-repeat; -padding: 5px 0; -clear: both; -} -#bottom { -background: #555 url(images/bottom.jpg) no-repeat; -padding: 10px 0; -} - -#footer { -text-align: center; -color: #eee; -font-size: 11px; -padding: 0 0 10px 0; -} - -.footnote { -font-size: 10pt; -} \ No newline at end of file diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/.nosearch b/xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/.nosearch deleted file mode 100644 index e69de29b..00000000 diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/hex-util.el b/xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/hex-util.el deleted file mode 100644 index 901c98c9..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/hex-util.el +++ /dev/null @@ -1,75 +0,0 @@ -;;; hex-util.el --- Functions to encode/decode hexadecimal string. - -;; Copyright (C) 1999, 2001, 2002, 2003, 2004, -;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. - -;; Author: Shuhei KOBAYASHI -;; Keywords: data - -;; This file is part of FLIM (Faithful Library about Internet Message). - -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 3, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. - -;;; Commentary: - -;;; Code: - -(eval-when-compile - (defmacro hex-char-to-num (chr) - `(let ((chr ,chr)) - (cond - ((and (<= ?a chr)(<= chr ?f)) (+ (- chr ?a) 10)) - ((and (<= ?A chr)(<= chr ?F)) (+ (- chr ?A) 10)) - ((and (<= ?0 chr)(<= chr ?9)) (- chr ?0)) - (t (error "Invalid hexadecimal digit `%c'" chr))))) - (defmacro num-to-hex-char (num) - `(aref "0123456789abcdef" ,num))) - -(defun decode-hex-string (string) - "Decode hexadecimal STRING to octet string." - (let* ((len (length string)) - (dst (make-string (/ len 2) 0)) - (idx 0)(pos 0)) - (while (< pos len) - ;; logior and lsh are not byte-coded. - ;; (aset dst idx (logior (lsh (hex-char-to-num (aref string pos)) 4) - ;; (hex-char-to-num (aref string (1+ pos))))) - (aset dst idx (+ (* (hex-char-to-num (aref string pos)) 16) - (hex-char-to-num (aref string (1+ pos))))) - (setq idx (1+ idx) - pos (+ 2 pos))) - dst)) - -(defun encode-hex-string (string) - "Encode octet STRING to hexadecimal string." - (let* ((len (length string)) - (dst (make-string (* len 2) 0)) - (idx 0)(pos 0)) - (while (< pos len) - ;; logand and lsh are not byte-coded. - ;; (aset dst idx (num-to-hex-char (logand (lsh (aref string pos) -4) 15))) - (aset dst idx (num-to-hex-char (/ (aref string pos) 16))) - (setq idx (1+ idx)) - ;; (aset dst idx (num-to-hex-char (logand (aref string pos) 15))) - (aset dst idx (num-to-hex-char (% (aref string pos) 16))) - (setq idx (1+ idx) - pos (1+ pos))) - dst)) - -(provide 'hex-util) - -;; arch-tag: fe8aaa79-6c86-400e-813f-5a8cc4cb3859 -;;; hex-util.el ends here diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/sha1.el b/xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/sha1.el deleted file mode 100644 index 7c5feff9..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/sha1.el +++ /dev/null @@ -1,442 +0,0 @@ -;;; sha1.el --- SHA1 Secure Hash Algorithm in Emacs-Lisp - -;; Copyright (C) 1999, 2001, 2002, 2003, 2004, -;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. - -;; Author: Shuhei KOBAYASHI -;; Keywords: SHA1, FIPS 180-1 - -;; This file is part of FLIM (Faithful Library about Internet Message). - -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 3, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. - -;;; Commentary: - -;; This program is implemented from the definition of SHA-1 in FIPS PUB -;; 180-1 (Federal Information Processing Standards Publication 180-1), -;; "Announcing the Standard for SECURE HASH STANDARD". -;; -;; (EXCEPTION; two optimizations taken from GnuPG/cipher/sha1.c) -;; -;; Test cases from FIPS PUB 180-1. -;; -;; (sha1 "abc") -;; => a9993e364706816aba3e25717850c26c9cd0d89d -;; -;; (sha1 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq") -;; => 84983e441c3bd26ebaae4aa1f95129e5e54670f1 -;; -;; (sha1 (make-string 1000000 ?a)) -;; => 34aa973cd4c4daa4f61eeb2bdbad27316534016f -;; -;; BUGS: -;; * It is assumed that length of input string is less than 2^29 bytes. -;; * It is caller's responsibility to make string (or region) unibyte. -;; -;; TODO: -;; * Rewrite from scratch! -;; This version is much faster than Keiichi Suzuki's another sha1.el, -;; but it is too dirty. - -;;; Code: - -(require 'hex-util) - -;;; -;;; external SHA1 function. -;;; - -(defgroup sha1 nil - "Elisp interface for SHA1 hash computation." - :version "22.1" - :group 'extensions) - -(defcustom sha1-maximum-internal-length 500 - "*Maximum length of message to use Lisp version of SHA1 function. -If message is longer than this, `sha1-program' is used instead. - -If this variable is set to 0, use external program only. -If this variable is set to nil, use internal function only." - :type 'integer - :group 'sha1) - -(defcustom sha1-program '("sha1sum") - "*Name of program to compute SHA1. -It must be a string \(program name\) or list of strings \(name and its args\)." - :type '(repeat string) - :group 'sha1) - -(defcustom sha1-use-external (condition-case () - (executable-find (car sha1-program)) - (error)) - "*Use external SHA1 program. -If this variable is set to nil, use internal function only." - :type 'boolean - :group 'sha1) - -(defun sha1-string-external (string &optional binary) - (let (prog args digest default-enable-multibyte-characters) - (if (consp sha1-program) - (setq prog (car sha1-program) - args (cdr sha1-program)) - (setq prog sha1-program - args nil)) - (with-temp-buffer - (insert string) - (apply (function call-process-region) - (point-min)(point-max) - prog t t nil args) - ;; SHA1 is 40 bytes long in hexadecimal form. - (setq digest (buffer-substring (point-min)(+ (point-min) 40)))) - (if binary - (decode-hex-string digest) - digest))) - -(defun sha1-region-external (beg end &optional binary) - (sha1-string-external (buffer-substring-no-properties beg end) binary)) - -;;; -;;; internal SHA1 function. -;;; - -(eval-when-compile - ;; optional second arg of string-to-number is new in v20. - (defconst sha1-K0-high 23170) ; (string-to-number "5A82" 16) - (defconst sha1-K0-low 31129) ; (string-to-number "7999" 16) - (defconst sha1-K1-high 28377) ; (string-to-number "6ED9" 16) - (defconst sha1-K1-low 60321) ; (string-to-number "EBA1" 16) - (defconst sha1-K2-high 36635) ; (string-to-number "8F1B" 16) - (defconst sha1-K2-low 48348) ; (string-to-number "BCDC" 16) - (defconst sha1-K3-high 51810) ; (string-to-number "CA62" 16) - (defconst sha1-K3-low 49622) ; (string-to-number "C1D6" 16) - - ;; original definition of sha1-F0. - ;; (defmacro sha1-F0 (B C D) - ;; (` (logior (logand (, B) (, C)) - ;; (logand (lognot (, B)) (, D))))) - ;; a little optimization from GnuPG/cipher/sha1.c. - (defmacro sha1-F0 (B C D) - `(logxor ,D (logand ,B (logxor ,C ,D)))) - (defmacro sha1-F1 (B C D) - `(logxor ,B ,C ,D)) - ;; original definition of sha1-F2. - ;; (defmacro sha1-F2 (B C D) - ;; (` (logior (logand (, B) (, C)) - ;; (logand (, B) (, D)) - ;; (logand (, C) (, D))))) - ;; a little optimization from GnuPG/cipher/sha1.c. - (defmacro sha1-F2 (B C D) - `(logior (logand ,B ,C) - (logand ,D (logior ,B ,C)))) - (defmacro sha1-F3 (B C D) - `(logxor ,B ,C ,D)) - - (defmacro sha1-S1 (W-high W-low) - `(let ((W-high ,W-high) - (W-low ,W-low)) - (setq S1W-high (+ (% (* W-high 2) 65536) - (/ W-low ,(/ 65536 2)))) - (setq S1W-low (+ (/ W-high ,(/ 65536 2)) - (% (* W-low 2) 65536))))) - (defmacro sha1-S5 (A-high A-low) - `(progn - (setq S5A-high (+ (% (* ,A-high 32) 65536) - (/ ,A-low ,(/ 65536 32)))) - (setq S5A-low (+ (/ ,A-high ,(/ 65536 32)) - (% (* ,A-low 32) 65536))))) - (defmacro sha1-S30 (B-high B-low) - `(progn - (setq S30B-high (+ (/ ,B-high 4) - (* (% ,B-low 4) ,(/ 65536 4)))) - (setq S30B-low (+ (/ ,B-low 4) - (* (% ,B-high 4) ,(/ 65536 4)))))) - - (defmacro sha1-OP (round) - `(progn - (sha1-S5 sha1-A-high sha1-A-low) - (sha1-S30 sha1-B-high sha1-B-low) - (setq sha1-A-low (+ (,(intern (format "sha1-F%d" round)) - sha1-B-low sha1-C-low sha1-D-low) - sha1-E-low - ,(symbol-value - (intern (format "sha1-K%d-low" round))) - (aref block-low idx) - (progn - (setq sha1-E-low sha1-D-low) - (setq sha1-D-low sha1-C-low) - (setq sha1-C-low S30B-low) - (setq sha1-B-low sha1-A-low) - S5A-low))) - (setq carry (/ sha1-A-low 65536)) - (setq sha1-A-low (% sha1-A-low 65536)) - (setq sha1-A-high (% (+ (,(intern (format "sha1-F%d" round)) - sha1-B-high sha1-C-high sha1-D-high) - sha1-E-high - ,(symbol-value - (intern (format "sha1-K%d-high" round))) - (aref block-high idx) - (progn - (setq sha1-E-high sha1-D-high) - (setq sha1-D-high sha1-C-high) - (setq sha1-C-high S30B-high) - (setq sha1-B-high sha1-A-high) - S5A-high) - carry) - 65536)))) - - (defmacro sha1-add-to-H (H X) - `(progn - (setq ,(intern (format "sha1-%s-low" H)) - (+ ,(intern (format "sha1-%s-low" H)) - ,(intern (format "sha1-%s-low" X)))) - (setq carry (/ ,(intern (format "sha1-%s-low" H)) 65536)) - (setq ,(intern (format "sha1-%s-low" H)) - (% ,(intern (format "sha1-%s-low" H)) 65536)) - (setq ,(intern (format "sha1-%s-high" H)) - (% (+ ,(intern (format "sha1-%s-high" H)) - ,(intern (format "sha1-%s-high" X)) - carry) - 65536)))) - ) - -;;; buffers (H0 H1 H2 H3 H4). -(defvar sha1-H0-high) -(defvar sha1-H0-low) -(defvar sha1-H1-high) -(defvar sha1-H1-low) -(defvar sha1-H2-high) -(defvar sha1-H2-low) -(defvar sha1-H3-high) -(defvar sha1-H3-low) -(defvar sha1-H4-high) -(defvar sha1-H4-low) - -(defun sha1-block (block-high block-low) - (let (;; step (c) --- initialize buffers (A B C D E). - (sha1-A-high sha1-H0-high) (sha1-A-low sha1-H0-low) - (sha1-B-high sha1-H1-high) (sha1-B-low sha1-H1-low) - (sha1-C-high sha1-H2-high) (sha1-C-low sha1-H2-low) - (sha1-D-high sha1-H3-high) (sha1-D-low sha1-H3-low) - (sha1-E-high sha1-H4-high) (sha1-E-low sha1-H4-low) - (idx 16)) - ;; step (b). - (let (;; temporary variables used in sha1-S1 macro. - S1W-high S1W-low) - (while (< idx 80) - (sha1-S1 (logxor (aref block-high (- idx 3)) - (aref block-high (- idx 8)) - (aref block-high (- idx 14)) - (aref block-high (- idx 16))) - (logxor (aref block-low (- idx 3)) - (aref block-low (- idx 8)) - (aref block-low (- idx 14)) - (aref block-low (- idx 16)))) - (aset block-high idx S1W-high) - (aset block-low idx S1W-low) - (setq idx (1+ idx)))) - ;; step (d). - (setq idx 0) - (let (;; temporary variables used in sha1-OP macro. - S5A-high S5A-low S30B-high S30B-low carry) - (while (< idx 20) (sha1-OP 0) (setq idx (1+ idx))) - (while (< idx 40) (sha1-OP 1) (setq idx (1+ idx))) - (while (< idx 60) (sha1-OP 2) (setq idx (1+ idx))) - (while (< idx 80) (sha1-OP 3) (setq idx (1+ idx)))) - ;; step (e). - (let (;; temporary variables used in sha1-add-to-H macro. - carry) - (sha1-add-to-H H0 A) - (sha1-add-to-H H1 B) - (sha1-add-to-H H2 C) - (sha1-add-to-H H3 D) - (sha1-add-to-H H4 E)))) - -(defun sha1-binary (string) - "Return the SHA1 of STRING in binary form." - (let (;; prepare buffers for a block. byte-length of block is 64. - ;; input block is split into two vectors. - ;; - ;; input block: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ... - ;; block-high: +-0-+ +-1-+ +-2-+ +-3-+ - ;; block-low: +-0-+ +-1-+ +-2-+ +-3-+ - ;; - ;; length of each vector is 80, and elements of each vector are - ;; 16bit integers. elements 0x10-0x4F of each vector are - ;; assigned later in `sha1-block'. - (block-high (eval-when-compile (make-vector 80 nil))) - (block-low (eval-when-compile (make-vector 80 nil)))) - (unwind-protect - (let* (;; byte-length of input string. - (len (length string)) - (lim (* (/ len 64) 64)) - (rem (% len 4)) - (idx 0)(pos 0)) - ;; initialize buffers (H0 H1 H2 H3 H4). - (setq sha1-H0-high 26437 ; (string-to-number "6745" 16) - sha1-H0-low 8961 ; (string-to-number "2301" 16) - sha1-H1-high 61389 ; (string-to-number "EFCD" 16) - sha1-H1-low 43913 ; (string-to-number "AB89" 16) - sha1-H2-high 39098 ; (string-to-number "98BA" 16) - sha1-H2-low 56574 ; (string-to-number "DCFE" 16) - sha1-H3-high 4146 ; (string-to-number "1032" 16) - sha1-H3-low 21622 ; (string-to-number "5476" 16) - sha1-H4-high 50130 ; (string-to-number "C3D2" 16) - sha1-H4-low 57840) ; (string-to-number "E1F0" 16) - ;; loop for each 64 bytes block. - (while (< pos lim) - ;; step (a). - (setq idx 0) - (while (< idx 16) - (aset block-high idx (+ (* (aref string pos) 256) - (aref string (1+ pos)))) - (setq pos (+ pos 2)) - (aset block-low idx (+ (* (aref string pos) 256) - (aref string (1+ pos)))) - (setq pos (+ pos 2)) - (setq idx (1+ idx))) - (sha1-block block-high block-low)) - ;; last block. - (if (prog1 - (< (- len lim) 56) - (setq lim (- len rem)) - (setq idx 0) - (while (< pos lim) - (aset block-high idx (+ (* (aref string pos) 256) - (aref string (1+ pos)))) - (setq pos (+ pos 2)) - (aset block-low idx (+ (* (aref string pos) 256) - (aref string (1+ pos)))) - (setq pos (+ pos 2)) - (setq idx (1+ idx))) - ;; this is the last (at most) 32bit word. - (cond - ((= rem 3) - (aset block-high idx (+ (* (aref string pos) 256) - (aref string (1+ pos)))) - (setq pos (+ pos 2)) - (aset block-low idx (+ (* (aref string pos) 256) - 128))) - ((= rem 2) - (aset block-high idx (+ (* (aref string pos) 256) - (aref string (1+ pos)))) - (aset block-low idx 32768)) - ((= rem 1) - (aset block-high idx (+ (* (aref string pos) 256) - 128)) - (aset block-low idx 0)) - (t ;; (= rem 0) - (aset block-high idx 32768) - (aset block-low idx 0))) - (setq idx (1+ idx)) - (while (< idx 16) - (aset block-high idx 0) - (aset block-low idx 0) - (setq idx (1+ idx)))) - ;; last block has enough room to write the length of string. - (progn - ;; write bit length of string to last 4 bytes of the block. - (aset block-low 15 (* (% len 8192) 8)) - (setq len (/ len 8192)) - (aset block-high 15 (% len 65536)) - ;; XXX: It is not practical to compute SHA1 of - ;; such a huge message on emacs. - ;; (setq len (/ len 65536)) ; for 64bit emacs. - ;; (aset block-low 14 (% len 65536)) - ;; (aset block-high 14 (/ len 65536)) - (sha1-block block-high block-low)) - ;; need one more block. - (sha1-block block-high block-low) - (fillarray block-high 0) - (fillarray block-low 0) - ;; write bit length of string to last 4 bytes of the block. - (aset block-low 15 (* (% len 8192) 8)) - (setq len (/ len 8192)) - (aset block-high 15 (% len 65536)) - ;; XXX: It is not practical to compute SHA1 of - ;; such a huge message on emacs. - ;; (setq len (/ len 65536)) ; for 64bit emacs. - ;; (aset block-low 14 (% len 65536)) - ;; (aset block-high 14 (/ len 65536)) - (sha1-block block-high block-low)) - ;; make output string (in binary form). - (let ((result (make-string 20 0))) - (aset result 0 (/ sha1-H0-high 256)) - (aset result 1 (% sha1-H0-high 256)) - (aset result 2 (/ sha1-H0-low 256)) - (aset result 3 (% sha1-H0-low 256)) - (aset result 4 (/ sha1-H1-high 256)) - (aset result 5 (% sha1-H1-high 256)) - (aset result 6 (/ sha1-H1-low 256)) - (aset result 7 (% sha1-H1-low 256)) - (aset result 8 (/ sha1-H2-high 256)) - (aset result 9 (% sha1-H2-high 256)) - (aset result 10 (/ sha1-H2-low 256)) - (aset result 11 (% sha1-H2-low 256)) - (aset result 12 (/ sha1-H3-high 256)) - (aset result 13 (% sha1-H3-high 256)) - (aset result 14 (/ sha1-H3-low 256)) - (aset result 15 (% sha1-H3-low 256)) - (aset result 16 (/ sha1-H4-high 256)) - (aset result 17 (% sha1-H4-high 256)) - (aset result 18 (/ sha1-H4-low 256)) - (aset result 19 (% sha1-H4-low 256)) - result)) - ;; do not leave a copy of input string. - (fillarray block-high nil) - (fillarray block-low nil)))) - -(defun sha1-string-internal (string &optional binary) - (if binary - (sha1-binary string) - (encode-hex-string (sha1-binary string)))) - -(defun sha1-region-internal (beg end &optional binary) - (sha1-string-internal (buffer-substring-no-properties beg end) binary)) - -;;; -;;; application interface. -;;; - -(defun sha1-region (beg end &optional binary) - (if (and sha1-use-external - sha1-maximum-internal-length - (> (abs (- end beg)) sha1-maximum-internal-length)) - (sha1-region-external beg end binary) - (sha1-region-internal beg end binary))) - -(defun sha1-string (string &optional binary) - (if (and sha1-use-external - sha1-maximum-internal-length - (> (length string) sha1-maximum-internal-length)) - (sha1-string-external string binary) - (sha1-string-internal string binary))) - -;;;###autoload -(defun sha1 (object &optional beg end binary) - "Return the SHA1 (Secure Hash Algorithm) of an object. -OBJECT is either a string or a buffer. -Optional arguments BEG and END denote buffer positions for computing the -hash of a portion of OBJECT. -If BINARY is non-nil, return a string in binary form." - (if (stringp object) - (sha1-string object binary) - (with-current-buffer object - (sha1-region (or beg (point-min)) (or end (point-max)) binary)))) - -(provide 'sha1) - -;; arch-tag: c0f9abd0-ffc1-4557-aac6-ece7f2d4c901 -;;; sha1.el ends here diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/tls.el b/xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/tls.el deleted file mode 100644 index 3b96f04d..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/emacs21/tls.el +++ /dev/null @@ -1,209 +0,0 @@ -;;; tls.el --- TLS/SSL support via wrapper around GnuTLS - -;; Copyright (C) 1996, 1997, 1998, 1999, 2002, 2003, 2004, -;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. - -;; Author: Simon Josefsson -;; Keywords: comm, tls, gnutls, ssl - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 3, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. - -;;; Commentary: - -;; This package implements a simple wrapper around "gnutls-cli" to -;; make Emacs support TLS/SSL. -;; -;; Usage is the same as `open-network-stream', i.e.: -;; -;; (setq tmp (open-tls-stream "test" (current-buffer) "news.mozilla.org" 563)) -;; ... -;; # -;; (process-send-string tmp "mode reader\n") -;; 200 secnews.netscape.com Netscape-Collabra/3.52 03615 NNRP ready ... -;; nil -;; (process-send-string tmp "quit\n") -;; 205 -;; nil - -;; To use this package as a replacement for ssl.el by William M. Perry -;; , you need to evaluate the following: -;; -;; (defalias 'open-ssl-stream 'open-tls-stream) - -;;; Code: - -(eval-and-compile - (autoload 'format-spec "format-spec") - (autoload 'format-spec-make "format-spec")) - -(defgroup tls nil - "Transport Layer Security (TLS) parameters." - :group 'comm) - -(defcustom tls-end-of-info - (concat - "\\(" - ;; `openssl s_client' regexp. See ssl/ssl_txt.c lines 219-220. - ;; According to apps/s_client.c line 1515 `---' is always the last - ;; line that is printed by s_client before the real data. - "^ Verify return code: .+\n---\n\\|" - ;; `gnutls' regexp. See src/cli.c lines 721-. - "^- Simple Client Mode:\n" - "\\(\n\\|" ; ignore blank lines - ;; According to GnuTLS v2.1.5 src/cli.c lines 640-650 and 705-715 - ;; in `main' the handshake will start after this message. If the - ;; handshake fails, the programs will abort. - "^\\*\\*\\* Starting TLS handshake\n\\)*" - "\\)") - "Regexp matching end of TLS client informational messages. -Client data stream begins after the last character matched by -this. The default matches `openssl s_client' (version 0.9.8c) -and `gnutls-cli' (version 2.0.1) output." - :version "22.2" - :type 'regexp - :group 'tls) - -(defcustom tls-program '("gnutls-cli -p %p %h" - "gnutls-cli -p %p %h --protocols ssl3" - "openssl s_client -connect %h:%p -no_ssl2") - "List of strings containing commands to start TLS stream to a host. -Each entry in the list is tried until a connection is successful. -%h is replaced with server hostname, %p with port to connect to. -The program should read input on stdin and write output to -stdout. Also see `tls-success' for what the program should output -after successful negotiation." - :type '(repeat string) - :version "22.1" - :group 'tls) - -(defcustom tls-process-connection-type nil - "*Value for `process-connection-type' to use when starting TLS process." - :version "22.1" - :type 'boolean - :group 'tls) - -(defcustom tls-success "- Handshake was completed\\|SSL handshake has read " - "*Regular expression indicating completed TLS handshakes. -The default is what GNUTLS's \"gnutls-cli\" or OpenSSL's -\"openssl s_client\" outputs." - :version "22.1" - :type 'regexp - :group 'tls) - -(defcustom tls-certtool-program (executable-find "certtool") - "Name of GnuTLS certtool. -Used by `tls-certificate-information'." - :version "22.1" - :type 'string - :group 'tls) - -(defun tls-certificate-information (der) - "Parse X.509 certificate in DER format into an assoc list." - (let ((certificate (concat "-----BEGIN CERTIFICATE-----\n" - (base64-encode-string der) - "\n-----END CERTIFICATE-----\n")) - (exit-code 0)) - (with-current-buffer (get-buffer-create " *certtool*") - (erase-buffer) - (insert certificate) - (setq exit-code (condition-case () - (call-process-region (point-min) (point-max) - tls-certtool-program - t (list (current-buffer) nil) t - "--certificate-info") - (error -1))) - (if (/= exit-code 0) - nil - (let ((vals nil)) - (goto-char (point-min)) - (while (re-search-forward "^\\([^:]+\\): \\(.*\\)" nil t) - (push (cons (match-string 1) (match-string 2)) vals)) - (nreverse vals)))))) - -(defun open-tls-stream (name buffer host port) - "Open a TLS connection for a port to a host. -Returns a subprocess-object to represent the connection. -Input and output work as for subprocesses; `delete-process' closes it. -Args are NAME BUFFER HOST PORT. -NAME is name for process. It is modified if necessary to make it unique. -BUFFER is the buffer (or buffer-name) to associate with the process. - Process output goes at end of that buffer, unless you specify - an output stream or filter function to handle the output. - BUFFER may be also nil, meaning that this process is not associated - with any buffer -Third arg is name of the host to connect to, or its IP address. -Fourth arg PORT is an integer specifying a port to connect to." - (let ((cmds tls-program) - (use-temp-buffer (null buffer)) - process cmd done) - (if use-temp-buffer - (setq buffer (generate-new-buffer " TLS"))) - (with-current-buffer buffer - (message "Opening TLS connection to `%s'..." host) - (while (and (not done) (setq cmd (pop cmds))) - (message "Opening TLS connection with `%s'..." cmd) - (let ((process-connection-type tls-process-connection-type) - response) - (setq process (start-process - name buffer shell-file-name shell-command-switch - (format-spec - cmd - (format-spec-make - ?h host - ?p (if (integerp port) - (int-to-string port) - port))))) - (while (and process - (memq (process-status process) '(open run)) - (progn - (goto-char (point-min)) - (not (setq done (re-search-forward tls-success nil t))))) - (unless (accept-process-output process 1) - (sit-for 1))) - (message "Opening TLS connection with `%s'...%s" cmd - (if done "done" "failed")) - (if (not done) - (delete-process process) - ;; advance point to after all informational messages that - ;; `openssl s_client' and `gnutls' print - (let ((start-of-data nil)) - (while - (not (setq start-of-data - ;; the string matching `tls-end-of-info' - ;; might come in separate chunks from - ;; `accept-process-output', so start the - ;; search where `tls-success' ended - (save-excursion - (if (re-search-forward tls-end-of-info nil t) - (match-end 0))))) - (accept-process-output process 1)) - (if start-of-data - ;; move point to start of client data - (goto-char start-of-data))) - (setq done process)))) - (message "Opening TLS connection to `%s'...%s" - host (if done "done" "failed"))) - (when use-temp-buffer - (if done (set-process-buffer process nil)) - (kill-buffer buffer)) - done)) - -(provide 'tls) - -;;; arch-tag: 5596d1c4-facc-4bc4-94a9-9863b928d7ac -;;; tls.el ends here diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/howto/.nosearch b/xemacs-packages/lisp/twittering-mode-3.0.0/howto/.nosearch deleted file mode 100644 index e69de29b..00000000 diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/howto/release b/xemacs-packages/lisp/twittering-mode-3.0.0/howto/release deleted file mode 100644 index 0673fd8d..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/howto/release +++ /dev/null @@ -1,16 +0,0 @@ - - -# What to do on a release - -- Add new version number to `/NEWS` and `/NEWS.ja` and describe updates. -- `make release` to update version numbers and create tarballs. - - Fix the new version number based on the rule above and update `/VERSION`. - - Update version numbers in source code(`/twittering-mode.el`). - - Update version numbers on web pages(`/doc/web/index.text`). - - Change the version number in `/VERSION` to next (expected) version number. -- Make a tag `v` -- Upload new source files to souceforge.net -- Publish web pages(`cd doc/web; make upload`). -- Release announce on MLs. -- Release announce on freshmeat.net. -- Release announce on Twitter. diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/http-client.rb b/xemacs-packages/lisp/twittering-mode-3.0.0/http-client.rb deleted file mode 100755 index 9622ad4c..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/http-client.rb +++ /dev/null @@ -1,173 +0,0 @@ -#!/usr/bin/env ruby - -require 'net/http' -require 'net/https' -require 'optparse' -require 'uri' - -def verbose_printer(verbosity) - if verbosity - pid = Process.pid - Proc.new do |msg| - $stderr.puts "[#{pid}]: #{msg}" - end - else - Proc.new do |a| - end - end -end - -def parse_option(argv) - parser = OptionParser.new - opt = Hash.new - - print_help = Proc.new do |msg, *args| - exits = if args.size > 0 - args.shift - else - true - end - if msg - puts msg - puts - end - puts "Usage: #{$0} [OPTIONS] HOSTNAME" - puts parser.help - - if exits - exit(1) - end - end - - parser.on('-h') do - print_help.call(nil) - end - - # TODO: should be rewrite in cURL style option - opt[:verbose] = nil - parser.on('-v', '--verbose', - "\n\t\tverbose") do - opt[:verbose] = true - end - - opt[:headers] = Hash.new - parser.on('-H', '--header HEADER', - "\n\t\tadditional HTTP header field." + - "\n\t\tuse like -h \"User-Agent: Ruby\"") do |header| - unless header =~ /^([-A-Za-z]+):\s*(.+)$/ - print_help.call("Invalid HTTP header format: #{header}") - end - opt[:headers][$~[1]] = $~[2] - end - - opt[:method] = 'GET' - parser.on('-m', '--method METHOD', - "\n\t\tHTTP request method"+ - " (GET and POST are supported)") do |method| - unless method =~ /\A(GET|POST)\Z/ - print_help.call("Not such HTTP method: #{method}") - end - opt[:method] = method - end - - opt[:path] = '/' - parser.on('-P', '--path PATH', - "\n\t\tHTTP request path (default: \"/\")") do |path| - opt[:path] = path - end - - opt[:encode] = nil - parser.on('-e', '--encode', - "\n\t\tpercent encode HTTP request path (default: no)") do - opt[:encode] = true - end - - opt[:ssl] = nil - parser.on('-s', '--ssl', "\n\t\tuse SSL (default: no)") do - opt[:ssl] = true - end - - opt[:port] = nil - parser.on('-p', '--port PORT', - "\n\t\tdestination port number" + - " (default: 80 on non-SSL, 443 on SSL)") do |port| - opt[:port] = port.to_i - puts "port: #{opt[:port]}" - end - - opt[:ssl_cert] = nil - parser.on('-c', '--cert PATH', - "\n\t\tCA certificate file(*.pem)" + - " for verifying certificates") do |path| - unless File.exist?(path) - print_help.call("No such file: #{path}") - end - opt[:ssl_cert] = path - end - - parser.parse!(argv) - - if argv.size == 0 - print_help.call('HOSTNAME required') - end - opt[:host] = argv.first - if !opt[:port] - opt[:port] = if opt[:ssl] - 443 - else - 80 - end - end - opt[:path] = URI.encode(opt[:path]) if opt[:encode] - - opt -end - -def print_header_string(res) - print "HTTP/#{res.http_version} #{res.code} #{res.message}" - res.canonical_each do |name,value| - print("\r\n#{name}: #{value}") - end -end - -def main(argv) - Net::HTTP.version_1_2 - opt = parse_option(argv) - vprint = verbose_printer(opt[:verbose]) - - http = Net::HTTP.new(opt[:host], opt[:port]) - if opt[:ssl] - http.use_ssl = true - vprint.call("SSL enabled") - if opt[:ssl_cert] - http.ca_file = opt[:ssl_cert] - http.verify_mode = OpenSSL::SSL::VERIFY_PEER - http.verify_depth = 5 - end - end - - res = nil - begin - http.start do |client| - res = case opt[:method] - when /GET/ - client.get(opt[:path], opt[:headers]) - when /POST/ - client.post(opt[:path], opt[:headers]) - end - end - end - - if res - print_header_string(res) - print "\r\n\r\n" - print res.body - $stdout.flush - else - $stderr.puts "error" - end -end - -if __FILE__ == $0 - main(ARGV.dup) -end diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/misc/.nosearch b/xemacs-packages/lisp/twittering-mode-3.0.0/misc/.nosearch deleted file mode 100644 index e69de29b..00000000 diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/misc/twitter-icon.svg b/xemacs-packages/lisp/twittering-mode-3.0.0/misc/twitter-icon.svg deleted file mode 100644 index 1ec56839..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/misc/twitter-icon.svg +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - tw - tw - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/misc/vernum-updater.rb b/xemacs-packages/lisp/twittering-mode-3.0.0/misc/vernum-updater.rb deleted file mode 100755 index e9464c89..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/misc/vernum-updater.rb +++ /dev/null @@ -1,208 +0,0 @@ -#!/usr/bin/env ruby - -require 'optparse' -require 'tempfile' -require 'pathname' -require 'fileutils' - -def y_or_n_p(msg) - answer = nil - - while answer == nil - print "#{msg} [yes or no]: " - $stdout.flush - ans = $stdin.readline.strip - case ans - when /yes/ - answer = true - break - when /no/ - answer = false - break - else - puts "Please type 'yes' or 'no'." - puts - end - end - - answer -end - -class FileContext - def initialize(lines, cur_line_idx, - match_col_start, match_col_end, rplstr) - @lines = lines - @cur_line_idx = cur_line_idx - @match_col_start = match_col_start - @match_col_end = match_col_end - @rplstr = rplstr - end - - def inspect - cur_line = @lines[@cur_line_idx][1].dup - len = @match_col_end - @match_col_start - rplstr = "\033[1m\033[4m" + cur_line[@match_col_start, len] + "\033[0m" - cur_line[@match_col_start, len] = rplstr - lines = @lines.dup - lines[@cur_line_idx] = [@lines[@cur_line_idx][0], cur_line] - - lineno_width = lines[lines.size - 1][0].to_s.size - lines.map{|line| sprintf("%#{lineno_width}d: %s", line[0], line[1])}.join.rstrip - end - - def line - @lines[@cur_line_idx][1] - end - - def lineno - @lines[@cur_line_idx][0] - end - - def replaced_line - cur_line = @lines[@cur_line_idx][1].dup - len = @match_col_end - @match_col_start - cur_line[@match_col_start, len] = @rplstr - cur_line - end -end - -class FileReplacer - def initialize(file, opt) - @infile = File.open(file, "r") - @outfile = Tempfile.new("fileupdater") - @opt = opt - - @lineno = 1 - # current line is the first element of after_buffer - @before_buffer = [] - @after_buffer = [] - (@opt[:context] + 1).times do - self.fetch_line(true) - end - end - - def replace!() - while @after_buffer.size > 0 - pos = 0 - cur_line_str = @after_buffer.first[1] - while @opt[:regexp].match(cur_line_str[pos..(cur_line_str.size)]) - context = FileContext.new(@before_buffer + @after_buffer, - @before_buffer.size, - pos + $~.begin(0), - pos + $~.end(0), @opt[:replace]) - rpl = yield(context) || cur_line_str - if rpl != cur_line_str - @after_buffer[0][1] = rpl - end - pos = $~.begin(0) + 1 - end - @outfile.print(@after_buffer.first[1]) - - self.fetch_line - end - - @infile.close - @outfile.close - FileUtils.copy(@outfile.path, @infile.path) - end - - def fetch_line(beginning_of_file = false) - eof_reached = false - line = nil - begin - line = @infile.readline - rescue EOFError => e - eof_reached = true - end - - if line - @after_buffer.push([@lineno, line]) - @lineno += 1 - end - - if ! beginning_of_file && - (eof_reached || @after_buffer.size > @opt[:context] + 1) - @before_buffer.push(@after_buffer.shift) - @before_buffer.shift if @before_buffer.size > @opt[:context] - end - - @after_buffer.first - end -end - -def update(file, opt) - base = Pathname.pwd - path = Pathname.new(file).realpath.to_s - replacer = FileReplacer.new(file, - :regexp => Regexp.compile(Regexp.quote(opt[:prev_version])), - :replace => opt[:next_version], - :context => opt[:context]) - replacer.replace! do |context| - puts "==== file: #{Pathname.new(path).relative_path_from(base).to_s} ====" - puts context.inspect - puts - puts "\033[34m\033[1mbefore\033[0m: #{context.line}" - puts "\033[31m\033[1mafter\033[0m : #{context.replaced_line}" - puts - if y_or_n_p("Update this line?") - context.replaced_line - else - context.line - end - end -rescue Errno::ENOENT => e - nil -end - -def parse_args(argv) - parser = OptionParser.new - opt = Hash.new - print_help = Proc.new do |msg| - puts msg - puts - puts parser.help - exit - end - - opt[:context] = 3 - parser.on('-C', '--context=NUM', - "\n\t\tPrint NUM lines around matching lines."+ - " Default value is #{opt[:context]}") do |num| - opt[:context] = num.to_i - opt[:context] = 3 if opt[:context] < 3 - end - - parser.on('-p', '--prev-version=NUM', - "\n\t\tPrevious version number.") do |prev| - opt[:prev_version] = prev - end - - parser.on('-n', '--next-version=NUM', - "\n\t\tNext version number.") do |next_| - opt[:next_version] = next_ - end - - parser.parse!(argv) - - unless opt[:prev_version] - print_help.call("Previous version number must be specified") - end - - unless opt[:next_version] - print_help.call("Next version number must be specified") - end - - opt -end - -def main(argv) - opt = parse_args(argv) - - argv.each do |file| - update(file, opt) - end -end - -if __FILE__ == $0 - main(ARGV.dup) -end diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/test.el b/xemacs-packages/lisp/twittering-mode-3.0.0/test.el deleted file mode 100644 index 9c561d37..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/test.el +++ /dev/null @@ -1,455 +0,0 @@ -;;; test.el --- Unit test framework for Emacs lisp program -;; Copyright (C) 2008 by Wang Liang - -;; Author: Wang Liang - -;; test.el is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; test.el is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Download -;; Latest version is at http://www.wanglianghome.org/svn/test/test.el -;; You can check out with subversion. -;; $ svn co http://www.wanglianghome.org/svn/test/ - -;;; Screenshot -;; http://www.wanglianghome.org/images/test.png - -;;; Usage - -;; Overview -;; This unit test framework is developed for testing operations on a buffer. -;; But it definitely can be used to test operations unrelated to buffers. -;; -;; For example, I write `my-buffer-substring'. I also have a file and if it -;; is loaded into a buffer and run (my-buffer-substring 10 22) on that buffer, -;; it must return "hello, world". To test it, I can write a test case with -;; this framework, -;; -;; (defun my-buffer-substring-setup () -;; (insert-file-contents "my-file")) -;; -;; (defcase my-buffer-substring-test nil 'my-buffer-substring-setup -;; (test-assert-string-equal (my-buffer-substring 10 22) "hello, world")) -;; -;; And then run it by invoking -;; `M-x test-run-one-case MY-BUFFER-SUBSTRING-TEST'. -;; -;; http://www.wanglianghome.org/svn/test/example.el is an example of usage. - -;; To use this framework, add the following lines to your .emacs file -;; (add-to-list 'load-path "/path/to/test/") -;; (require 'test) - -;; Write test cases -;; Test case is written with `defcase' macro. For example, -;; -;; (defcase my-code-test nil nil -;; (test-assert-ok (my-fun))) -;; -;; This test case includes one assertion but no tags and no setup code. -;; It checks return value of `my-fun'. If it's `nil', case fails. -;; Otherwise, case passes. You can add more assertions into one case. -;; -;; Besides `test-assert-ok', `test-assert-key' is used to assert that a key -;; is bound to a function in a mode-map. For example, -;; (test-assert-key example-mode-map (kbd "C-c C-c") 'example-function) -;; -;; Assertion for binary comparison or prediction is much more flexible. -;; You can use `test-assert-CMP' if `CMP', either provided by Emacs or -;; written by you, accepts more than two parameters. All those assertions -;; fallback to `test-assert-binary-relation' function so that I do not need -;; to write them as many as possible. Since `test-assert-binary-relation' -;; only considers first two parameters, others are ignored. -;; -;; You can develop your own assertions by using "test-assert-extended-" as -;; function name prefix. For example You develop `test-assert-extended->' -;; to compare many numbers since `test-assert->' only compares two. Inside -;; your own assertion function, you should use `assert' from `cl' package to -;; do real job. -;; -;; Test cases can be grouped with tags so that you can run them with one -;; command. To add tags to the previous test case, -;; -;; (defcase my-code-test (my-lib-suite my-lib-sublib-suite) nil -;; (test-assert-ok (my-fun))) -;; -;; All test cases are run in a temporary buffer. You can setup buffer -;; content by providing `setup' code. For example, -;; -;; (defun my-lib-setup () -;; (insert-file-contents "my-input-filename") -;; (my-mode)) -;; -;; (defcase my-code-test (my-lib my-lib-sublib) 'my-lib-setup -;; (test-assert-ok (my-fun))) -;; -;; You probably want to add a common tag to all your test case for a specific -;; package, and add a common setup code too. So you can write your own macro -;; to make it easy to develop test cases. For example, -;; -;; (defmacro defmylibcase (case-name tags &rest body) -;; `(defcase ,case-name ,(append '(my-lib-suite) tags) 'my-lib-setup -;; ,@body)) -;; -;; And then, -;; -;; (defmylibcase my-code-test-2 (my-lib-sublib-suite) -;; (test-assert-ok (my-fun))) -;; - -;; Run test cases -;; `M-x test-run-one-case CASE' runs one test case. -;; `M-x test-run-all-cases' runs all test cases stored in `test-cases'. -;; `M-x test-run-one-tag TAG' runs all test cases grouped by TAG. -;; `(test-run-tags TAGS)' runs all test cases grouped by one of TAGS. -;; -;; Test result, including detail error message and summary, is shown in -;; buffer `*test-result*'. -;; Every test case has a summary line to show how many cases pass and how -;; many cases fail. There are also a summary line to show total number of -;; pass and failure for all commands except `test-run-one-case'. -;; Error message is helpful. If assertion fails, `test-assert-ok' prints -;; evaluated form, `test-assert-binary-relation' prints what is got and why -;; it failed. - -;;; Code - -(require 'cl) - -(defconst test-version "0.9" - "test version") - -(defun test-version () - "Show test version." - (interactive) - (message "test version %s" test-version)) - -(defvar test-cases (make-hash-table) - "All case in all tags") - -(defvar test-tags (make-hash-table) - "All tags from all test cases") - -(defvar test-special-assertion-functions '(test-assert-ok test-assert-key) - "Assertion functions must not fallback to `test-assert-binary-relation'.") - -(defun test-completing-read (prompt choices dummy require-match) - "Use iswitchb completion functionality." - (let ((iswitchb-make-buflist-hook - (lambda () - (setq iswitchb-temp-buflist choices)))) - (iswitchb-read-buffer prompt nil require-match))) - -(defvar test-completing-read-function - (if (fboundp 'iswitchb-read-buffer) 'test-completing-read 'completing-read)) - -(defvar test-assert-method-prefix "test-assert-" - "Prefix of test-assert methods.") - -(defvar test-assert-extended-prefix "test-assert-extended-" - "Prefix of user-extended test-assert methods.") - -(defun test-assert-p (test) - "Return non-nil if TEST is an assertion." - (let ((method-name (symbol-name (car test)))) - (string-equal test-assert-method-prefix - (substring method-name - 0 - (min (length test-assert-method-prefix) - (length method-name)))))) - -(defun test-special-assert-p (test) - "Return non-nil if TEST is `test-assert-ok' or user-extended assertion." - (or (memq (car test) test-special-assertion-functions) - (let ((method-name (symbol-name (car test)))) - (string-equal test-assert-extended-prefix - (substring method-name - 0 - (min (length test-assert-extended-prefix) - (length method-name))))))) - -(defun test-report-error (test error) - "Print form TEST and error message from ERROR." - (princ "# ") - (prin1 test) - (princ "\n") - (let* ((msg (error-message-string error)) - (from-here (string-equal - "# " (substring msg 0 5)))) - (unless from-here - (princ "# ")) - (princ msg) - (unless from-here) - (princ "\n")) - (princ "# \n")) - -(defun test-gensym (&optional prefix) - "Generate uninterned symbol. -If PREFIX is non-nil, use it as prefix. Otherwise, use \"--test--\"." - (gensym (or prefix "--test--"))) - -(defun test-transform-body (body fail succ err &optional not-toplevel) - "This function transforms the BODY, which is a body of defcase, -recursively to alternate `test-assert-*' to apropriate -expressions" - (if (not (listp body)) - body - (mapcar - (lambda (arg) - (cond ((not (listp arg)) - arg) - ((not (test-assert-p arg)) - (let ((arg (cond - ((listp arg) - (test-transform-body arg fail succ err t)) - (t arg)))) - (if not-toplevel - arg - `(condition-case ,err - ;; do not count as success - ,arg - (error (incf ,fail) ; but count as failure - (test-report-error ',arg ,err)))))) - ((test-special-assert-p arg) - `(condition-case ,err - (progn - ,arg - (incf ,succ)) - (error (incf ,fail) - (test-report-error ',arg ,err)))) - (t - `(condition-case ,err - (progn - (test-assert-binary-relation - ;; function to test binary relation - ',(intern - (substring - (symbol-name (car arg)) - (length test-assert-method-prefix))) - ;; parameters to above function - ,@(cdr arg)) - (incf ,succ)) - (error (incf ,fail) - (test-report-error ',arg ,err)))))) - body))) - -(defmacro defcase (case-name tags setup &rest body) - "Define test case which includes one or multiple assertions." - (let ((tag (test-gensym)) - (tag-cases (test-gensym)) - (fail (test-gensym)) - (succ (test-gensym)) - (err (test-gensym))) - `(progn - (assert (and (listp ',tags) - (or (null ',tags) - (every 'symbolp ',tags))) - ;; `show-args' can not be `t' since `assert' will - ;; evaluate EVERY parameter of `and'. This breaks - ;; short-circuit effect of `and'. - nil - "Tags must be nil or a list of symbols.") - ;; Associate case with every tag, and push tags into hash table. - (dolist (,tag ',tags) - (when ,tag - (let ((,tag-cases (gethash ,tag test-tags '()))) - (add-to-list ',tag-cases ',case-name) - (puthash ,tag ,tag-cases test-tags)))) - ;; Push function, which runs test case and returns `(pass-count - ;; fail-count)', into hash table. - (puthash ',case-name - (lambda () - (let ((,fail 0) - (,succ 0)) - (with-temp-buffer - (when ,setup - (funcall ,setup)) - ;; transform `body' of macro during expansion time. - ,@(test-transform-body body fail succ err) - ;; summarize - (princ (format "%s: %d pass, %d fail." - (symbol-name ',case-name) - ,succ ,fail)) - (princ "\n")) - ;; return value - (list ,succ ,fail))) - test-cases)))) - -(defun test-princ-current-time () - "Print start time to run test cases." - (princ "# ") - (princ (current-time-string)) - (princ "\n")) - -(defmacro test-report (&rest body) - "Show test report in buffer `*test-result*'." - `(progn - (with-output-to-temp-buffer "*test-result*" - (test-princ-current-time) - ,@body) - (with-current-buffer "*test-result*" - (test-result-mode)))) - -(defun test-run (cases) - "Run test cases in CASES." - (dolist (case-name (test-args-to-list cases)) - (funcall (gethash case-name test-cases)))) - -(defvar test-last-summary nil) -(defun test-run-and-summarize (cases) - "Run test cases in CASES and print summary." - (let ((total-succ 0) - (total-fail 0)) - (dolist (case-name (test-args-to-list cases)) - (let ((summary (funcall (gethash case-name test-cases)))) - (incf total-succ (car summary)) - (incf total-fail (cadr summary)))) - (setq test-last-summary - `((succ . ,total-succ) (fail . ,total-fail))) - (princ "# ") - (princ (format "Total: %d pass, %d fail." total-succ total-fail)))) - -(defun test-args-to-list (args) - "Make sure ARGS is a list." - (if (listp args) - args - (list args))) - -(defun test-find-all-cases (tags) - "Return all test cases grouped by TAGS. -This function guarantees that no duplicated cases in return value." - (let ((tag-list (test-args-to-list tags)) - (cases '())) - (dolist (tag tag-list) - (dolist (test-case (gethash tag test-tags)) - (add-to-list 'cases test-case))) - cases)) - -(defun test-maphashkey (fn hashtable) - "Call FN on each key of hash table HASHTABLE and return a list of result." - (let ((keys '())) - (maphash (lambda (key value) - (add-to-list 'keys (funcall fn key))) - hashtable) - keys)) - -(defun test-find-all-case-names (&optional tag) - "Return all case names, or name of cases grouped by TAG if TAG is non-nil, as a list." - (if tag - (mapcar 'symbol-name (test-find-all-cases tag)) - (test-maphashkey 'symbol-name test-cases))) - -(defun test-find-all-tag-names () - "Return all tag names as a list." - (test-maphashkey 'symbol-name test-tags)) - -(defun test-completing-read-one (prompt choice) - "Read a string and return a symbol whose name is the string being read." - ;; Better to read a tag symbol directly. - (intern (funcall test-completing-read-function prompt choice nil t))) - -(defun test-completing-read-one-tag () - "Read a tag name and return corresponding tag symbol." - (test-completing-read-one "Tag: " (test-find-all-tag-names))) - -(defun test-completing-read-one-case (&optional tag) - "Read a case name and return corresponding case symbol. If TAG is non-nil, only cases grouped by it is allowed." - (test-completing-read-one "Case name: " (test-find-all-case-names tag))) - -(defun test-run-one-tag (tag-name) - "Run test cases grouped by tag TAG-NAME." - (interactive (list (test-completing-read-one-tag))) - (test-report (princ "# Tag: ") (princ tag-name) (princ "\n") - (test-run-and-summarize (test-find-all-cases tag-name)))) - -(defun test-run-tags (&rest tags) - "Run all test cases grouped by TAGS." - (test-report (princ "# Tags: ") - (princ (mapconcat 'symbol-name tags " ")) - (princ "\n") - (test-run-and-summarize (test-find-all-cases tags)))) - -(defun test-run-one-case (case-name) - "Run one test case whose name is CASE-NAME." - (interactive (list (test-completing-read-one-case))) - (test-report (test-run case-name))) - -(defun test-run-all-cases () - "Run all test cases saved in TEST-CASES." - (interactive) - (test-report (test-run-and-summarize (test-maphashkey 'identity test-cases)))) - -(defmacro test-motion-target (&rest body) - "Return position after motion." - `(progn - ,@body - (point))) - -;;; Special assertions -(defun test-assert-ok (form) - "Assert that FORM returns non-nil." - (assert form nil - (with-output-to-string - (princ "# not ok: ") - (prin1 form)))) - -(defun test-assert-key (mode-map kbd function) - "Assert that KBD is binding to FUNCTION in MODE-MAP." - (let ((got (lookup-key mode-map kbd))) - (assert (eq got function) - t - (with-output-to-string - (princ "# got: ") - (prin1 got) - (princ "\n") - (princ "# not bound to: ") - (prin1 function))))) - -;;; Assertion for binary comparison or prediction. -(defun test-assert-binary-relation (fn got expected) - "Fallback function to assert all binary relation between GOT and EXPECTED with FN." - (assert (funcall fn got expected) - t - (with-output-to-string - (princ "# got: ") - (prin1 got) - (princ "\n") - (princ "# not ") - (prin1 fn) - (princ ": ") - (prin1 expected)))) - -;;; `test-result-mode' - -(defvar test-result-font-lock-keywords - `(("^\\(# got: \\)\\(.*\\)$" - (1 font-lock-preprocessor-face) (2 font-lock-warning-face)) - ("^\\(# not ok: \\)\\(.*\\)$" - (1 font-lock-preprocessor-face) (2 font-lock-warning-face)) - ("^\\(# .*?: \\)\\(.*\\)$" - (1 font-lock-preprocessor-face) (2 font-lock-type-face)) - ;; be careful about the order - ("^# .*$" . font-lock-preprocessor-face) - ("^\\(.*\\): \\([0-9]+\\) pass, \\([0-9]+\\) fail.$" - (1 font-lock-function-name-face) (2 font-lock-type-face) (3 font-lock-warning-face))) - "Font lock for `test-result-mode'.") - -(defconst test-result-font-lock-defaults - '(test-result-font-lock-keywords t nil nil nil (font-lock-multiline . nil))) - -(define-derived-mode test-result-mode nil "Test-Result" - (set (make-local-variable 'font-lock-defaults) test-result-font-lock-defaults)) - -(provide 'test) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/test/.nosearch b/xemacs-packages/lisp/twittering-mode-3.0.0/test/.nosearch deleted file mode 100644 index e69de29b..00000000 diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/test/el-test-runner.el b/xemacs-packages/lisp/twittering-mode-3.0.0/test/el-test-runner.el deleted file mode 100644 index 9b4a9254..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/test/el-test-runner.el +++ /dev/null @@ -1,72 +0,0 @@ - -(defvar twittering-test-dir nil) - -(when load-file-name - (setq twittering-test-dir (file-name-directory load-file-name)) - (add-to-list 'load-path twittering-test-dir)) - -(require 'twittering-mode (expand-file-name "../twittering-mode.el" - twittering-test-dir)) -(require 'test (expand-file-name "../test.el" - twittering-test-dir)) - -(defun get-fixture (name) - (when (symbolp name) - (setq name (symbol-name name))) - (let ((fixture-path (expand-file-name - (concat name ".el") - (expand-file-name "fixture" twittering-test-dir)))) - (if (file-exists-p fixture-path) - (with-temp-buffer - (insert-file-contents fixture-path) - (beginning-of-buffer) - (read (current-buffer))) - nil))) - -(defmacro with-network (&rest body) - `(when (getenv "NETWORK") - ,@body)) - -(defun twittering-run-test () - (interactive) - - (dolist (file-name (directory-files twittering-test-dir)) - (when (string-match "^test-" file-name) - (let ((file-name (expand-file-name file-name twittering-test-dir))) - (load file-name)))) - - (test-run-all-cases) - - (let* ((fail-count (cdr (assoc 'fail test-last-summary))) - (exit-status (if (eq 0 fail-count) 0 1))) - (save-excursion - (set-buffer "*test-result*") - (end-of-buffer) - (search-backward-regexp "" nil t) - (beginning-of-buffer) - (while (search-forward-regexp "\\b\\([0-9]+\\) pass\\b" nil t) - (replace-match - (concat "\033[1m\033[32m" (match-string 0) "\033[0m"))) - - (beginning-of-buffer) - (while (search-forward-regexp "\\b\\([0-9]+\\) fail\\b" nil t) - (let ((pass (string-equal "0" (match-string 1)))) - (replace-match - (concat "\033[1m\033[31m" (match-string 0) "\033[0m")) - (beginning-of-line) - (when (search-forward-regexp "^\\([^:#]+\\):" nil t) - (replace-match - (concat (if pass - "\033[1m\033[32m" - "\033[1m\033[31m") - (match-string 1) - "\033[0m") - nil nil nil 1)) - )) - (princ (buffer-string))) - (terpri) - (when noninteractive - (kill-emacs exit-status)) - )) - -(twittering-run-test) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/test/fixture/timeline-data.el b/xemacs-packages/lisp/twittering-mode-3.0.0/test/fixture/timeline-data.el deleted file mode 100644 index 83c797a3..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/test/fixture/timeline-data.el +++ /dev/null @@ -1,309 +0,0 @@ -(((id . "6480639448") - (text . "Help protect and support Free Software and the GNU Project by joining the Free Software Foundation! http://www.fsf.org/join?referrer=7019") - (source . "web") - (created-at 19230 62217) - (truncated . nil) - (in-reply-to-status-id . "") - (in-reply-to-screen-name . "") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "GNU project") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "6068719152") - (text . "Worg's a collaboratively-edited site about org-mode that uses org-mode and git as the backend. Cool! http://bit.ly/5dfq90 - (via @learnemacs)") - (source . "Tweetie") - (created-at 19213 57955) - (truncated . nil) - (in-reply-to-status-id . "") - (in-reply-to-screen-name . "") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "5430846002") - (text . "Happy 3 years of Planet Emacsen! http://planet.emacsen.org/") - (source . "web") - (created-at 19185 61918) - (truncated . nil) - (in-reply-to-status-id . "") - (in-reply-to-screen-name . "") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "5395447473") - (text . "@ibread yes, by people letting me know they want to be added to it.") - (source . "web") - (created-at 19184 23723) - (truncated . nil) - (in-reply-to-status-id . "5387945498") - (in-reply-to-screen-name . "ibread") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "5388319142") - (text . "Want M-x customize to display real variable names? Set `custom-unlispify-tag-names' and `custom-unlispify-menu-entries' to nil.") - (source . "web") - (created-at 19184 731) - (truncated . nil) - (in-reply-to-status-id . "") - (in-reply-to-screen-name . "") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "5386633091") - (text . "@ibread done.") - (source . "web") - (created-at 19183 57365) - (truncated . nil) - (in-reply-to-status-id . "5382204189") - (in-reply-to-screen-name . "ibread") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "5376421165") - (text . "Use Emacs? 日本語で話せますか? Let's make http://twitter.com/emacs/japanese the authoritative list of Japanese-language Emacs users on twitter!") - (source . "web") - (created-at 19183 27786) - (truncated . nil) - (in-reply-to-status-id . "") - (in-reply-to-screen-name . "") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "5272344132") - (text . "Do you hang out in @freenode's #emacs channel? Let me know and I'll add you to http://twitter.com/emacs/irc") - (source . "web") - (created-at 19178 8958) - (truncated . nil) - (in-reply-to-status-id . "") - (in-reply-to-screen-name . "") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "5082433713") - (text . "Want to find all foos in your bar-mode buffers? Use ibuffer! M-x ibuffer RET * M bar-mode RET O foo RET - (via @kensanata asking in #emacs)") - (source . "web") - (created-at 19168 59548) - (truncated . nil) - (in-reply-to-status-id . "") - (in-reply-to-screen-name . "") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "4904187220") - (text . "@serverhorror no, but I'm all for it.") - (source . "Tweetie") - (created-at 19159 52264) - (truncated . nil) - (in-reply-to-status-id . "4848149430") - (in-reply-to-screen-name . "serverhorror") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "4297523005") - (text . "Collaborative editing in Emacs that works with Gobby: http://rudel.sourceforge.net/ - (via @technomancy) Looks great! Can't wait to try it.") - (source . "web") - (created-at 19129 13348) - (truncated . nil) - (in-reply-to-status-id . "") - (in-reply-to-screen-name . "") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "4049776133") - (text . "Using Emacs to develop web applications? Try using Luke Gorrie's http://tr.im/http_twiddle to interactively write/edit/test HTTP requests.") - (source . "web") - (created-at 19121 59554) - (truncated . nil) - (in-reply-to-status-id . "") - (in-reply-to-screen-name . "") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "3946747696") - (text . "@gabrielsaldana ‘gnus-secondary-select-methods’ is your friend.") - (source . "Tweetie") - (created-at 19116 22686) - (truncated . nil) - (in-reply-to-status-id . "3946440115") - (in-reply-to-screen-name . "gabrielsaldana") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "2923425504") - (text . "GNU Emacs 23.1 has been released! Share and Enjoy!") - (source . "Echofon") - (created-at 19057 5382) - (truncated . nil) - (in-reply-to-status-id . "") - (in-reply-to-screen-name . "") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "2896622068") - (text . "Steve Yegge's js2-mode - (which is fabulous BTW) now bundled with @emacs: http://bit.ly/4cLzac") - (source . "web") - (created-at 19055 24997) - (truncated . nil) - (in-reply-to-status-id . "") - (in-reply-to-screen-name . "") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "2745124537") - (text . "Correction: Emacs 23.1 will be released in nine days, on Wednesday the 29th.") - (source . "web") - (created-at 19044 54957) - (truncated . nil) - (in-reply-to-status-id . "") - (in-reply-to-screen-name . "") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "2743146093") - (text . "Barring unforeseen issues, Emacs 23.1 will be released in two days, on Wednesday the 22nd: http://article.gmane.org/gmane.emacs.devel/112846") - (source . "web") - (created-at 19044 47475) - (truncated . nil) - (in-reply-to-status-id . "") - (in-reply-to-screen-name . "") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "2617217996") - (text . "@gabrielsaldana: I build from trunk with --with-ns. The various pre-compiled distributions all seem to include weird changes to my defaults.") - (source . "web") - (created-at 19035 28055) - (truncated . nil) - (in-reply-to-status-id . "2616864784") - (in-reply-to-screen-name . "gabrielsaldana") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil)) - - ((id . "2473438293") - (text . "Edit XHTML5 documents in nxml-mode with on-the-fly validation: http://bit.ly/lYnEg - - (by @hober)") - (source . "web") - (created-at 19023 46920) - (truncated . nil) - (in-reply-to-status-id . "") - (in-reply-to-screen-name . "") - (user-id . "9492852") - (user-name . "emacs") - (user-screen-name . "emacs") - (user-location . "") - (user-description . "Emacs is the extensible self-documenting text editor.") - (user-profile-image-url . "http://a1.twimg.com/profile_images/33497412/emacs_normal.gif") - (user-url . "http://www.gnu.org/software/emacs/") - (user-protected . nil))) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/test/run-test.sh b/xemacs-packages/lisp/twittering-mode-3.0.0/test/run-test.sh deleted file mode 100755 index d48af931..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/test/run-test.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -emacsen="emacs emacs23 emacs22 emacs21" - -continue_on_error= -if [ $# -gt 0 ]; then - continue_on_error="yes" -fi -exit_status=0 - -for emacs in $(echo ${emacsen}); do - if ! which $emacs 1> /dev/null 2> /dev/null; then - echo "No such executable found: ${emacs}: skipped." - continue - fi - $emacs -q --no-site-file --batch --load $(dirname $0)/el-test-runner.el - exit_status=$? - if [ $exit_status != 0 ]; then - echo "Test failed on $(${emacs} --version | head -n 1)" - if [ -z "${continue_on_error}" ]; then - exit 1 - else - echo "sleep 5 secs..." - sleep 5 - fi - fi -done - -exit $exit_status diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/test/server.rb b/xemacs-packages/lisp/twittering-mode-3.0.0/test/server.rb deleted file mode 100755 index 85e0218d..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/test/server.rb +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env ruby - -require 'optparse' -require 'webrick' -require 'webrick/httpproxy' -require 'singleton' - -class TwitterAPI - include Singleton - - attr_accessor :res - attr_accessor :req - - def self.call(req, res) - uri = req.request_uri - format = File.extname(uri.path) - format = "xml" if format == "" - format = format.gsub(/^\./, '') - endpoint = uri.path.gsub(/\.[a-z]+$/, '').gsub(/^\//, '') - params = Hash.new - (uri.query || "").split("&").each do |param| - if param =~ /([^=]+)=(.+)/ - params[$~[1]] = $~[2] - params[$~[1].to_sym] = $~[2] - else - raise ArgumentError.new("Invalid query string: #{param}") - end - end - - tw = self.instance - tw.res = res - tw.req = req - tw.send(endpoint.gsub(/\//, '_'), format, params) - end - - def statuses_public_timeline(format, params) - @res.body = "URI: #{@req.request_uri.to_s}, format: #{format}, params: #{params.inspect}" - end -end - -def parse_options(argv) - parser = OptionParser.new - opt = Hash.new - - print_help = Proc.new do |msg| - $stderr.puts msg - puts - puts parser.help - exit 1 - end - - opt[:port] = 80 - parser.on('-p', '--port=PORT', - "\n\t\tPort number to be used.") do |port| - opt[:port] = port.to_i - if opt[:port] == 0 - print_help.call("Invalid port number: #{port}") - end - end - - opt[:proxy] = false - parser.on('-P', '--proxy', - "\n\t\tRun as a proxy server if this option is specified.") do - opt[:proxy] = true - end - - parser.parse!(argv) - - opt -end - -def main(argv) - opt = parse_options(argv) - - server = WEBrick::HTTPServer.new({:Port => opt[:port], - :BindAddress => "127.0.0.1"}) - server.mount_proc("/") do |req, res| - TwitterAPI.call(req, res) - end - - Signal.trap('INT') do - server.shutdown - end - - server.start -end - -if __FILE__ == $0 - main(ARGV.dup) -end diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/test/test-twittering-mode.el b/xemacs-packages/lisp/twittering-mode-3.0.0/test/test-twittering-mode.el deleted file mode 100644 index 15a443fb..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/test/test-twittering-mode.el +++ /dev/null @@ -1,893 +0,0 @@ -;;; -*- coding: utf-8 -*- - -(when (and (> 22 emacs-major-version) - (require 'url-methods nil t)) - ;; `twittering-make-http-request-from-uri', which is called for the format - ;; specifier "%i", requires `url-generic-parse-url'. But the function for - ;; Emacs 21, which is distributed with twittering-mode, does not work - ;; correctly until calling `url-scheme-get-property'. - (url-scheme-get-property "http" 'name) - (url-scheme-get-property "https" 'name)) - -(defcase test-version nil nil - (test-assert-string-match "^twittering-mode-v\\([0-9]+\\(\\.[0-9]+\\)*\\|HEAD\\)" - (twittering-mode-version))) - -(defcase test-assocref nil nil - (test-assert-eq 'bar (assocref 'foo '((baz . qux) (foo . bar)))) - (test-assert-eq nil (assocref 'quxx '((baz . qux) (foo . bar))))) - -(defmacro test-setup-proxy(bindings) - `(let ,(append '((process-environment nil) - (twittering-proxy-use t) - (twittering-proxy-server nil) - (twittering-proxy-port nil) - (twittering-http-proxy-server nil) - (twittering-http-proxy-port nil) - (twittering-https-proxy-server nil) - (twittering-https-proxy-port nil)) - bindings) - (twittering-setup-proxy))) - -(defcase test-proxy nil nil - (test-assert-ok - (test-setup-proxy - ((twittering-proxy-server "proxy.example.com") - (twittering-proxy-port 8080)))) - (test-assert-ok - (test-setup-proxy - ((twittering-proxy-server "proxy.example.com") - (twittering-proxy-port "8080")))) - - (test-assert-ok - (test-setup-proxy - ((twittering-http-proxy-server "proxy.example.com") - (twittering-http-proxy-port 8080)))) - (test-assert-ok - (test-setup-proxy - ((twittering-http-proxy-server "proxy.example.com") - (twittering-http-proxy-port "8080")))) - - (test-assert-ok - (test-setup-proxy - ((twittering-https-proxy-server "proxy.example.com") - (twittering-https-proxy-port 8080)))) - (test-assert-ok - (test-setup-proxy - ((twittering-https-proxy-server "proxy.example.com") - (twittering-https-proxy-port "8080")))) - - (test-assert-equal - (let ((twittering-proxy-use nil) - (process-environment nil) - (twittering-https-proxy-server "proxy.example.com") - (twittering-https-proxy-port 8080)) - (twittering-toggle-proxy) - (list twittering-proxy-use - (progn - (twittering-toggle-proxy) - twittering-proxy-use))) - '(t nil)) - - ;; The test of configuration via an environment variable should be - ;; performed last because it changes global variables of the url library - ;; in an irreversible manner. - (test-assert-ok - (test-setup-proxy - ((process-environment - '("http_proxy=http://proxy1.example.com:8080/")))))) - -(defcase test-user-agent nil nil - (test-assert-string-equal (format "Emacs/%d.%d Twittering-mode/%s" - emacs-major-version - emacs-minor-version - twittering-mode-version) - (twittering-user-agent)) - (setq twittering-user-agent-function - (lambda () "foo user agent")) - (test-assert-string-equal "foo user agent" - (twittering-user-agent)) - ) - -(defcase test-icon-mode nil nil - (setq twittering-icon-mode nil) - (twittering-icon-mode) - (test-assert-ok twittering-icon-mode) - (twittering-icon-mode) - (test-assert-ok (not twittering-icon-mode)) - (twittering-icon-mode nil) - (test-assert-ok twittering-icon-mode) - (twittering-icon-mode t) - (test-assert-ok twittering-icon-mode) - (twittering-icon-mode -1) - (test-assert-ok (not twittering-icon-mode)) - (twittering-icon-mode 1) - (test-assert-ok twittering-icon-mode) - ) - -(defcase test-percent-encode nil nil - (test-assert-string-equal "Rinko" - (twittering-percent-encode "Rinko")) - (test-assert-string-equal "%25" - (twittering-percent-encode "%")) - (test-assert-string-equal "love%20plus" - (twittering-percent-encode "love plus")) - (test-assert-string-equal "%0A" - (twittering-percent-encode "\n"))) - -(with-network - (when (require 'url nil t) - (defcase tinyurl nil nil - (test-assert-string-equal "http://tinyurl.com/3xsrg5" - (twittering-tinyurl-get "http://example.com/example")) - ))) - -(defcase case-string nil nil - (test-assert-string-equal "Kobayakawa" - (case-string "Rinko" - (("Rinko") "Kobayakawa") - (t "unknown"))) - - (test-assert-string-equal "unknown" - (case-string "Manaka" - (("Rinko") "Kobayakawa") - (t "unknown"))) - - (test-assert-string-equal "Kobayakawa" - (case-string "Rinko" - (("Manaka") "Takane") - (("Rinko") "Kobayakawa") - (("Nene") "Anegasaki") - (t nil))) - - (test-assert-string-equal "Amphibian" - (case-string "Frog" - (("Rabbit") "Mammal") - (("Salamandar" "Frog") "Amphibian") - (t nil))) - ) - -(defcase format-string nil nil - (test-assert-string-equal "" - (twittering-format-string "" "" nil)) - - (test-assert-string-equal "Hello world" - (twittering-format-string "Hello world" "" nil)) - - (test-assert-string-equal "RT: twittering-mode now (via @twmode)" - (twittering-format-string "RT: %t (via @%s)" "%" - '(("t" . "twittering-mode now") - ("s" . "twmode")))) - - (test-assert-string-equal "RT: %t (via @twmode)" - (twittering-format-string "RT: %t (via @%s)" "%" - '(("t" . "%t") - ("s" . "twmode")))) - - (test-assert-string-equal "new\nline" - (twittering-format-string "new~%line" "~" - '(("%" . "\n")))) - ) - -(defun test-restore-timeline-spec(spec-str spec normalized-spec) - (let ((spec-from-str - (twittering-string-to-timeline-spec spec-str))) - (list - (equal (twittering-string-to-timeline-spec - (twittering-timeline-spec-to-string spec)) - normalized-spec) - (equal normalized-spec spec-from-str)))) - -(defun test-exclude-if-function (status) - (string-match "test" (cdr (assq 'text status)))) - -(defcase timeline-spec nil nil - (test-assert-equal - (test-restore-timeline-spec - "(user+(user/mylist+(@))+:exclude-re/WORD/(USER2+:mentions))" - '(merge (user "user") - (merge (list "user" "mylist") - (merge (replies))) - (exclude-re "WORD" (merge (user "USER2") - (mentions)))) - '(merge (user "user") - (list "user" "mylist") - (replies) - (exclude-re "WORD" (merge (user "USER2") - (mentions))))) - '(t t)) - (test-assert-equal - (test-restore-timeline-spec - "(user-A+~+((user-B))+(:exclude-re/R+/user-C+(:exclude-re/R3\\//USER-D+:public)))" - '(merge (user "user-A") - (home) - (merge (user "user-B") - (exclude-re "R+" (user "user-C"))) - (exclude-re "R3/" (user "USER-D")) - (public)) - '(merge (user "user-A") - (home) - (user "user-B") - (exclude-re "R+" (user "user-C")) - (exclude-re "R3/" (user "USER-D")) - (public))) - '(t t)) - - ;; Duplicates in a merge timeline are removed. - (test-assert-equal - (test-restore-timeline-spec - "(ABC+user/mylist+user/mylist+ABC)" - '(merge (user "ABC") (list "user" "mylist")) - '(merge (user "ABC") (list "user" "mylist"))) - '(t t)) - - (test-assert-equal - (test-restore-timeline-spec - ":search/ABC/" - '(search "ABC") - '(search "ABC")) - '(t t)) - (test-assert-equal - (test-restore-timeline-spec - ":search/AB\\\\C\\/aaa\\\\/" - '(search "AB\\C/aaa\\") - '(search "AB\\C/aaa\\")) - '(t t)) - - (test-assert-equal - (test-restore-timeline-spec - ":exclude-if/test-exclude-if-function/:home" - '(exclude-if test-exclude-if-function (home)) - '(exclude-if test-exclude-if-function (home))) - '(t t)) - - (test-assert-equal - (test-restore-timeline-spec - ":exclude-if/(lambda (x) t)/:home" - '(exclude-if (lambda (x) t) (home)) - '(exclude-if (lambda (x) t) (home))) - '(t t)) - - (test-assert-equal - (test-restore-timeline-spec - ":exclude-if/(lambda (tweet) (string-match \"test\\\\.\" (cdr (assq 'text tweet))))/@" - '(exclude-if (lambda (tweet) - (string-match "test\\." (cdr (assq 'text tweet)))) - (replies)) - '(exclude-if (lambda (tweet) - (string-match "test\\." (cdr (assq 'text tweet)))) - (replies))) - '(t t)) - - (test-assert-equal - (test-restore-timeline-spec - ":exclude-if/(lambda (tweet) (string-match \"\\\\\\\\\" (cdr (assq 'text tweet))))/:exclude-if/(lambda (tw) (assq 'retweeting-id tw))/user/mylist" - '(exclude-if (lambda (tweet) - (string-match "\\\\" (cdr (assq 'text tweet)))) - (exclude-if (lambda (tw) (assq 'retweeting-id tw)) - (list "user" "mylist"))) - '(exclude-if (lambda (tweet) - (string-match "\\\\" (cdr (assq 'text tweet)))) - (exclude-if (lambda (tw) (assq 'retweeting-id tw)) - (list "user" "mylist")))) - '(t t)) - - (test-assert-equal - (test-restore-timeline-spec - ":exclude-re/ABC/user" - '(exclude-re "ABC" (user "user")) - '(exclude-re "ABC" (user "user"))) - '(t t)) - (test-assert-equal - (test-restore-timeline-spec - ":exclude-re/ABC/user/mylist" - '(exclude-re "ABC" (list "user" "mylist")) - '(exclude-re "ABC" (list "user" "mylist"))) - '(t t)) - (test-assert-equal - (test-restore-timeline-spec - ":exclude-re/ABC\\\\/user/mylist" - '(exclude-re "ABC\\\\" (list "user" "mylist")) - '(exclude-re "ABC\\\\" (list "user" "mylist"))) - '(t t)) - (test-assert-equal - (test-restore-timeline-spec - ":exclude-re/ABC\\/\\(word\\|123\\)/user" - '(exclude-re "ABC/\\(word\\|123\\)" (user "user")) - '(exclude-re "ABC/\\(word\\|123\\)" (user "user"))) - '(t t)) - - (test-assert-equal - (test-restore-timeline-spec - ":retweeted_by_me" '(retweeted_by_me) '(retweeted_by_me)) - '(t t)) - (test-assert-equal - (test-restore-timeline-spec - ":retweeted_to_me" '(retweeted_to_me) '(retweeted_to_me)) - '(t t)) - (test-assert-equal - (test-restore-timeline-spec - ":retweets_of_me" '(retweets_of_me) '(retweets_of_me)) - '(t t)) - - (test-assert-equal - (test-restore-timeline-spec - ":favorites" '(favorites) '(favorites)) - '(t t)) - - (test-assert-equal - (test-restore-timeline-spec - ":favorites/USER" '(favorites "USER") '(favorites "USER")) - '(t t)) - - (test-assert-equal - (test-restore-timeline-spec - "#tag" '(search "#tag") '(search "#tag")) - '(t t)) - - (test-assert-equal - (test-restore-timeline-spec - ;; "リスト" consists of U+256A, U+2539 and U+2548. - ;; They should be supported by raw Emacs21. - "USER/non-ASCIIリスト" - '(list "USER" "non-ASCIIリスト") - '(list "USER" "non-ASCIIリスト")) - '(t t)) - - (test-assert-equal - (test-restore-timeline-spec - ;; An example from - ;; https://dev.twitter.com/docs/api/1/get/statuses/home_timeline , - ;; which is posted by cindy li. - ":single/18700887835" - '(single "18700887835") - '(single "18700887835")) - '(t t)) - ) - -(defcase timeline-spec-dependence nil nil - ;; Duplicates in a merge timeline are removed. - (test-assert-equal - (let ((spec (twittering-string-to-timeline-spec "(:home+@+(@+:home))"))) - (twittering-get-primary-base-timeline-specs spec)) - '((home) (replies))) - - (test-assert-equal - (let ((spec (twittering-string-to-timeline-spec - "(:home+@+:exclude-if/(lambda (x) t)/(@+:home+USER))"))) - (twittering-get-primary-base-timeline-specs spec)) - '((home) (replies) (user "USER"))) - ) - -(defun format-status (status format-str) - (twittering-update-status-format format-str) - (twittering-format-status status)) - -(lexical-let ((status (car (get-fixture 'timeline-data)))) - (defcase test-format-status nil nil - (test-assert-string-equal "hello world" - (format-status status "hello world")) - (test-assert-string-equal "%" - (format-status status "%%")) - - - - (test-assert-string-equal "something like emacs" - (format-status status "something like %s")) - - (test-assert-string-equal "We love emacs!" - (format-status status "We love %S!")) - - (test-assert-string-equal - "" - (let ((twittering-icon-mode nil)) - (format-status status "%i"))) - (test-assert-string-equal - " " - (let ((twittering-icon-mode t) - (window-system t)) - (format-status status "%i"))) - - (test-assert-string-equal - "Emacs is the extensible self-documenting text editor." - (format-status status "%d")) - - (test-assert-string-equal "GNU project" - (format-status status "%l")) - (test-assert-string-equal " [GNU project]" - (format-status status "%L")) - (setcdr (assoc 'user-location status) "") - (test-assert-string-equal "" - (format-status status "%l")) - (test-assert-string-equal "" - (format-status status "%L")) - - (setcdr (assoc 'in-reply-to-screen-name status) "hoge") - (setcdr (assoc 'in-reply-to-status-id status) "123456") - (test-assert-string-equal " in reply to hoge" - (format-status status "%r")) - (setcdr (assoc 'in-reply-to-screen-name status) "foo") - (setcdr (assoc 'in-reply-to-status-id status) "") - (test-assert-string-equal "" - (format-status status "%r")) - (setcdr (assoc 'in-reply-to-screen-name status) "") - (setcdr (assoc 'in-reply-to-status-id status) "654321") - (test-assert-string-equal "" - (format-status status "%r")) - (setcdr (assoc 'in-reply-to-screen-name status) "") - (setcdr (assoc 'in-reply-to-status-id status) "") - (test-assert-string-equal "" - (format-status status "%r")) - - (test-assert-string-equal "http://www.gnu.org/software/emacs/" - (format-status status "%u")) - - (test-assert-string-equal "9492852" - (format-status status "%j")) - - (test-assert-string-equal "" - (format-status status "%p")) - (setcdr (assoc 'user-protected status) t) - (test-assert-string-equal "[x]" - (format-status status "%p")) - (setcdr (assoc 'user-protected status) nil) - (test-assert-string-equal "" - (format-status status "%p")) - - (test-assert-string-equal - "created at Wed Dec 09 00:44:57 +0000 2009" - (let ((tz (current-time-zone))) - (set-time-zone-rule t) - (prog1 - (format-status status "created at %c") - (set-time-zone-rule (cddr tz))))) - - (test-assert-string-equal - "created at 2009/12/09 09:44:57" - (let ((tz (current-time-zone))) - (set-time-zone-rule "JST-9") - (prog1 - (format-status status "created at %C{%Y/%m/%d %H:%M:%S}") - (set-time-zone-rule (cddr tz))))) - - ;; (test-assert-string-equal "09:44 午前 12月 09, 2009" - ;; (format-status status "%@")) - - (test-assert-string-equal "Help protect and support Free Software and the GNU Project by joining the Free Software Foundation! http://www.fsf.org/join?referrer=7019" - (format-status status "%T")) - - (setcdr (assoc 'truncated status) nil) - (test-assert-string-equal "" - (format-status status "%'")) - (setcdr (assoc 'truncated status) t) - (test-assert-string-equal "..." - (format-status status "%'")) - (setcdr (assoc 'truncated status) nil) - - (test-assert-string-equal "web" - (format-status status "%f")) - - (test-assert-string-equal "6480639448" - (format-status status "%#")) - - (test-assert-string-equal - " emacs, : - Help protect and support Free Software and the GNU Project by joining the Free Software Foundation! http://www.fsf.org/join?referrer=7019 // from web" - (let ((twittering-icon-mode nil)) - (format-status status "%i %s, :\n %T // from %f%L%r"))) - (test-assert-string-equal - " emacs, : - Help protect and support Free Software and the GNU Project by joining the Free Software Foundation! http://www.fsf.org/join?referrer=7019 // from web" - (let ((twittering-icon-mode t) - (window-system t)) - (format-status status "%i %s, :\n %T // from %f%L%r"))) - - (test-assert-string-equal - " - Help protect and support Free Software and the GNU Project by joining the - Free Software Foundation! http://www.fsf.org/join?referrer=7019 // from web" - (let ((twittering-fill-column 80)) - (format-status status "\n%FILL[ ]{%T // from %f%L%r}"))) - - (test-assert-string-equal - " - Help protect and support Free Software and the GNU Project by joining the - Free Software Foundation! http://www.fsf.org/join?referrer=7019 // from web" - (let ((twittering-fill-column 80)) - (format-status status "\n%FOLD[ ]{%T // from %f%L%r}"))) - - (test-assert-string-equal - " - Edit XHTML5 documents in nxml-mode with on-the-fly validation: - http://bit.ly/lYnEg (by @hober) // from web" - (let ((twittering-fill-column 80) - (oldest-status (car (last (get-fixture 'timeline-data))))) - (format-status oldest-status "\n%FILL[ ]{%T // from %f%L%r}"))) - - (test-assert-string-equal - (if (> 22 emacs-major-version) - ;; `fill-region' on Emacs21 does not keep white spaces and - ;; tabs adjacent to hard newlines. - " ---Edit XHTML5 documents in nxml-mode with on-the-fly validation: ---http://bit.ly/lYnEg --- --- (by @hober) // from web" - " ---Edit XHTML5 documents in nxml-mode with on-the-fly validation: ---http://bit.ly/lYnEg --- --- (by @hober) // from web") - (let ((twittering-fill-column 80) - (oldest-status (car (last (get-fixture 'timeline-data))))) - (format-status oldest-status "\n%FOLD[--]{%T // from %f%L%r}"))) - )) - -(defcase test-find-curl-program nil nil - (test-assert-string-match "curl" (twittering-find-curl-program)) - (with-temp-buffer - (when (twittering-find-curl-program) - (test-assert-eq 0 - (call-process (twittering-find-curl-program) - nil (current-buffer) nil - "--help"))))) - -(with-network - (defcase test-ensure-ca-cert nil nil - (when (twittering-find-curl-program) - (test-assert-eq 0 - (with-temp-buffer - (call-process (twittering-find-curl-program) - nil (current-buffer) nil - "--cacert" - (twittering-ensure-ca-cert) - "https://twitter.com/")))))) - -(defcase test-status-not-blank-p nil nil - (test-assert-ok (not (twittering-status-not-blank-p ""))) - (test-assert-ok (not (twittering-status-not-blank-p "\n"))) - (test-assert-ok (not (twittering-status-not-blank-p "@foo"))) - (test-assert-ok (not (twittering-status-not-blank-p "@bar "))) - (test-assert-ok (twittering-status-not-blank-p "hello")) - (test-assert-ok (twittering-status-not-blank-p "@baz hello")) - (test-assert-ok (twittering-status-not-blank-p "@baz\n\nhello")) - (test-assert-ok (twittering-status-not-blank-p "\nhello")) - (test-assert-ok (twittering-status-not-blank-p "hello\n")) - (test-assert-ok (twittering-status-not-blank-p "@foo hello @bar")) - (test-assert-ok (twittering-status-not-blank-p "hello @foo")) - ) - -(defcase test-hmac-sha1 nil nil - ;; The following tests are copied from RFC 2202. - (test-assert-string-equal - (let* ((v (make-list 20 ?\x0b)) - (key (cond - ((fboundp 'unibyte-string) (apply 'unibyte-string v)) - (t (concat v)))) - (data "Hi There")) - (mapconcat (lambda (c) (format "%02x" c)) - (twittering-hmac-sha1 key data) - "")) - "b617318655057264e28bc0b6fb378c8ef146be00") - - (test-assert-string-equal - (let* ((key "Jefe") - (data "what do ya want for nothing?")) - (mapconcat (lambda (c) (format "%02x" c)) - (twittering-hmac-sha1 key data) - "")) - "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79") - - (test-assert-string-equal - (let* ((key-v (make-list 20 ?\xaa)) - (key (cond - ((fboundp 'unibyte-string) (apply 'unibyte-string key-v)) - (t (concat key-v)))) - (data-v (make-list 50 ?\xdd)) - (data (cond - ((fboundp 'unibyte-string) (apply 'unibyte-string data-v)) - (t (concat data-v))))) - (mapconcat (lambda (c) (format "%02x" c)) - (twittering-hmac-sha1 key data) - "")) - "125d7342b9ac11cd91a39af48aa17b4f63f175d3") - ) - -(defun verify-hmac-of-long-data(coding-system) - (or (not (coding-system-p coding-system)) - (let ((coding-system-for-read coding-system) - (coding-system-for-write coding-system)) - (let* ((key "key") - (data (make-string 64 ?a)) - (result - (mapcar - (lambda (pair) - (let ((n (car pair)) - (expected (cdr pair))) - (string= - (mapconcat (lambda (c) (format "%02x" c)) - (twittering-hmac-sha1 key (make-string n ?a)) - "") - expected))) - '((64 . "804f18b0143cc2677eeda7b5f60f6984fc32d094") - (128 . "2ff5eea1596f3a41fbb5e1ff02b17a50a229c177") - (256 . "ce7f0d472740f975b137052e05955b4ca7ec9a58") - (512 . "9dce54d150cbf817a8d979bd6a371eaf4643ac40") - (1024 . "53e18d494844a645cd8ac0757873460696b0c9df") - (2048 . "0fabada271421b303434131195e67c006d3fc3d7") - (4095 . "ef35e91ef97d811cfecfe83071045c31de4e4e61") - (8193 . "cefba76fb9ad5a665887a875ed7bc42ec9f00919") - (16383 . "c6ba93118262ab9426760909fa4981558bdc10e5") - (32767 . "442813d73d237fb45fca6c05360c43db877744f6"))))) - (if (equal result '(t t t t t t t t t t)) - t - result))))) - -(defcase test-hmac-sha1-long nil nil - (test-assert-eq (verify-hmac-of-long-data 'iso-safe) t) - (test-assert-eq (verify-hmac-of-long-data 'iso-safe-unix) t) - (test-assert-eq (verify-hmac-of-long-data 'iso-safe-dos) t) - (test-assert-eq (verify-hmac-of-long-data 'iso-safe-mac) t) - (test-assert-eq (verify-hmac-of-long-data 'utf-8) t) - (test-assert-eq (verify-hmac-of-long-data 'utf-8-unix) t) - (test-assert-eq (verify-hmac-of-long-data 'utf-8-dos) t) - (test-assert-eq (verify-hmac-of-long-data 'utf-8-mac) t) - (test-assert-eq (verify-hmac-of-long-data 'utf-16) t) - (test-assert-eq (verify-hmac-of-long-data 'utf-16-unix) t) - (test-assert-eq (verify-hmac-of-long-data 'utf-16-dos) t) - (test-assert-eq (verify-hmac-of-long-data 'utf-16-mac) t) - (test-assert-eq (verify-hmac-of-long-data 'iso-latin-1) t) - (test-assert-eq (verify-hmac-of-long-data 'iso-latin-1-unix) t) - (test-assert-eq (verify-hmac-of-long-data 'iso-latin-1-dos) t) - (test-assert-eq (verify-hmac-of-long-data 'iso-latin-1-mac) t) - ) - -(defun verify-hmac-with-short-internal-length (coding-system) - (or (not (coding-system-p coding-system)) - (not (boundp 'sha1-maximum-internal-length)) - (let* ((coding-system-for-read coding-system) - (coding-system-for-write coding-system) - (max-internal-length-list '(1 10 50 100 500 1000)) - (result - (mapcar - (lambda (n) - (let ((sha1-maximum-internal-length n) - (key "Jefe") - (data "what do ya want for nothing?") - (expected "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79")) - (string= (mapconcat (lambda (c) (format "%02x" c)) - (twittering-hmac-sha1 key data) - "") - expected))) - max-internal-length-list))) - (if (equal result (make-list (length max-internal-length-list) t)) - t - result)))) - -(defcase test-hmac-sha1-with-short-internal-length nil nil - (test-assert-eq (verify-hmac-with-short-internal-length 'iso-safe) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'iso-safe) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'iso-safe-unix) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'iso-safe-dos) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'iso-safe-mac) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'utf-8) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'utf-8-unix) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'utf-8-dos) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'utf-8-mac) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'utf-16) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'utf-16-unix) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'utf-16-dos) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'utf-16-mac) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'iso-latin-1) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'iso-latin-1-unix) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'iso-latin-1-dos) t) - (test-assert-eq (verify-hmac-with-short-internal-length 'iso-latin-1-mac) t) - ) - -(defcase test-oauth nil nil - ;; "Authenticating Requests | dev.twitter.com" - ;; http://dev.twitter.com/pages/auth - (setq sample-consumer-key "GDdmIQH6jhtmLUypg82g") - (setq sample-consumer-secret "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98") - - ;; Acquiring a request token - ;; http://dev.twitter.com/pages/auth#request-token - (test-assert-string-equal - (let* ((oauth-params - `(("oauth_nonce" . "QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk") - ("oauth_callback" . ,(twittering-oauth-url-encode "http://localhost:3005/the_dance/process_callback?service_provider_id=11")) - ("oauth_signature_method" . "HMAC-SHA1") - ("oauth_timestamp" . "1272323042") - ("oauth_consumer_key" . ,sample-consumer-key) - ("oauth_version" . "1.0"))) - (url "https://api.twitter.com/oauth/request_token")) - (twittering-oauth-auth-str-request-token - url nil sample-consumer-key sample-consumer-secret oauth-params)) - "OAuth oauth_nonce=\"QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk\",oauth_callback=\"http%3A%2F%2Flocalhost%3A3005%2Fthe_dance%2Fprocess_callback%3Fservice_provider_id%3D11\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1272323042\",oauth_consumer_key=\"GDdmIQH6jhtmLUypg82g\",oauth_version=\"1.0\",oauth_signature=\"8wUi7m5HFQy76nowoCThusfgB%2BQ%3D\"") - - ;; response - (test-assert-equal - (let ((response-str "oauth_token=8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc&oauth_token_secret=x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA&oauth_callback_confirmed=true")) - (twittering-oauth-make-response-alist response-str)) - '(("oauth_token" . "8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc") - ("oauth_token_secret" - . "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA") - ("oauth_callback_confirmed" . "true"))) - - ;; Sending the user to authorization - ;; http://dev.twitter.com/pages/auth#authorization - ;; response (when using callback) - (test-assert-equal - (let ((response-str "oauth_token=8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc&oauth_verifier=pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY")) - (twittering-oauth-make-response-alist response-str)) - '(("oauth_token" . "8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc") - ("oauth_verifier" - . "pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY"))) - - ;; Exchanging a request token for an access token - ;; http://dev.twitter.com/pages/auth#access-token - (test-assert-string-equal - (let* ((request-token "8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc") - (request-token-secret "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA") - (verifier "pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY") - (oauth-params - `(("oauth_nonce" . "9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8") - ("oauth_signature_method" . "HMAC-SHA1") - ("oauth_timestamp" . "1272323047") - ("oauth_consumer_key" . ,sample-consumer-key) - ("oauth_token" . ,request-token) - ("oauth_verifier" . ,verifier) - ("oauth_version" . "1.0"))) - (url "https://api.twitter.com/oauth/access_token")) - (twittering-oauth-auth-str-exchange-token - url nil - sample-consumer-key sample-consumer-secret - request-token request-token-secret verifier oauth-params)) - "OAuth oauth_nonce=\"9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1272323047\",oauth_consumer_key=\"GDdmIQH6jhtmLUypg82g\",oauth_token=\"8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc\",oauth_verifier=\"pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY\",oauth_version=\"1.0\",oauth_signature=\"PUw%2FdHA4fnlJYM6RhXk5IU%2F0fCc%3D\"") - - ;; response - (test-assert-equal - (let ((response-str "oauth_token=819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw&oauth_token_secret=J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA&user_id=819797&screen_name=episod")) - (twittering-oauth-make-response-alist response-str)) - '(("oauth_token" - . "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw") - ("oauth_token_secret" - . "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA") - ("user_id" . "819797") - ("screen_name" . "episod"))) - - ;; Making a resource request on a user's behalf - ;; http://dev.twitter.com/pages/auth#auth-request - (test-assert-string-equal - (let* ((access-token "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw") - (access-token-secret "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA") - (oauth-params - `(("oauth_nonce" . "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y") - ("oauth_signature_method" . "HMAC-SHA1") - ("oauth_timestamp" . "1272325550") - ("oauth_consumer_key" . ,sample-consumer-key) - ("oauth_token" . ,access-token) - ("oauth_version" . "1.0"))) - (url "http://api.twitter.com/1/statuses/update.json") - (encoded-query-parameters - `((,(twittering-percent-encode "status") - . ,(twittering-percent-encode - "setting up my twitter 私のさえずりを設定する"))))) - (twittering-oauth-auth-str-access - "POST" url encoded-query-parameters - sample-consumer-key sample-consumer-secret - access-token access-token-secret - oauth-params)) - "OAuth oauth_nonce=\"oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1272325550\",oauth_consumer_key=\"GDdmIQH6jhtmLUypg82g\",oauth_token=\"819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw\",oauth_version=\"1.0\",oauth_signature=\"yOahq5m0YjDDjfjxHaXEsW9D%2BX0%3D\"") - ) - -(defun find-least-unsupported-code-point (from to) - (let ((n from) - (c nil)) - (while (and (<= n to) - (decode-char 'ucs n)) - (setq n (1+ n))) - (when (<= n to) - n))) - -(defun encode-char-for-json (code-point) - ;; According to RFC4627 http://www.ietf.org/rfc/rfc4627 , - ;; characters in the Basic Multilingual Plane (U+0000 - ;; through U+FFFF) are escaped as - ;; "a six-character sequence: a reverse solidus, followed - ;; by the lowercase letter u, followed by four hexadecimal - ;; digits that encode the character's code point." - ;; "To escape an extended character that is not in the Basic - ;; Multilingual Plane, the character is represented as a - ;; twelve-character sequence, encoding the UTF-16 surrogate - ;; pair." - (cond - ((< code-point #xFFFF) - (format "\\u%04X" code-point)) - (t - ;; a character not in the Basic Multilingual Plane - (let* ((c (decode-char 'ucs unsupported-code-point)) - (str (encode-coding-char c 'utf-16be))) - (apply 'format "\\u%02X%02X\\u%02X%02X" - (string-to-list str)))))) - -(defun test-read-json-with-unsupported-code-point () - (let ((unsupported-code-point - (or (find-least-unsupported-code-point #x0000 #xD7FF) - (find-least-unsupported-code-point #xE000 #x10FFFF)))) - (cond - ((null unsupported-code-point) - t) - (t - (let* ((str (encode-char-for-json unsupported-code-point)) - (quoted-str (concat "\"" str "\"")) - (result (with-temp-buffer - (insert quoted-str) - (goto-char (point-min)) - (condition-case err - (twittering-json-read) - (error - nil))))) - (if (and result - (stringp result) - (string= result - (string twittering-unicode-replacement-char))) - t - (format "failed to decode %s!" quoted-str))))))) - -(when (require 'json nil t) - (defcase test-json-read nil nil - (test-assert-eq t (test-read-json-with-unsupported-code-point)))) - -(defun test-read-xml-with-unsupported-code-point () - (let ((unsupported-code-point - (or (find-least-unsupported-code-point #x0000 #xD7FF) - (find-least-unsupported-code-point #xE000 #x10FFFF)))) - (cond - ((null unsupported-code-point) - t) - (t - (let* ((xml-template - ;; example from http://www.w3.org/TR/xhtml1/#strict - " - - - - test - - -

%s

- -") - (encoded-str (format "&#%d;" unsupported-code-point)) - (xml-str (format xml-template encoded-str)) - (replacement-str - (string twittering-unicode-replacement-char)) - (result - (with-temp-buffer - (insert xml-str) - (condition-case err - (let* ((xml - (twittering-xml-parse-region (point-min) - (point-max))) - (str - (elt (assq 'p (assq 'body (assq 'html xml))) 2))) - (if (< emacs-major-version 22) - ;; On Emacs 21, `xml-parse-region' does not resolve - ;; numeric character references. - (twittering-decode-entities-after-parsing-xml str) - str)) - (error - nil)))) - (expected-result replacement-str)) - (cond - ((null result) - (format "failed to decode %s with an error" encoded-str)) - ((equal result expected-result) - t) - (t - (format "failed to decode %s without errors" encoded-str)))))))) - -(when (require 'xml nil t) - (defcase test-xml-parse nil nil - (test-assert-eq t (test-read-xml-with-unsupported-code-point)))) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/.nosearch b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/.nosearch deleted file mode 100644 index e69de29b..00000000 diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/auto-autoloads.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/auto-autoloads.el deleted file mode 100644 index 7e5af672..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/auto-autoloads.el +++ /dev/null @@ -1,664 +0,0 @@ - -;;;### (autoloads (url-register-auth-scheme url-get-authentication) -;;;;;; "url-auth" "url-auth.el" (19270 18926)) -;;; Generated autoloads from url-auth.el - -(autoload 'url-get-authentication "url-auth" "\ -Return an authorization string suitable for use in the WWW-Authenticate -header in an HTTP/1.0 request. - -URL is the url you are requesting authorization to. This can be either a - string representing the URL, or the parsed representation returned by - `url-generic-parse-url' -REALM is the realm at a specific site we are looking for. This should be a - string specifying the exact realm, or nil or the symbol 'any' to - specify that the filename portion of the URL should be used as the - realm -TYPE is the type of authentication to be returned. This is either a string - representing the type (basic, digest, etc), or nil or the symbol 'any' - to specify that any authentication is acceptable. If requesting 'any' - the strongest matching authentication will be returned. If this is - wrong, its no big deal, the error from the server will specify exactly - what type of auth to use -PROMPT is boolean - specifies whether to ask the user for a username/password - if one cannot be found in the cache - -\(fn URL REALM TYPE PROMPT &optional ARGS)" nil nil) - -(autoload 'url-register-auth-scheme "url-auth" "\ -Register an HTTP authentication method. - -TYPE is a string or symbol specifying the name of the method. This - should be the same thing you expect to get returned in an Authenticate - header in HTTP/1.0 - it will be downcased. -FUNCTION is the function to call to get the authorization information. This - defaults to `url-?-auth', where ? is TYPE -RATING a rating between 1 and 10 of the strength of the authentication. - This is used when asking for the best authentication for a specific - URL. The item with the highest rating is returned. - -\(fn TYPE &optional FUNCTION RATING)" nil nil) - -;;;*** - -;;;### (autoloads (url-cache-expired url-cache-extract url-is-cached -;;;;;; url-store-in-cache) "url-cache" "url-cache.el" (15437 42793)) -;;; Generated autoloads from url-cache.el - -(autoload 'url-store-in-cache "url-cache" "\ -Store buffer BUFF in the cache. - -\(fn &optional BUFF)" nil nil) - -(autoload 'url-is-cached "url-cache" "\ -Return non-nil if the URL is cached. - -\(fn URL)" nil nil) - -(autoload 'url-cache-extract "url-cache" "\ -Extract FNAM from the local disk cache - -\(fn FNAM)" nil nil) - -(autoload 'url-cache-expired "url-cache" "\ -Return t iff a cached file has expired. - -\(fn URL MOD)" nil nil) - -;;;*** - -;;;### (autoloads (url-cid) "url-cid" "url-cid.el" (15092 11246)) -;;; Generated autoloads from url-cid.el - -(autoload 'url-cid "url-cid" "\ -Not documented - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-cookie-setup-save-timer url-cookie-handle-set-cookie -;;;;;; url-cookie-retrieve url-cookie-write-file url-cookie-parse-file) -;;;;;; "url-cookie" "url-cookie.el" (15806 40683)) -;;; Generated autoloads from url-cookie.el - -(autoload 'url-cookie-parse-file "url-cookie" "\ -Not documented - -\(fn &optional FNAME)" nil nil) - -(autoload 'url-cookie-write-file "url-cookie" "\ -Not documented - -\(fn &optional FNAME)" nil nil) - -(autoload 'url-cookie-retrieve "url-cookie" "\ -Retrieves all the netscape-style cookies for a specified HOST and PATH - -\(fn HOST PATH &optional SECURE)" nil nil) - -(autoload 'url-cookie-handle-set-cookie "url-cookie" "\ -Not documented - -\(fn STR)" nil nil) - -(autoload 'url-cookie-setup-save-timer "url-cookie" "\ -Reset the cookie saver timer. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (url-dav-vc-registered url-dav-file-name-completion -;;;;;; url-dav-file-name-all-completions url-dav-rename-file url-dav-make-directory -;;;;;; url-dav-file-directory-p url-dav-directory-files url-dav-delete-file -;;;;;; url-dav-delete-directory url-dav-save-resource url-dav-file-attributes -;;;;;; url-dav-unlock-resource url-dav-active-locks url-dav-lock-resource -;;;;;; url-dav-get-properties url-dav-supported-p) "url-dav" "url-dav.el" -;;;;;; (15450 54377)) -;;; Generated autoloads from url-dav.el - -(autoload 'url-dav-supported-p "url-dav" "\ -Not documented - -\(fn URL)" nil nil) - -(autoload 'url-dav-get-properties "url-dav" "\ -Return properties for URL, up to DEPTH levels deep. - -Returns an assoc list, where the key is the filename (possibly a full -URI), and the value is a standard property list of DAV property -names (ie: DAV:resourcetype). - -\(fn URL &optional ATTRIBUTES DEPTH NAMESPACES)" nil nil) - -(autoload 'url-dav-lock-resource "url-dav" "\ -Request a lock on URL. If EXCLUSIVE is non-nil, get an exclusive lock. -Optional 3rd argument DEPTH says how deep the lock should go, default is 0 -\(lock only the resource and none of its children). - -Returns a cons-cell of (SUCCESSFUL-RESULTS . FAILURE-RESULTS). -SUCCESSFUL-RESULTS is a list of (URL STATUS locktoken). -FAILURE-RESULTS is a list of (URL STATUS). - -\(fn URL EXCLUSIVE &optional DEPTH)" nil nil) - -(autoload 'url-dav-active-locks "url-dav" "\ -Return an assoc list of all active locks on URL. - -\(fn URL &optional DEPTH)" nil nil) - -(autoload 'url-dav-unlock-resource "url-dav" "\ -Release the lock on URL represented by LOCK-TOKEN. -Returns `t' iff the lock was successfully released. - -\(fn URL LOCK-TOKEN)" nil nil) - -(autoload 'url-dav-file-attributes "url-dav" "\ -Not documented - -\(fn URL)" nil nil) - -(autoload 'url-dav-save-resource "url-dav" "\ -Save OBJ as URL using WebDAV. -URL must be a fully qualified URL. -OBJ may be a buffer or a string. - -\(fn URL OBJ &optional CONTENT-TYPE LOCK-TOKEN)" nil nil) - -(autoload 'url-dav-delete-directory "url-dav" "\ -Delete the WebDAV collection URL. -If optional second argument RECURSIVE is non-nil, then delete all -files in the collection as well. - -\(fn URL &optional RECURSIVE LOCK-TOKEN)" nil nil) - -(autoload 'url-dav-delete-file "url-dav" "\ -Delete file named URL. - -\(fn URL &optional LOCK-TOKEN)" nil nil) - -(autoload 'url-dav-directory-files "url-dav" "\ -Return a list of names of files in DIRECTORY. -There are three optional arguments: -If FULL is non-nil, return absolute file names. Otherwise return names - that are relative to the specified directory. -If MATCH is non-nil, mention only file names that match the regexp MATCH. -If NOSORT is non-nil, the list is not sorted--its order is unpredictable. - NOSORT is useful if you plan to sort the result yourself. - -\(fn URL &optional FULL MATCH NOSORT FILES-ONLY)" nil nil) - -(autoload 'url-dav-file-directory-p "url-dav" "\ -Return t if URL names an existing DAV collection. - -\(fn URL)" nil nil) - -(autoload 'url-dav-make-directory "url-dav" "\ -Create the directory DIR and any nonexistent parent dirs. - -\(fn URL &optional PARENTS)" nil nil) - -(autoload 'url-dav-rename-file "url-dav" "\ -Not documented - -\(fn OLDNAME NEWNAME &optional OVERWRITE)" nil nil) - -(autoload 'url-dav-file-name-all-completions "url-dav" "\ -Return a list of all completions of file name FILE in directory DIRECTORY. -These are all file names in directory DIRECTORY which begin with FILE. - -\(fn FILE URL)" nil nil) - -(autoload 'url-dav-file-name-completion "url-dav" "\ -Complete file name FILE in directory DIRECTORY. -Returns the longest string -common to all file names in DIRECTORY that start with FILE. -If there is only one and FILE matches it exactly, returns t. -Returns nil if DIR contains no name starting with FILE. - -\(fn FILE URL)" nil nil) - -(autoload 'url-dav-vc-registered "url-dav" "\ -Not documented - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-file) "url-file" "url-file.el" (15555 54384)) -;;; Generated autoloads from url-file.el - -(autoload 'url-file "url-file" "\ -Handle file: and ftp: URLs. - -\(fn URL CALLBACK CBARGS)" nil nil) - -;;;*** - -;;;### (autoloads (url-open-stream url-gateway-nslookup-host) "url-gw" -;;;;;; "url-gw.el" (15555 55126)) -;;; Generated autoloads from url-gw.el - -(autoload 'url-gateway-nslookup-host "url-gw" "\ -Attempt to resolve the given HOST using nslookup if possible. - -\(fn HOST)" t nil) - -(autoload 'url-open-stream "url-gw" "\ -Open a stream to HOST, possibly via a gateway. -Args per `open-network-stream'. -Will not make a connexion if `url-gateway-unplugged' is non-nil. - -\(fn NAME BUFFER HOST SERVICE)" nil nil) - -;;;*** - -;;;### (autoloads (url-insert-file-contents url-file-local-copy url-copy-file -;;;;;; url-setup-file-name-handlers) "url-handlers" "url-handlers.el" -;;;;;; (16123 16217)) -;;; Generated autoloads from url-handlers.el - -(autoload 'url-setup-file-name-handlers "url-handlers" "\ -Setup file-name handlers. - -\(fn)" nil nil) - -(autoload 'url-copy-file "url-handlers" "\ -Copy URL to NEWNAME. Both args must be strings. -Signals a `file-already-exists' error if file NEWNAME already exists, -unless a third argument OK-IF-ALREADY-EXISTS is supplied and non-nil. -A number as third arg means request confirmation if NEWNAME already exists. -This is what happens in interactive use with M-x. -Fourth arg KEEP-TIME non-nil means give the new file the same -last-modified time as the old one. (This works on only some systems.) -A prefix arg makes KEEP-TIME non-nil. - -\(fn URL NEWNAME &optional OK-IF-ALREADY-EXISTS KEEP-TIME)" nil nil) - -(autoload 'url-file-local-copy "url-handlers" "\ -Copy URL into a temporary file on this machine. -Returns the name of the local copy, or nil, if FILE is directly -accessible. - -\(fn URL &rest IGNORED)" nil nil) - -(autoload 'url-insert-file-contents "url-handlers" "\ -Not documented - -\(fn URL &optional VISIT BEG END REPLACE)" nil nil) - -;;;*** - -;;;### (autoloads (url-history-save-history url-history-parse-history -;;;;;; url-history-setup-save-timer) "url-history" "url-history.el" -;;;;;; (15092 12080)) -;;; Generated autoloads from url-history.el - -(autoload 'url-history-setup-save-timer "url-history" "\ -Reset the history list timer. - -\(fn)" t nil) - -(autoload 'url-history-parse-history "url-history" "\ -Parse a history file stored in FNAME. - -\(fn &optional FNAME)" nil nil) - -(autoload 'url-history-save-history "url-history" "\ -Write the global history file into `url-history-file'. -The type of data written is determined by what is in the file to begin -with. If the type of storage cannot be determined, then prompt the -user for what type to save as. - -\(fn &optional FNAME)" t nil) - -;;;*** - -;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p -;;;;;; url-http) "url-http" "url-http.el" (19270 18926)) -;;; Generated autoloads from url-http.el - -(autoload 'url-http "url-http" "\ -Retrieve URL via HTTP asynchronously. -URL must be a parsed URL. See `url-generic-parse-url' for details. -When retrieval is completed, the function CALLBACK is executed with -CBARGS as the arguments. - -\(fn URL CALLBACK CBARGS)" nil nil) - -(autoload 'url-http-file-exists-p "url-http" "\ -Not documented - -\(fn URL)" nil nil) - -(defalias 'url-http-file-readable-p 'url-http-file-exists-p) - -(autoload 'url-http-file-attributes "url-http" "\ -Not documented - -\(fn URL)" nil nil) - -(autoload 'url-http-options "url-http" "\ -Returns a property list describing options available for URL. -This list is retrieved using the `OPTIONS' HTTP method. - -Property list members: - -methods - A list of symbols specifying what HTTP methods the resource - supports. - -dav - A list of numbers specifying what DAV protocol/schema versions are - supported. - -dasl - A list of supported DASL search types supported (string form) - -ranges - A list of the units available for use in partial document fetches. - -p3p - The `Platform For Privacy Protection' description for the resource. - Currently this is just the raw header contents. This is likely to - change once P3P is formally supported by the URL package or - Emacs/W3. - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-irc) "url-irc" "url-irc.el" (14435 25453)) -;;; Generated autoloads from url-irc.el - -(autoload 'url-irc "url-irc" "\ -Not documented - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-ldap) "url-ldap" "url-ldap.el" (14398 30982)) -;;; Generated autoloads from url-ldap.el - -(autoload 'url-ldap "url-ldap" "\ -Not documented - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-mailto url-mail) "url-mailto" "url-mailto.el" -;;;;;; (15293 59398)) -;;; Generated autoloads from url-mailto.el - -(autoload 'url-mail "url-mailto" "\ -Not documented - -\(fn &rest ARGS)" t nil) - -(autoload 'url-mailto "url-mailto" "\ -Handle the mailto: URL syntax. - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-data url-generic-emulator-loader url-info -;;;;;; url-man) "url-misc" "url-misc.el" (15556 36223)) -;;; Generated autoloads from url-misc.el - -(autoload 'url-man "url-misc" "\ -Fetch a Unix manual page URL. - -\(fn URL)" nil nil) - -(autoload 'url-info "url-misc" "\ -Fetch a GNU Info URL. - -\(fn URL)" nil nil) - -(autoload 'url-generic-emulator-loader "url-misc" "\ -Not documented - -\(fn URL)" nil nil) - -(defalias 'url-rlogin 'url-generic-emulator-loader) - -(defalias 'url-telnet 'url-generic-emulator-loader) - -(defalias 'url-tn3270 'url-generic-emulator-loader) - -(autoload 'url-data "url-misc" "\ -Fetch a data URL (RFC 2397). - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-snews url-news) "url-news" "url-news.el" (15114 -;;;;;; 36876)) -;;; Generated autoloads from url-news.el - -(autoload 'url-news "url-news" "\ -Not documented - -\(fn URL)" nil nil) - -(autoload 'url-snews "url-news" "\ -Not documented - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-ns-user-pref url-ns-prefs isInNet isResolvable -;;;;;; dnsResolve dnsDomainIs isPlainHostName) "url-ns" "url-ns.el" -;;;;;; (14913 8114)) -;;; Generated autoloads from url-ns.el - -(autoload 'isPlainHostName "url-ns" "\ -Not documented - -\(fn HOST)" nil nil) - -(autoload 'dnsDomainIs "url-ns" "\ -Not documented - -\(fn HOST DOM)" nil nil) - -(autoload 'dnsResolve "url-ns" "\ -Not documented - -\(fn HOST)" nil nil) - -(autoload 'isResolvable "url-ns" "\ -Not documented - -\(fn HOST)" nil nil) - -(autoload 'isInNet "url-ns" "\ -Not documented - -\(fn IP NET MASK)" nil nil) - -(autoload 'url-ns-prefs "url-ns" "\ -Not documented - -\(fn &optional FILE)" nil nil) - -(autoload 'url-ns-user-pref "url-ns" "\ -Not documented - -\(fn KEY &optional DEFAULT)" nil nil) - -;;;*** - -;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse" -;;;;;; "url-parse.el" (15288 22758)) -;;; Generated autoloads from url-parse.el - -(autoload 'url-recreate-url "url-parse" "\ -Not documented - -\(fn URLOBJ)" nil nil) - -(autoload 'url-generic-parse-url "url-parse" "\ -Return a vector of the parts of URL. -Format is: -\[proto username password hostname portnumber file reference attributes fullp] - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-setup-privacy-info) "url-privacy" "url-privacy.el" -;;;;;; (15293 59778)) -;;; Generated autoloads from url-privacy.el - -(autoload 'url-setup-privacy-info "url-privacy" "\ -Not documented - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (url-view-url url-truncate-url-for-viewing url-file-extension -;;;;;; url-hexify-string url-unhex-string url-parse-query-string -;;;;;; url-basepath url-percentage url-display-percentage url-pretty-length -;;;;;; url-strip-leading-spaces url-eat-trailing-space url-get-normalized-date -;;;;;; url-lazy-message url-normalize-url url-insert-entities-in-string -;;;;;; url-parse-args url-debug url-debug) "url-util" "url-util.el" -;;;;;; (19270 18926)) -;;; Generated autoloads from url-util.el - -(defvar url-debug nil "\ -*What types of debug messages from the URL library to show. -Debug messages are logged to the *URL-DEBUG* buffer. - -If t, all messages will be logged. -If a number, all messages will be logged, as well shown via `message'. -If a list, it is a list of the types of messages to be logged.") - -(custom-autoload 'url-debug "url-util" t) - -(autoload 'url-debug "url-util" "\ -Not documented - -\(fn TAG &rest ARGS)" nil nil) - -(autoload 'url-parse-args "url-util" "\ -Not documented - -\(fn STR &optional NODOWNCASE)" nil nil) - -(autoload 'url-insert-entities-in-string "url-util" "\ -Convert HTML markup-start characters to entity references in STRING. -Also replaces the \" character, so that the result may be safely used as - an attribute value in a tag. Returns a new string with the result of the - conversion. Replaces these characters as follows: - & ==> & - < ==> < - > ==> > - \" ==> " - -\(fn STRING)" nil nil) - -(autoload 'url-normalize-url "url-util" "\ -Return a 'normalized' version of URL. -Strips out default port numbers, etc. - -\(fn URL)" nil nil) - -(autoload 'url-lazy-message "url-util" "\ -Just like `message', but is a no-op if called more than once a second. -Will not do anything if url-show-status is nil. - -\(fn &rest ARGS)" nil nil) - -(autoload 'url-get-normalized-date "url-util" "\ -Return a 'real' date string that most HTTP servers can understand. - -\(fn &optional SPECIFIED-TIME)" nil nil) - -(autoload 'url-eat-trailing-space "url-util" "\ -Remove spaces/tabs at the end of a string. - -\(fn X)" nil nil) - -(autoload 'url-strip-leading-spaces "url-util" "\ -Remove spaces at the front of a string. - -\(fn X)" nil nil) - -(autoload 'url-pretty-length "url-util" "\ -Not documented - -\(fn N)" nil nil) - -(autoload 'url-display-percentage "url-util" "\ -Not documented - -\(fn FMT PERC &rest ARGS)" nil nil) - -(autoload 'url-percentage "url-util" "\ -Not documented - -\(fn X Y)" nil nil) - -(autoload 'url-basepath "url-util" "\ -Return the base pathname of FILE, or the actual filename if X is true. - -\(fn FILE &optional X)" nil nil) - -(autoload 'url-parse-query-string "url-util" "\ -Not documented - -\(fn QUERY &optional DOWNCASE)" nil nil) - -(autoload 'url-unhex-string "url-util" "\ -Remove %XXX embedded spaces, etc in a url. -If optional second argument ALLOW-NEWLINES is non-nil, then allow the -decoding of carriage returns and line feeds in the string, which is normally -forbidden in URL encoding. - -\(fn STR &optional ALLOW-NEWLINES)" nil nil) - -(autoload 'url-hexify-string "url-util" "\ -Escape characters in a string. - -\(fn STR)" nil nil) - -(autoload 'url-file-extension "url-util" "\ -Return the filename extension of FNAME. -If optional variable X is t, -then return the basename of the file with the extension stripped off. - -\(fn FNAME &optional X)" nil nil) - -(autoload 'url-truncate-url-for-viewing "url-util" "\ -Return a shortened version of URL that is WIDTH characters or less wide. -WIDTH defaults to the current frame width. - -\(fn URL &optional WIDTH)" nil nil) - -(autoload 'url-view-url "url-util" "\ -View the current document's URL. -Optional argument NO-SHOW means just return the URL, don't show it in -the minibuffer. - -This uses `url-current-object', set locally to the buffer. - -\(fn &optional NO-SHOW)" t nil) - -;;;*** - -;;;### (autoloads nil "url" "url.el" (19270 18926)) -;;; Generated autoloads from url.el - -(defvar url-configuration-directory "~/.url") - -;;;*** - -(provide 'url-autoloads) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/custom-load.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/custom-load.el deleted file mode 100644 index dc8a5770..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/custom-load.el +++ /dev/null @@ -1,47 +0,0 @@ -;;; cus-load.el --- automatically extracted custom dependencies -;; -;;; Code: - -(put 'url-history 'custom-loads '(url-history)) -(put 'url 'custom-loads '(url-vars url-cookie url-gw url-history url-irc url-news)) -(put 'url-cache 'custom-loads '(url-vars url-cache)) -(put 'url-gateway 'custom-loads '(url-gw)) -(put 'url-mime 'custom-loads '(url-vars)) -(put 'url-hairy 'custom-loads '(url-vars url-util)) -(put 'i18n 'custom-loads '(url-vars)) -(put 'url-cookie 'custom-loads '(url-cookie)) -(put 'hypermedia 'custom-loads '(url-vars)) -(put 'url-file 'custom-loads '(url-cache url-cookie url-vars)) -;; These are for handling :version. We need to have a minimum of -;; information so `customize-changed-options' could do its job. - -;; For groups we set `custom-version', `group-documentation' and -;; `custom-tag' (which are shown in the customize buffer), so we -;; don't have to load the file containing the group. - -;; `custom-versions-load-alist' is an alist that has as car a version -;; number and as elts the files that have variables or faces that -;; contain that version. These files should be loaded before showing -;; the customization buffer that `customize-changed-options' -;; generates. - -;; This macro is used so we don't modify the information about -;; variables and groups if it's already set. (We don't know when -;; cus-load.el is going to be loaded and at that time some of the -;; files might be loaded and some others might not). -(defmacro custom-put-if-not (symbol propname value) - `(unless (get ,symbol ,propname) - (put ,symbol ,propname ,value))) - - -(defvar custom-versions-load-alist nil - "For internal use by custom.") - -(provide 'cus-load) -;; Local Variables: -;; version-control: never -;; no-byte-compile: t -;; no-update-autoloads: t -;; coding: utf-8 -;; End: -;;; cus-load.el ends here diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/docomp.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/docomp.el deleted file mode 100644 index 1900aa59..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/docomp.el +++ /dev/null @@ -1,88 +0,0 @@ -(setq debug-on-error t) -(setq fancy-splash-image "") -(require 'cl) - -(setq srcdir (or (getenv "URLSRCDIR") ".")) - -(push srcdir load-path) -(push (or (getenv "GNUSDIR") (expand-file-name "../../gnus/lisp" srcdir)) load-path) - -(setq max-specpdl-size (* 10 max-specpdl-size) - max-lisp-eval-depth (* 10 max-lisp-eval-depth)) - -;; If we are building url in a different directory than the source -;; directory, we must read *.el from source directory and write *.elc -;; into the building directory. For that, we define this function -;; before loading bytecomp. Bytecomp doesn't overwrite this function. -(defun byte-compile-dest-file (filename) - "Convert an Emacs Lisp source file name to a compiled file name. - In addition, remove directory name part from FILENAME." - (setq filename (byte-compiler-base-file-name filename)) - (setq filename (file-name-sans-versions filename)) - (setq filename (file-name-nondirectory filename)) - (if (memq system-type '(win32 w32 mswindows windows-nt)) - (setq filename (downcase filename))) - (cond ((eq system-type 'vax-vms) - (concat (substring filename 0 (string-match ";" filename)) "c")) - ((string-match emacs-lisp-file-regexp filename) - (concat (substring filename 0 (match-beginning 0)) ".elc")) - (t (concat filename ".elc")))) - -(require 'bytecomp) - -;; Emacs 19 byte compiler complains about too much stuff by default. -;; Turn off most of the warnings here. -(setq byte-compile-warnings nil - byte-optimize t) - -(defun compile-it () - (let ((files (directory-files "." t ".*.[eE][lL]$" nil))) - (while files - (if (and (not (file-directory-p (car files))) - (not (string-match "w3-sysdp.el$" (car files)))) - (byte-compile-file (car files))) - (setq files (cdr files))))) - -(defun emacs-build-autoloads (dir autofile) - (require 'autoload) - (let ((files (directory-files dir t ".*.[eE][lL]$" nil))) - (save-excursion - (find-file autofile) - (erase-buffer) - (mapcar 'generate-file-autoloads files) - (goto-char (point-max)) - (setq buffer-read-only nil) - (insert "\n(provide 'url-autoloads)\n") - (save-buffer) - (kill-buffer (current-buffer)))) - - ;; Now we need to munge that file to deal with - (find-file "url-auto.el") - (erase-buffer) - (insert-file-contents autofile) - (goto-char (point-min)) - (while (re-search-forward "url-autoloads" nil t) - (replace-match "url-auto")) - (save-buffer) - (kill-buffer (current-buffer)) - (kill-emacs)) - -(defun emacs-batch-build-autoloads () - (emacs-build-autoloads (nth 0 command-line-args-left) - (nth 1 command-line-args-left))) - -(defun emacs-build-custom-load (dir) - (let ((foundit t)) - (save-excursion - (condition-case () - (load-library "cus-dep") - (error (setq foundit nil))) - (if foundit - (let ((command-line-args-left (list dir))) - (custom-make-dependencies)) - (write-region "\n" nil "cus-load.el"))))) - -(defun emacs-batch-build-custom-load () - (emacs-build-custom-load (car command-line-args-left))) - -(provide 'url-auto) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-about.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-about.el deleted file mode 100644 index 4fbf2083..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-about.el +++ /dev/null @@ -1,100 +0,0 @@ -;;; url-about.el --- Show internal URLs -;; Author: $Author: wmperry $ -;; Created: $Date: 2001/11/24 22:30:21 $ -;; Version: $Revision: 1.1 $ -;; Keywords: comm, data, processes, hypermedia - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 2001 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(eval-when-compile - (require 'cl)) -(require 'url-util) -(require 'url-parse) - -(defun url-probe-protocols () - "Returns a list of all potential URL schemes." - (or (get 'url-extension-protocols 'probed) - (mapc (lambda (s) (url-scheme-get-property s 'name)) - (or (get 'url-extension-protocols 'schemes) - (let ((schemes '("info" "man" "rlogin" "telnet" - "tn3270" "data" "snews"))) - (mapc (lambda (d) - (mapc (lambda (f) - (if (string-match "url-\\(.*\\).el$" f) - (push (match-string 1 f) schemes))) - (directory-files d nil "^url-.*\\.el$"))) - load-path) - (put 'url-extension-protocols 'schemes schemes) - schemes))))) - -(defun url-about-protocols (url) - (url-probe-protocols) - (insert "\n" - " \n" - " Supported Protocols\n" - " \n" - " \n" - "

Supported Protocols - URL v" url-version "

\n" - " \n" - " \n" - " \n") - (mapc (lambda (k) - (if (string= k "proxy") - ;; Ignore the proxy setting... its magic! - nil - (insert " \n") - ;; The name of the protocol - (insert "
Protocol\n" - " Properties\n" - " Description\n" - "
" (or (url-scheme-get-property k 'name) k) "\n") - - ;; Now the properties. Currently just asynchronous - ;; status, default port number, and proxy status. - (insert " " - (if (url-scheme-get-property k 'asynchronous-p) "As" "S") - "ynchronous
\n" - (if (url-scheme-get-property k 'default-port) - (format "Default Port: %d
\n" - (url-scheme-get-property k 'default-port)) "") - (if (assoc k url-proxy-services) - (format "Proxy: %s
\n" (assoc k url-proxy-services)) "")) - ;; Now the description... - (insert "
" - (or (url-scheme-get-property k 'description) "N/A")))) - (sort (let (x) (maphash (lambda (k v) (push k x)) url-scheme-registry) x) 'string-lessp)) - (insert "
\n" - " \n" - "\n")) - -(defun url-about (url) - "Show internal URLs." - (let* ((item (downcase (url-filename url))) - (func (intern (format "url-about-%s" item)))) - (if (fboundp func) - (progn - (set-buffer (generate-new-buffer " *about-data*")) - (insert "Content-type: text/html\n\n") - (funcall func url) - (current-buffer)) - (error "URL does not know about `%s'" item)))) - -(provide 'url-about) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-auth.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-auth.el deleted file mode 100644 index 68db6b6e..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-auth.el +++ /dev/null @@ -1,324 +0,0 @@ -;;; url-auth.el --- Uniform Resource Locator authorization modules -;; Author: $Author: wmperry $ -;; Created: $Date: 2001/12/05 19:05:51 $ -;; Version: $Revision: 1.4 $ -;; Keywords: comm, data, processes, hypermedia - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require 'url-vars) -(require 'url-parse) -(autoload 'url-warn "url") - -(defsubst url-auth-user-prompt (url realm) - "String to usefully prompt for a username." - (concat "Username [for " - (or realm (url-truncate-url-for-viewing - (url-recreate-url url) - (- (window-width) 10 20))) - "]: ")) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Basic authorization code -;;; ------------------------ -;;; This implements the BASIC authorization type. See the online -;;; documentation at -;;; http://www.w3.org/hypertext/WWW/AccessAuthorization/Basic.html -;;; for the complete documentation on this type. -;;; -;;; This is very insecure, but it works as a proof-of-concept -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar url-basic-auth-storage 'url-http-real-basic-auth-storage - "Where usernames and passwords are stored. - -Must be a symbol pointing to another variable that will actually store -the information. The value of this variable is an assoc list of assoc -lists. The first assoc list is keyed by the server name. The cdr of -this is an assoc list based on the 'directory' specified by the url we -are looking up.") - -(defun url-basic-auth (url &optional prompt overwrite realm args) - "Get the username/password for the specified URL. -If optional argument PROMPT is non-nil, ask for the username/password -to use for the url and its descendants. If optional third argument -OVERWRITE is non-nil, overwrite the old username/password pair if it -is found in the assoc list. If REALM is specified, use that as the realm -instead of the pathname inheritance method." - (let* ((href (if (stringp url) - (url-generic-parse-url url) - url)) - (server (url-host href)) - (port (url-port href)) - (path (url-filename href)) - user pass byserv retval data) - (setq server (format "%s:%d" server port) - path (cond - (realm realm) - ((string-match "/$" path) path) - (t (url-basepath path))) - byserv (cdr-safe (assoc server - (symbol-value url-basic-auth-storage)))) - (cond - ((and prompt (not byserv)) - (setq user (read-string (url-auth-user-prompt url realm) - (user-real-login-name)) - pass (funcall url-passwd-entry-func "Password: ")) - (set url-basic-auth-storage - (cons (list server - (cons path - (setq retval - (base64-encode-string - (format "%s:%s" user pass))))) - (symbol-value url-basic-auth-storage)))) - (byserv - (setq retval (cdr-safe (assoc path byserv))) - (if (and (not retval) - (string-match "/" path)) - (while (and byserv (not retval)) - (setq data (car (car byserv))) - (if (or (not (string-match "/" data)) ; Its a realm - take it! - (and - (>= (length path) (length data)) - (string= data (substring path 0 (length data))))) - (setq retval (cdr (car byserv)))) - (setq byserv (cdr byserv)))) - (if (or (and (not retval) prompt) overwrite) - (progn - (setq user (read-string (url-auth-user-prompt url realm) - (user-real-login-name)) - pass (funcall url-passwd-entry-func "Password: ") - retval (base64-encode-string (format "%s:%s" user pass)) - byserv (assoc server (symbol-value url-basic-auth-storage))) - (setcdr byserv - (cons (cons path retval) (cdr byserv)))))) - (t (setq retval nil))) - (if retval (setq retval (concat "Basic " retval))) - retval)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Digest authorization code -;;; ------------------------ -;;; This implements the DIGEST authorization type. See the internet draft -;;; ftp://ds.internic.net/internet-drafts/draft-ietf-http-digest-aa-01.txt -;;; for the complete documentation on this type. -;;; -;;; This is very secure -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar url-digest-auth-storage nil - "Where usernames and passwords are stored. Its value is an assoc list of -assoc lists. The first assoc list is keyed by the server name. The cdr of -this is an assoc list based on the 'directory' specified by the url we are -looking up.") - -(defun url-digest-auth-create-key (username password realm method uri) - "Create a key for digest authentication method" - (let* ((info (if (stringp uri) - (url-generic-parse-url uri) - uri)) - (a1 (md5 (concat username ":" realm ":" password))) - (a2 (md5 (concat method ":" (url-filename info))))) - (list a1 a2))) - -(defun url-digest-auth (url &optional prompt overwrite realm args) - "Get the username/password for the specified URL. -If optional argument PROMPT is non-nil, ask for the username/password -to use for the url and its descendants. If optional third argument -OVERWRITE is non-nil, overwrite the old username/password pair if it -is found in the assoc list. If REALM is specified, use that as the realm -instead of hostname:portnum." - (if args - (let* ((href (if (stringp url) - (url-generic-parse-url url) - url)) - (server (url-host href)) - (port (url-port href)) - (path (url-filename href)) - user pass byserv retval data) - (setq path (cond - (realm realm) - ((string-match "/$" path) path) - (t (url-basepath path))) - server (format "%s:%d" server port) - byserv (cdr-safe (assoc server url-digest-auth-storage))) - (cond - ((and prompt (not byserv)) - (setq user (read-string (url-auth-user-prompt url realm) - (user-real-login-name)) - pass (funcall url-passwd-entry-func "Password: ") - url-digest-auth-storage - (cons (list server - (cons path - (setq retval - (cons user - (url-digest-auth-create-key - user pass realm - (or url-request-method "GET") - url))))) - url-digest-auth-storage))) - (byserv - (setq retval (cdr-safe (assoc path byserv))) - (if (and (not retval) ; no exact match, check directories - (string-match "/" path)) ; not looking for a realm - (while (and byserv (not retval)) - (setq data (car (car byserv))) - (if (or (not (string-match "/" data)) - (and - (>= (length path) (length data)) - (string= data (substring path 0 (length data))))) - (setq retval (cdr (car byserv)))) - (setq byserv (cdr byserv)))) - (if (or (and (not retval) prompt) overwrite) - (progn - (setq user (read-string (url-auth-user-prompt url realm) - (user-real-login-name)) - pass (funcall url-passwd-entry-func "Password: ") - retval (setq retval - (cons user - (url-digest-auth-create-key - user pass realm - (or url-request-method "GET") - url))) - byserv (assoc server url-digest-auth-storage)) - (setcdr byserv - (cons (cons path retval) (cdr byserv)))))) - (t (setq retval nil))) - (if retval - (let ((nonce (or (cdr-safe (assoc "nonce" args)) "nonegiven")) - (opaque (or (cdr-safe (assoc "opaque" args)) "nonegiven"))) - (format - (concat "Digest username=\"%s\", realm=\"%s\"," - "nonce=\"%s\", uri=\"%s\"," - "response=\"%s\", opaque=\"%s\"") - (nth 0 retval) realm nonce (url-filename href) - (md5 (concat (nth 1 retval) ":" nonce ":" - (nth 2 retval))) opaque)))))) - -(defvar url-registered-auth-schemes nil - "A list of the registered authorization schemes and various and sundry -information associated with them.") - -;;;###autoload -(defun url-get-authentication (url realm type prompt &optional args) - "Return an authorization string suitable for use in the WWW-Authenticate -header in an HTTP/1.0 request. - -URL is the url you are requesting authorization to. This can be either a - string representing the URL, or the parsed representation returned by - `url-generic-parse-url' -REALM is the realm at a specific site we are looking for. This should be a - string specifying the exact realm, or nil or the symbol 'any' to - specify that the filename portion of the URL should be used as the - realm -TYPE is the type of authentication to be returned. This is either a string - representing the type (basic, digest, etc), or nil or the symbol 'any' - to specify that any authentication is acceptable. If requesting 'any' - the strongest matching authentication will be returned. If this is - wrong, its no big deal, the error from the server will specify exactly - what type of auth to use -PROMPT is boolean - specifies whether to ask the user for a username/password - if one cannot be found in the cache" - (if (not realm) - (setq realm (cdr-safe (assoc "realm" args)))) - (if (stringp url) - (setq url (url-generic-parse-url url))) - (if (or (null type) (eq type 'any)) - ;; Whooo doogies! - ;; Go through and get _all_ the authorization strings that could apply - ;; to this URL, store them along with the 'rating' we have in the list - ;; of schemes, then sort them so that the 'best' is at the front of the - ;; list, then get the car, then get the cdr. - ;; Zooom zooom zoooooom - (cdr-safe - (car-safe - (sort - (mapcar - (function - (lambda (scheme) - (if (fboundp (car (cdr scheme))) - (cons (cdr (cdr scheme)) - (funcall (car (cdr scheme)) url nil nil realm)) - (cons 0 nil)))) - url-registered-auth-schemes) - (function - (lambda (x y) - (cond - ((null (cdr x)) nil) - ((and (cdr x) (null (cdr y))) t) - ((and (cdr x) (cdr y)) - (>= (car x) (car y))) - (t nil))))))) - (if (symbolp type) (setq type (symbol-name type))) - (let* ((scheme (car-safe - (cdr-safe (assoc (downcase type) - url-registered-auth-schemes))))) - ;; on some systems, we have to wait in order to avoid drawing a blank page - (and url-slow-proxy-requires-waiting-for - (sleep-for url-slow-proxy-requires-waiting-for)) - (if (and scheme (fboundp scheme)) - (funcall scheme url prompt - ;;;(and prompt - ;;; (funcall scheme url nil nil realm args)) - ;; specify `nil' instead, otherwise authentication - ;; gets repeated over and over again ... - nil - realm args))))) - -;;;###autoload -(defun url-register-auth-scheme (type &optional function rating) - "Register an HTTP authentication method. - -TYPE is a string or symbol specifying the name of the method. This - should be the same thing you expect to get returned in an Authenticate - header in HTTP/1.0 - it will be downcased. -FUNCTION is the function to call to get the authorization information. This - defaults to `url-?-auth', where ? is TYPE -RATING a rating between 1 and 10 of the strength of the authentication. - This is used when asking for the best authentication for a specific - URL. The item with the highest rating is returned." - (let* ((type (cond - ((stringp type) (downcase type)) - ((symbolp type) (downcase (symbol-name type))) - (t (error "Bad call to `url-register-auth-scheme'")))) - (function (or function (intern (concat "url-" type "-auth")))) - (rating (cond - ((null rating) 2) - ((stringp rating) (string-to-int rating)) - (t rating))) - (node (assoc type url-registered-auth-schemes))) - (if (not (fboundp function)) - (url-warn 'security - (format (eval-when-compile - "Tried to register `%s' as an auth scheme" - ", but it is not a function!") function))) - - (if node - (setcdr node (cons function rating)) - (setq url-registered-auth-schemes - (cons (cons type (cons function rating)) - url-registered-auth-schemes))))) - -(defun url-auth-registered (scheme) - ;; Return non-nil iff SCHEME is registered as an auth type - (assoc scheme url-registered-auth-schemes)) - -(provide 'url-auth) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-auto.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-auto.el deleted file mode 100644 index d12a8f9f..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-auto.el +++ /dev/null @@ -1,664 +0,0 @@ - -;;;### (autoloads (url-register-auth-scheme url-get-authentication) -;;;;;; "url-auth" "url-auth.el" (19270 18926)) -;;; Generated autoloads from url-auth.el - -(autoload 'url-get-authentication "url-auth" "\ -Return an authorization string suitable for use in the WWW-Authenticate -header in an HTTP/1.0 request. - -URL is the url you are requesting authorization to. This can be either a - string representing the URL, or the parsed representation returned by - `url-generic-parse-url' -REALM is the realm at a specific site we are looking for. This should be a - string specifying the exact realm, or nil or the symbol 'any' to - specify that the filename portion of the URL should be used as the - realm -TYPE is the type of authentication to be returned. This is either a string - representing the type (basic, digest, etc), or nil or the symbol 'any' - to specify that any authentication is acceptable. If requesting 'any' - the strongest matching authentication will be returned. If this is - wrong, its no big deal, the error from the server will specify exactly - what type of auth to use -PROMPT is boolean - specifies whether to ask the user for a username/password - if one cannot be found in the cache - -\(fn URL REALM TYPE PROMPT &optional ARGS)" nil nil) - -(autoload 'url-register-auth-scheme "url-auth" "\ -Register an HTTP authentication method. - -TYPE is a string or symbol specifying the name of the method. This - should be the same thing you expect to get returned in an Authenticate - header in HTTP/1.0 - it will be downcased. -FUNCTION is the function to call to get the authorization information. This - defaults to `url-?-auth', where ? is TYPE -RATING a rating between 1 and 10 of the strength of the authentication. - This is used when asking for the best authentication for a specific - URL. The item with the highest rating is returned. - -\(fn TYPE &optional FUNCTION RATING)" nil nil) - -;;;*** - -;;;### (autoloads (url-cache-expired url-cache-extract url-is-cached -;;;;;; url-store-in-cache) "url-cache" "url-cache.el" (15437 42793)) -;;; Generated autoloads from url-cache.el - -(autoload 'url-store-in-cache "url-cache" "\ -Store buffer BUFF in the cache. - -\(fn &optional BUFF)" nil nil) - -(autoload 'url-is-cached "url-cache" "\ -Return non-nil if the URL is cached. - -\(fn URL)" nil nil) - -(autoload 'url-cache-extract "url-cache" "\ -Extract FNAM from the local disk cache - -\(fn FNAM)" nil nil) - -(autoload 'url-cache-expired "url-cache" "\ -Return t iff a cached file has expired. - -\(fn URL MOD)" nil nil) - -;;;*** - -;;;### (autoloads (url-cid) "url-cid" "url-cid.el" (15092 11246)) -;;; Generated autoloads from url-cid.el - -(autoload 'url-cid "url-cid" "\ -Not documented - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-cookie-setup-save-timer url-cookie-handle-set-cookie -;;;;;; url-cookie-retrieve url-cookie-write-file url-cookie-parse-file) -;;;;;; "url-cookie" "url-cookie.el" (15806 40683)) -;;; Generated autoloads from url-cookie.el - -(autoload 'url-cookie-parse-file "url-cookie" "\ -Not documented - -\(fn &optional FNAME)" nil nil) - -(autoload 'url-cookie-write-file "url-cookie" "\ -Not documented - -\(fn &optional FNAME)" nil nil) - -(autoload 'url-cookie-retrieve "url-cookie" "\ -Retrieves all the netscape-style cookies for a specified HOST and PATH - -\(fn HOST PATH &optional SECURE)" nil nil) - -(autoload 'url-cookie-handle-set-cookie "url-cookie" "\ -Not documented - -\(fn STR)" nil nil) - -(autoload 'url-cookie-setup-save-timer "url-cookie" "\ -Reset the cookie saver timer. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (url-dav-vc-registered url-dav-file-name-completion -;;;;;; url-dav-file-name-all-completions url-dav-rename-file url-dav-make-directory -;;;;;; url-dav-file-directory-p url-dav-directory-files url-dav-delete-file -;;;;;; url-dav-delete-directory url-dav-save-resource url-dav-file-attributes -;;;;;; url-dav-unlock-resource url-dav-active-locks url-dav-lock-resource -;;;;;; url-dav-get-properties url-dav-supported-p) "url-dav" "url-dav.el" -;;;;;; (15450 54377)) -;;; Generated autoloads from url-dav.el - -(autoload 'url-dav-supported-p "url-dav" "\ -Not documented - -\(fn URL)" nil nil) - -(autoload 'url-dav-get-properties "url-dav" "\ -Return properties for URL, up to DEPTH levels deep. - -Returns an assoc list, where the key is the filename (possibly a full -URI), and the value is a standard property list of DAV property -names (ie: DAV:resourcetype). - -\(fn URL &optional ATTRIBUTES DEPTH NAMESPACES)" nil nil) - -(autoload 'url-dav-lock-resource "url-dav" "\ -Request a lock on URL. If EXCLUSIVE is non-nil, get an exclusive lock. -Optional 3rd argument DEPTH says how deep the lock should go, default is 0 -\(lock only the resource and none of its children). - -Returns a cons-cell of (SUCCESSFUL-RESULTS . FAILURE-RESULTS). -SUCCESSFUL-RESULTS is a list of (URL STATUS locktoken). -FAILURE-RESULTS is a list of (URL STATUS). - -\(fn URL EXCLUSIVE &optional DEPTH)" nil nil) - -(autoload 'url-dav-active-locks "url-dav" "\ -Return an assoc list of all active locks on URL. - -\(fn URL &optional DEPTH)" nil nil) - -(autoload 'url-dav-unlock-resource "url-dav" "\ -Release the lock on URL represented by LOCK-TOKEN. -Returns `t' iff the lock was successfully released. - -\(fn URL LOCK-TOKEN)" nil nil) - -(autoload 'url-dav-file-attributes "url-dav" "\ -Not documented - -\(fn URL)" nil nil) - -(autoload 'url-dav-save-resource "url-dav" "\ -Save OBJ as URL using WebDAV. -URL must be a fully qualified URL. -OBJ may be a buffer or a string. - -\(fn URL OBJ &optional CONTENT-TYPE LOCK-TOKEN)" nil nil) - -(autoload 'url-dav-delete-directory "url-dav" "\ -Delete the WebDAV collection URL. -If optional second argument RECURSIVE is non-nil, then delete all -files in the collection as well. - -\(fn URL &optional RECURSIVE LOCK-TOKEN)" nil nil) - -(autoload 'url-dav-delete-file "url-dav" "\ -Delete file named URL. - -\(fn URL &optional LOCK-TOKEN)" nil nil) - -(autoload 'url-dav-directory-files "url-dav" "\ -Return a list of names of files in DIRECTORY. -There are three optional arguments: -If FULL is non-nil, return absolute file names. Otherwise return names - that are relative to the specified directory. -If MATCH is non-nil, mention only file names that match the regexp MATCH. -If NOSORT is non-nil, the list is not sorted--its order is unpredictable. - NOSORT is useful if you plan to sort the result yourself. - -\(fn URL &optional FULL MATCH NOSORT FILES-ONLY)" nil nil) - -(autoload 'url-dav-file-directory-p "url-dav" "\ -Return t if URL names an existing DAV collection. - -\(fn URL)" nil nil) - -(autoload 'url-dav-make-directory "url-dav" "\ -Create the directory DIR and any nonexistent parent dirs. - -\(fn URL &optional PARENTS)" nil nil) - -(autoload 'url-dav-rename-file "url-dav" "\ -Not documented - -\(fn OLDNAME NEWNAME &optional OVERWRITE)" nil nil) - -(autoload 'url-dav-file-name-all-completions "url-dav" "\ -Return a list of all completions of file name FILE in directory DIRECTORY. -These are all file names in directory DIRECTORY which begin with FILE. - -\(fn FILE URL)" nil nil) - -(autoload 'url-dav-file-name-completion "url-dav" "\ -Complete file name FILE in directory DIRECTORY. -Returns the longest string -common to all file names in DIRECTORY that start with FILE. -If there is only one and FILE matches it exactly, returns t. -Returns nil if DIR contains no name starting with FILE. - -\(fn FILE URL)" nil nil) - -(autoload 'url-dav-vc-registered "url-dav" "\ -Not documented - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-file) "url-file" "url-file.el" (15555 54384)) -;;; Generated autoloads from url-file.el - -(autoload 'url-file "url-file" "\ -Handle file: and ftp: URLs. - -\(fn URL CALLBACK CBARGS)" nil nil) - -;;;*** - -;;;### (autoloads (url-open-stream url-gateway-nslookup-host) "url-gw" -;;;;;; "url-gw.el" (15555 55126)) -;;; Generated autoloads from url-gw.el - -(autoload 'url-gateway-nslookup-host "url-gw" "\ -Attempt to resolve the given HOST using nslookup if possible. - -\(fn HOST)" t nil) - -(autoload 'url-open-stream "url-gw" "\ -Open a stream to HOST, possibly via a gateway. -Args per `open-network-stream'. -Will not make a connexion if `url-gateway-unplugged' is non-nil. - -\(fn NAME BUFFER HOST SERVICE)" nil nil) - -;;;*** - -;;;### (autoloads (url-insert-file-contents url-file-local-copy url-copy-file -;;;;;; url-setup-file-name-handlers) "url-handlers" "url-handlers.el" -;;;;;; (16123 16217)) -;;; Generated autoloads from url-handlers.el - -(autoload 'url-setup-file-name-handlers "url-handlers" "\ -Setup file-name handlers. - -\(fn)" nil nil) - -(autoload 'url-copy-file "url-handlers" "\ -Copy URL to NEWNAME. Both args must be strings. -Signals a `file-already-exists' error if file NEWNAME already exists, -unless a third argument OK-IF-ALREADY-EXISTS is supplied and non-nil. -A number as third arg means request confirmation if NEWNAME already exists. -This is what happens in interactive use with M-x. -Fourth arg KEEP-TIME non-nil means give the new file the same -last-modified time as the old one. (This works on only some systems.) -A prefix arg makes KEEP-TIME non-nil. - -\(fn URL NEWNAME &optional OK-IF-ALREADY-EXISTS KEEP-TIME)" nil nil) - -(autoload 'url-file-local-copy "url-handlers" "\ -Copy URL into a temporary file on this machine. -Returns the name of the local copy, or nil, if FILE is directly -accessible. - -\(fn URL &rest IGNORED)" nil nil) - -(autoload 'url-insert-file-contents "url-handlers" "\ -Not documented - -\(fn URL &optional VISIT BEG END REPLACE)" nil nil) - -;;;*** - -;;;### (autoloads (url-history-save-history url-history-parse-history -;;;;;; url-history-setup-save-timer) "url-history" "url-history.el" -;;;;;; (15092 12080)) -;;; Generated autoloads from url-history.el - -(autoload 'url-history-setup-save-timer "url-history" "\ -Reset the history list timer. - -\(fn)" t nil) - -(autoload 'url-history-parse-history "url-history" "\ -Parse a history file stored in FNAME. - -\(fn &optional FNAME)" nil nil) - -(autoload 'url-history-save-history "url-history" "\ -Write the global history file into `url-history-file'. -The type of data written is determined by what is in the file to begin -with. If the type of storage cannot be determined, then prompt the -user for what type to save as. - -\(fn &optional FNAME)" t nil) - -;;;*** - -;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p -;;;;;; url-http) "url-http" "url-http.el" (19270 18926)) -;;; Generated autoloads from url-http.el - -(autoload 'url-http "url-http" "\ -Retrieve URL via HTTP asynchronously. -URL must be a parsed URL. See `url-generic-parse-url' for details. -When retrieval is completed, the function CALLBACK is executed with -CBARGS as the arguments. - -\(fn URL CALLBACK CBARGS)" nil nil) - -(autoload 'url-http-file-exists-p "url-http" "\ -Not documented - -\(fn URL)" nil nil) - -(defalias 'url-http-file-readable-p 'url-http-file-exists-p) - -(autoload 'url-http-file-attributes "url-http" "\ -Not documented - -\(fn URL)" nil nil) - -(autoload 'url-http-options "url-http" "\ -Returns a property list describing options available for URL. -This list is retrieved using the `OPTIONS' HTTP method. - -Property list members: - -methods - A list of symbols specifying what HTTP methods the resource - supports. - -dav - A list of numbers specifying what DAV protocol/schema versions are - supported. - -dasl - A list of supported DASL search types supported (string form) - -ranges - A list of the units available for use in partial document fetches. - -p3p - The `Platform For Privacy Protection' description for the resource. - Currently this is just the raw header contents. This is likely to - change once P3P is formally supported by the URL package or - Emacs/W3. - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-irc) "url-irc" "url-irc.el" (14435 25453)) -;;; Generated autoloads from url-irc.el - -(autoload 'url-irc "url-irc" "\ -Not documented - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-ldap) "url-ldap" "url-ldap.el" (14398 30982)) -;;; Generated autoloads from url-ldap.el - -(autoload 'url-ldap "url-ldap" "\ -Not documented - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-mailto url-mail) "url-mailto" "url-mailto.el" -;;;;;; (15293 59398)) -;;; Generated autoloads from url-mailto.el - -(autoload 'url-mail "url-mailto" "\ -Not documented - -\(fn &rest ARGS)" t nil) - -(autoload 'url-mailto "url-mailto" "\ -Handle the mailto: URL syntax. - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-data url-generic-emulator-loader url-info -;;;;;; url-man) "url-misc" "url-misc.el" (15556 36223)) -;;; Generated autoloads from url-misc.el - -(autoload 'url-man "url-misc" "\ -Fetch a Unix manual page URL. - -\(fn URL)" nil nil) - -(autoload 'url-info "url-misc" "\ -Fetch a GNU Info URL. - -\(fn URL)" nil nil) - -(autoload 'url-generic-emulator-loader "url-misc" "\ -Not documented - -\(fn URL)" nil nil) - -(defalias 'url-rlogin 'url-generic-emulator-loader) - -(defalias 'url-telnet 'url-generic-emulator-loader) - -(defalias 'url-tn3270 'url-generic-emulator-loader) - -(autoload 'url-data "url-misc" "\ -Fetch a data URL (RFC 2397). - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-snews url-news) "url-news" "url-news.el" (15114 -;;;;;; 36876)) -;;; Generated autoloads from url-news.el - -(autoload 'url-news "url-news" "\ -Not documented - -\(fn URL)" nil nil) - -(autoload 'url-snews "url-news" "\ -Not documented - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-ns-user-pref url-ns-prefs isInNet isResolvable -;;;;;; dnsResolve dnsDomainIs isPlainHostName) "url-ns" "url-ns.el" -;;;;;; (14913 8114)) -;;; Generated autoloads from url-ns.el - -(autoload 'isPlainHostName "url-ns" "\ -Not documented - -\(fn HOST)" nil nil) - -(autoload 'dnsDomainIs "url-ns" "\ -Not documented - -\(fn HOST DOM)" nil nil) - -(autoload 'dnsResolve "url-ns" "\ -Not documented - -\(fn HOST)" nil nil) - -(autoload 'isResolvable "url-ns" "\ -Not documented - -\(fn HOST)" nil nil) - -(autoload 'isInNet "url-ns" "\ -Not documented - -\(fn IP NET MASK)" nil nil) - -(autoload 'url-ns-prefs "url-ns" "\ -Not documented - -\(fn &optional FILE)" nil nil) - -(autoload 'url-ns-user-pref "url-ns" "\ -Not documented - -\(fn KEY &optional DEFAULT)" nil nil) - -;;;*** - -;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse" -;;;;;; "url-parse.el" (15288 22758)) -;;; Generated autoloads from url-parse.el - -(autoload 'url-recreate-url "url-parse" "\ -Not documented - -\(fn URLOBJ)" nil nil) - -(autoload 'url-generic-parse-url "url-parse" "\ -Return a vector of the parts of URL. -Format is: -\[proto username password hostname portnumber file reference attributes fullp] - -\(fn URL)" nil nil) - -;;;*** - -;;;### (autoloads (url-setup-privacy-info) "url-privacy" "url-privacy.el" -;;;;;; (15293 59778)) -;;; Generated autoloads from url-privacy.el - -(autoload 'url-setup-privacy-info "url-privacy" "\ -Not documented - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (url-view-url url-truncate-url-for-viewing url-file-extension -;;;;;; url-hexify-string url-unhex-string url-parse-query-string -;;;;;; url-basepath url-percentage url-display-percentage url-pretty-length -;;;;;; url-strip-leading-spaces url-eat-trailing-space url-get-normalized-date -;;;;;; url-lazy-message url-normalize-url url-insert-entities-in-string -;;;;;; url-parse-args url-debug url-debug) "url-util" "url-util.el" -;;;;;; (19270 18926)) -;;; Generated autoloads from url-util.el - -(defvar url-debug nil "\ -*What types of debug messages from the URL library to show. -Debug messages are logged to the *URL-DEBUG* buffer. - -If t, all messages will be logged. -If a number, all messages will be logged, as well shown via `message'. -If a list, it is a list of the types of messages to be logged.") - -(autoload 'url-debug "url-util") - -(autoload 'url-debug "url-util" "\ -Not documented - -\(fn TAG &rest ARGS)" nil nil) - -(autoload 'url-parse-args "url-util" "\ -Not documented - -\(fn STR &optional NODOWNCASE)" nil nil) - -(autoload 'url-insert-entities-in-string "url-util" "\ -Convert HTML markup-start characters to entity references in STRING. -Also replaces the \" character, so that the result may be safely used as - an attribute value in a tag. Returns a new string with the result of the - conversion. Replaces these characters as follows: - & ==> & - < ==> < - > ==> > - \" ==> " - -\(fn STRING)" nil nil) - -(autoload 'url-normalize-url "url-util" "\ -Return a 'normalized' version of URL. -Strips out default port numbers, etc. - -\(fn URL)" nil nil) - -(autoload 'url-lazy-message "url-util" "\ -Just like `message', but is a no-op if called more than once a second. -Will not do anything if url-show-status is nil. - -\(fn &rest ARGS)" nil nil) - -(autoload 'url-get-normalized-date "url-util" "\ -Return a 'real' date string that most HTTP servers can understand. - -\(fn &optional SPECIFIED-TIME)" nil nil) - -(autoload 'url-eat-trailing-space "url-util" "\ -Remove spaces/tabs at the end of a string. - -\(fn X)" nil nil) - -(autoload 'url-strip-leading-spaces "url-util" "\ -Remove spaces at the front of a string. - -\(fn X)" nil nil) - -(autoload 'url-pretty-length "url-util" "\ -Not documented - -\(fn N)" nil nil) - -(autoload 'url-display-percentage "url-util" "\ -Not documented - -\(fn FMT PERC &rest ARGS)" nil nil) - -(autoload 'url-percentage "url-util" "\ -Not documented - -\(fn X Y)" nil nil) - -(autoload 'url-basepath "url-util" "\ -Return the base pathname of FILE, or the actual filename if X is true. - -\(fn FILE &optional X)" nil nil) - -(autoload 'url-parse-query-string "url-util" "\ -Not documented - -\(fn QUERY &optional DOWNCASE)" nil nil) - -(autoload 'url-unhex-string "url-util" "\ -Remove %XXX embedded spaces, etc in a url. -If optional second argument ALLOW-NEWLINES is non-nil, then allow the -decoding of carriage returns and line feeds in the string, which is normally -forbidden in URL encoding. - -\(fn STR &optional ALLOW-NEWLINES)" nil nil) - -(autoload 'url-hexify-string "url-util" "\ -Escape characters in a string. - -\(fn STR)" nil nil) - -(autoload 'url-file-extension "url-util" "\ -Return the filename extension of FNAME. -If optional variable X is t, -then return the basename of the file with the extension stripped off. - -\(fn FNAME &optional X)" nil nil) - -(autoload 'url-truncate-url-for-viewing "url-util" "\ -Return a shortened version of URL that is WIDTH characters or less wide. -WIDTH defaults to the current frame width. - -\(fn URL &optional WIDTH)" nil nil) - -(autoload 'url-view-url "url-util" "\ -View the current document's URL. -Optional argument NO-SHOW means just return the URL, don't show it in -the minibuffer. - -This uses `url-current-object', set locally to the buffer. - -\(fn &optional NO-SHOW)" t nil) - -;;;*** - -;;;### (autoloads nil "url" "url.el" (19270 18926)) -;;; Generated autoloads from url.el - -(defvar url-configuration-directory "~/.url") - -;;;*** - -(provide 'url-auto) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-buffer.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-buffer.el deleted file mode 100644 index ea0b90e3..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-buffer.el +++ /dev/null @@ -1,42 +0,0 @@ -;;; url-buffer.el --- URLs for Emacs buffers -;; Created: 5 Feb 2003 -;; Version: 0.9 -;; Keywords: data, buffers - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 2001 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(eval-when-compile - (require 'cl)) -(require 'url-util) -(require 'url-parse) - -(defun url-buffer (url) - "Handle buffer: URLs that refer to Emacs buffers." - (let* ((buffer (get-buffer (url-filename url)))) - (if buffer - (progn - (set-buffer (generate-new-buffer " *buffer-data*")) - (insert "Content-type: text/html\n\n") - (insert-buffer-substring buffer) - (current-buffer)) - (error "No buffer named `%s'" item)))) - -(provide 'url-buffer) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-cache.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-cache.el deleted file mode 100644 index a6bf2847..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-cache.el +++ /dev/null @@ -1,203 +0,0 @@ -;;; url-cache.el --- Uniform Resource Locator retrieval tool -;; Author: $Author: fx $ -;; Created: $Date: 2002/01/22 17:53:45 $ -;; Version: $Revision: 1.4 $ -;; Keywords: comm, data, processes, hypermedia - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(require 'url-parse) - -(defcustom url-cache-directory - (expand-file-name "cache" url-configuration-directory) - "*The directory where cache files should be stored." - :type 'directory - :group 'url-file) - -;; Cache manager -(defun url-cache-file-writable-p (file) - "Follows the documentation of `file-writable-p', unlike `file-writable-p'." - (and (file-writable-p file) - (if (file-exists-p file) - (not (file-directory-p file)) - (file-directory-p (file-name-directory file))))) - -(defun url-cache-prepare (file) - "Makes it possible to cache data in FILE. -Creates any necessary parent directories, deleting any non-directory files -that would stop this. Returns nil if parent directories can not be -created. If FILE already exists as a non-directory, it changes -permissions of FILE or deletes FILE to make it possible to write a new -version of FILE. Returns nil if this can not be done. Returns nil if -FILE already exists as a directory. Otherwise, returns t, indicating that -FILE can be created or overwritten." - (cond - ((url-cache-file-writable-p file) - t) - ((file-directory-p file) - nil) - (t - (condition-case () - (or (make-directory (file-name-directory file) t) t) - (error nil))))) - -;;;###autoload -(defun url-store-in-cache (&optional buff) - "Store buffer BUFF in the cache." - (if (not (and buff (get-buffer buff))) - nil - (save-excursion - (and buff (set-buffer buff)) - (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))))))) - -;;;###autoload -(defun url-is-cached (url) - "Return non-nil if the URL is cached." - (let* ((fname (url-cache-create-filename url)) - (attribs (file-attributes fname))) - (and fname ; got a filename - (file-exists-p fname) ; file exists - (not (eq (nth 0 attribs) t)) ; Its not a directory - (nth 5 attribs)))) ; Can get last mod-time - -(defun url-cache-create-filename-human-readable (url) - "Return a filename in the local cache for URL" - (if url - (let* ((url (if (vectorp url) (url-recreate-url url) url)) - (urlobj (url-generic-parse-url url)) - (protocol (url-type urlobj)) - (hostname (url-host urlobj)) - (host-components - (cons - (user-real-login-name) - (cons (or protocol "file") - (reverse (split-string (or hostname "localhost") - (eval-when-compile - (regexp-quote "."))))))) - (fname (url-filename urlobj))) - (if (and fname (/= (length fname) 0) (= (aref fname 0) ?/)) - (setq fname (substring fname 1 nil))) - (if fname - (let ((slash nil)) - (setq fname - (mapconcat - (function - (lambda (x) - (cond - ((and (= ?/ x) slash) - (setq slash nil) - "%2F") - ((= ?/ x) - (setq slash t) - "/") - (t - (setq slash nil) - (char-to-string x))))) fname "")))) - - (setq fname (and fname - (mapconcat - (function (lambda (x) - (if (= x ?~) "" (char-to-string x)))) - fname "")) - fname (cond - ((null fname) nil) - ((or (string= "" fname) (string= "/" fname)) - url-directory-index-file) - ((= (string-to-char fname) ?/) - (if (string= (substring fname -1 nil) "/") - (concat fname url-directory-index-file) - (substring fname 1 nil))) - (t - (if (string= (substring fname -1 nil) "/") - (concat fname url-directory-index-file) - fname)))) - (and fname - (expand-file-name fname - (expand-file-name - (mapconcat 'identity host-components "/") - url-cache-directory)))))) - -(defun url-cache-create-filename-using-md5 (url) - "Create a cached filename using MD5. - Very fast if you are in XEmacs, suitably fast otherwise." - (require 'md5) - (if url - (let* ((url (if (vectorp url) (url-recreate-url url) url)) - (checksum (md5 url)) - (urlobj (url-generic-parse-url url)) - (protocol (url-type urlobj)) - (hostname (url-host urlobj)) - (host-components - (cons - (user-real-login-name) - (cons (or protocol "file") - (nreverse - (delq nil - (split-string (or hostname "localhost") - (eval-when-compile - (regexp-quote ".")))))))) - (fname (url-filename urlobj))) - (and fname - (expand-file-name checksum - (expand-file-name - (mapconcat 'identity host-components "/") - url-cache-directory)))))) - -(defcustom url-cache-creation-function 'url-cache-create-filename-using-md5 - "*What function to use to create a cached filename." - :type '(choice (const :tag "MD5 of filename (low collision rate)" - :value url-cache-create-filename-using-md5) - (const :tag "Human readable filenames (higher collision rate)" - :value url-cache-create-filename-human-readable) - (function :tag "Other")) - :group 'url-cache) - -(defun url-cache-create-filename (url) - (funcall url-cache-creation-function url)) - -;;;###autoload -(defun url-cache-extract (fnam) - "Extract FNAM from the local disk cache" - (erase-buffer) - (insert-file-contents-literally fnam)) - -;;;###autoload -(defun url-cache-expired (url mod) - "Return t iff a cached file has expired." - (let* ((urlobj (if (vectorp url) url (url-generic-parse-url url))) - (type (url-type urlobj))) - (cond - (url-standalone-mode - (not (file-exists-p (url-cache-create-filename url)))) - ((string= type "http") - t) - ((member type '("file" "ftp")) - (if (or (equal mod '(0 0)) (not mod)) - t - (or (> (nth 0 mod) (nth 0 (current-time))) - (> (nth 1 mod) (nth 1 (current-time)))))) - (t nil)))) - -(provide 'url-cache) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-cid.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-cid.el deleted file mode 100644 index be380387..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-cid.el +++ /dev/null @@ -1,65 +0,0 @@ -;;; url-cid.el --- Content-ID URL loader -;; Author: $Author: fx $ -;; Created: $Date: 2001/05/05 16:35:58 $ -;; Version: $Revision: 1.3 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1998 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require 'url-vars) -(require 'url-parse) - -(require 'mm-decode) - -(defun url-cid-gnus (cid) - (let ((content-type nil) - (encoding nil) - (part nil) - (data nil)) - (setq part (mm-get-content-id cid)) - (if (not part) - (message "Unknown CID encountered: %s" cid) - (setq data (save-excursion - (set-buffer (mm-handle-buffer part)) - (buffer-string)) - content-type (mm-handle-type part) - encoding (symbol-name (mm-handle-encoding part))) - (if (= 0 (length content-type)) (setq content-type "text/plain")) - (if (= 0 (length encoding)) (setq encoding "8bit")) - (if (listp content-type) - (setq content-type (car content-type))) - (insert (format "Content-type: %d\r\n" (length data)) - "Content-type: " content-type "\r\n" - "Content-transfer-encoding: " encoding "\r\n" - "\r\n" - (or data ""))))) - -;;;###autoload -(defun url-cid (url) - (cond - ((fboundp 'mm-get-content-id) - ;; Using Pterodactyl Gnus or later - (save-excursion - (set-buffer (generate-new-buffer " *url-cid*")) - (url-cid-gnus (url-filename url)))) - (t - (message "Unable to handle CID URL: %s" url)))) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-cookie.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-cookie.el deleted file mode 100644 index eca89cb0..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-cookie.el +++ /dev/null @@ -1,468 +0,0 @@ -;;; url-cookie.el --- Netscape Cookie support -;; Author: $Author: wmperry $ -;; Created: $Date: 2002/10/29 14:44:59 $ -;; Version: $Revision: 1.7 $ -;; Keywords: comm, data, processes, hypermedia - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require 'timezone) -(require 'url-util) -(require 'url-parse) -(eval-when-compile (require 'cl)) - -;; See http://home.netscape.com/newsref/std/cookie_spec.html for the -;; 'open standard' defining this crap. -;; -;; A cookie is stored internally as a vector of 7 slots -;; [ 'cookie name value expires path domain secure ] - -(defsubst url-cookie-name (cookie) (aref cookie 1)) -(defsubst url-cookie-value (cookie) (aref cookie 2)) -(defsubst url-cookie-expires (cookie) (aref cookie 3)) -(defsubst url-cookie-path (cookie) (aref cookie 4)) -(defsubst url-cookie-domain (cookie) (aref cookie 5)) -(defsubst url-cookie-secure (cookie) (aref cookie 6)) - -(defsubst url-cookie-set-name (cookie val) (aset cookie 1 val)) -(defsubst url-cookie-set-value (cookie val) (aset cookie 2 val)) -(defsubst url-cookie-set-expires (cookie val) (aset cookie 3 val)) -(defsubst url-cookie-set-path (cookie val) (aset cookie 4 val)) -(defsubst url-cookie-set-domain (cookie val) (aset cookie 5 val)) -(defsubst url-cookie-set-secure (cookie val) (aset cookie 6 val)) -(defsubst url-cookie-retrieve-arg (key args) (nth 1 (memq key args))) - -(defsubst url-cookie-create (&rest args) - (let ((retval (make-vector 7 nil))) - (aset retval 0 'cookie) - (url-cookie-set-name retval (url-cookie-retrieve-arg :name args)) - (url-cookie-set-value retval (url-cookie-retrieve-arg :value args)) - (url-cookie-set-expires retval (url-cookie-retrieve-arg :expires args)) - (url-cookie-set-path retval (url-cookie-retrieve-arg :path args)) - (url-cookie-set-domain retval (url-cookie-retrieve-arg :domain args)) - (url-cookie-set-secure retval (url-cookie-retrieve-arg :secure args)) - retval)) - -(defun url-cookie-p (obj) - (and (vectorp obj) (= (length obj) 7) (eq (aref obj 0) 'cookie))) - -(defgroup url-cookie nil - "URL cookies" - :prefix "url-" - :prefix "url-cookie-" - :group 'url) - -(defvar url-cookie-storage nil "Where cookies are stored.") -(defvar url-cookie-secure-storage nil "Where secure cookies are stored.") -(defcustom url-cookie-file nil "*Where cookies are stored on disk." - :type '(choice (const :tag "Default" :value nil) file) - :group 'url-file - :group 'url-cookie) - -(defcustom url-cookie-confirmation nil - "*If non-nil, confirmation by the user is required to accept HTTP cookies." - :type 'boolean - :group 'url-cookie) - -(defcustom url-cookie-multiple-line nil - "*If nil, HTTP requests put all cookies for the server on one line. -Some web servers, such as http://www.hotmail.com/, only accept cookies -when they are on one line. This is broken behaviour, but just try -telling Microsoft that.") - -(defvar url-cookies-changed-since-last-save nil - "Whether the cookies list has changed since the last save operation.") - -;;;###autoload -(defun url-cookie-parse-file (&optional fname) - (setq fname (or fname url-cookie-file)) - (condition-case () - (load fname nil t) - (error (message "Could not load cookie file %s" fname)))) - -(defun url-cookie-clean-up (&optional secure) - (let* ( - (var (if secure 'url-cookie-secure-storage 'url-cookie-storage)) - (val (symbol-value var)) - (cur nil) - (new nil) - (cookies nil) - (cur-cookie nil) - (new-cookies nil) - ) - (while val - (setq cur (car val) - val (cdr val) - new-cookies nil - cookies (cdr cur)) - (while cookies - (setq cur-cookie (car cookies) - cookies (cdr cookies)) - (if (or (not (url-cookie-p cur-cookie)) - (url-cookie-expired-p cur-cookie) - (null (url-cookie-expires cur-cookie))) - nil - (setq new-cookies (cons cur-cookie new-cookies)))) - (if (not new-cookies) - nil - (setcdr cur new-cookies) - (setq new (cons cur new)))) - (set var new))) - -;;;###autoload -(defun url-cookie-write-file (&optional fname) - (setq fname (or fname url-cookie-file)) - (cond - ((not url-cookies-changed-since-last-save) nil) - ((not (file-writable-p fname)) - (message "Cookies file %s (see variable `url-cookie-file') is unwritable." fname)) - (t - (url-cookie-clean-up) - (url-cookie-clean-up t) - (save-excursion - (set-buffer (get-buffer-create " *cookies*")) - (erase-buffer) - (fundamental-mode) - (insert ";; Emacs-W3 HTTP cookies file\n" - ";; Automatically generated file!!! DO NOT EDIT!!!\n\n" - "(setq url-cookie-storage\n '") - (pp url-cookie-storage (current-buffer)) - (insert ")\n(setq url-cookie-secure-storage\n '") - (pp url-cookie-secure-storage (current-buffer)) - (insert ")\n") - (write-file fname) - (kill-buffer (current-buffer)))))) - -(defun url-cookie-store (name value &optional expires domain path secure) - "Stores a netscape-style cookie" - (let* ((storage (if secure url-cookie-secure-storage url-cookie-storage)) - (tmp storage) - (cur nil) - (found-domain nil)) - - ;; First, look for a matching domain - (setq found-domain (assoc domain storage)) - - (if found-domain - ;; Need to either stick the new cookie in existing domain storage - ;; or possibly replace an existing cookie if the names match. - (progn - (setq storage (cdr found-domain) - tmp nil) - (while storage - (setq cur (car storage) - storage (cdr storage)) - (if (and (equal path (url-cookie-path cur)) - (equal name (url-cookie-name cur))) - (progn - (url-cookie-set-expires cur expires) - (url-cookie-set-value cur value) - (setq tmp t)))) - (if (not tmp) - ;; New cookie - (setcdr found-domain (cons - (url-cookie-create :name name - :value value - :expires expires - :domain domain - :path path - :secure secure) - (cdr found-domain))))) - ;; Need to add a new top-level domain - (setq tmp (url-cookie-create :name name - :value value - :expires expires - :domain domain - :path path - :secure secure)) - (cond - (storage - (setcdr storage (cons (list domain tmp) (cdr storage)))) - (secure - (setq url-cookie-secure-storage (list (list domain tmp)))) - (t - (setq url-cookie-storage (list (list domain tmp)))))))) - -(defun url-cookie-expired-p (cookie) - (let* ( - (exp (url-cookie-expires cookie)) - (cur-date (and exp (timezone-parse-date (current-time-string)))) - (exp-date (and exp (timezone-parse-date exp))) - (cur-greg (and cur-date (timezone-absolute-from-gregorian - (string-to-int (aref cur-date 1)) - (string-to-int (aref cur-date 2)) - (string-to-int (aref cur-date 0))))) - (exp-greg (and exp (timezone-absolute-from-gregorian - (string-to-int (aref exp-date 1)) - (string-to-int (aref exp-date 2)) - (string-to-int (aref exp-date 0))))) - (diff-in-days (and exp (- cur-greg exp-greg))) - ) - (cond - ((not exp) nil) ; No expiry == expires at browser quit - ((< diff-in-days 0) nil) ; Expires sometime after today - ((> diff-in-days 0) t) ; Expired before today - (t ; Expires sometime today, check times - (let* ((cur-time (timezone-parse-time (aref cur-date 3))) - (exp-time (timezone-parse-time (aref exp-date 3))) - (cur-norm (+ (* 360 (string-to-int (aref cur-time 2))) - (* 60 (string-to-int (aref cur-time 1))) - (* 1 (string-to-int (aref cur-time 0))))) - (exp-norm (+ (* 360 (string-to-int (aref exp-time 2))) - (* 60 (string-to-int (aref exp-time 1))) - (* 1 (string-to-int (aref exp-time 0)))))) - (> (- cur-norm exp-norm) 1)))))) - -;;;###autoload -(defun url-cookie-retrieve (host path &optional secure) - "Retrieves all the netscape-style cookies for a specified HOST and PATH" - (let ((storage (if secure - (append url-cookie-secure-storage url-cookie-storage) - url-cookie-storage)) - (case-fold-search t) - (cookies nil) - (cur nil) - (retval nil) - (path-regexp nil)) - (while storage - (setq cur (car storage) - storage (cdr storage) - cookies (cdr cur)) - (if (and (car cur) - (string-match (concat "^.*" (regexp-quote (car cur)) "$") host)) - ;; The domains match - a possible hit! - (while cookies - (setq cur (car cookies) - cookies (cdr cookies) - path-regexp (concat "^" (regexp-quote - (url-cookie-path cur)))) - (if (and (string-match path-regexp path) - (not (url-cookie-expired-p cur))) - (setq retval (cons cur retval)))))) - retval)) - -;;;###autolaod -(defun url-cookie-generate-header-lines (host path secure) - (let* ((cookies (url-cookie-retrieve host path secure)) - (retval nil) - (cur nil) - (chunk nil)) - ;; Have to sort this for sending most specific cookies first - (setq cookies (and cookies - (sort cookies - (function - (lambda (x y) - (> (length (url-cookie-path x)) - (length (url-cookie-path y)))))))) - (while cookies - (setq cur (car cookies) - cookies (cdr cookies) - chunk (format "%s=%s" (url-cookie-name cur) (url-cookie-value cur)) - retval (if (and url-cookie-multiple-line - (< 80 (+ (length retval) (length chunk) 4))) - (concat retval "\r\nCookie: " chunk) - (if retval - (concat retval "; " chunk) - (concat "Cookie: " chunk))))) - (if retval - (concat retval "\r\n") - ""))) - -(defvar url-cookie-two-dot-domains - (concat "\\.\\(" - (mapconcat 'identity (list "com" "edu" "net" "org" "gov" "mil" "int") - "\\|") - "\\)$") - "A regular expression of top-level domains that only require two matching -'.'s in the domain name in order to set a cookie.") - -(defcustom url-cookie-trusted-urls nil - "*A list of regular expressions matching URLs to always accept cookies from." - :type '(repeat regexp) - :group 'url-cookie) - -(defcustom url-cookie-untrusted-urls nil - "*A list of regular expressions matching URLs to never accept cookies from." - :type '(repeat regexp) - :group 'url-cookie) - -(defun url-cookie-host-can-set-p (host domain) - (let ((numdots 0) - (tmp domain) - (last nil) - (case-fold-search t) - (mindots 3)) - (while (setq last (string-match "\\." domain last)) - (setq numdots (1+ numdots) - last (1+ last))) - (if (string-match url-cookie-two-dot-domains domain) - (setq mindots 2)) - (cond - ((string= host domain) ; Apparently netscape lets you do this - t) - ((>= numdots mindots) ; We have enough dots in domain name - ;; Need to check and make sure the host is actually _in_ the - ;; domain it wants to set a cookie for though. - (string-match (concat (regexp-quote domain) "$") host)) - (t - nil)))) - -;;;###autoload -(defun url-cookie-handle-set-cookie (str) - (setq url-cookies-changed-since-last-save t) - (let* ((args (url-parse-args str t)) - (case-fold-search t) - (secure (and (assoc-ignore-case "secure" args) t)) - (domain (or (cdr-safe (assoc-ignore-case "domain" args)) - (url-host url-current-object))) - (current-url (url-view-url t)) - (trusted url-cookie-trusted-urls) - (untrusted url-cookie-untrusted-urls) - (expires (cdr-safe (assoc-ignore-case "expires" args))) - (path (or (cdr-safe (assoc-ignore-case "path" args)) - (file-name-directory - (url-filename url-current-object)))) - (rest nil)) - (while args - (if (not (member (downcase (car (car args))) - '("secure" "domain" "expires" "path"))) - (setq rest (cons (car args) rest))) - (setq args (cdr args))) - - ;; Sometimes we get dates that the timezone package cannot handle very - ;; gracefully - take care of this here, instead of in url-cookie-expired-p - ;; to speed things up. - (if (and expires - (string-match - (concat "^[^,]+, +\\(..\\)-\\(...\\)-\\(..\\) +" - "\\(..:..:..\\) +\\[*\\([^\]]+\\)\\]*$") - expires)) - (setq expires (concat (match-string 1 expires) " " - (match-string 2 expires) " " - (match-string 3 expires) " " - (match-string 4 expires) " [" - (match-string 5 expires) "]"))) - - ;; This one is for older Emacs/XEmacs variants that don't - ;; understand this format without tenths of a second in it. - ;; Wednesday, 30-Dec-2037 16:00:00 GMT - ;; - vs - - ;; Wednesday, 30-Dec-2037 16:00:00.00 GMT - (if (and expires - (string-match - "\\([0-9]+\\)-\\([A-Za-z]+\\)-\\([0-9]+\\)[ \t]+\\([0-9]+:[0-9]+:[0-9]+\\)\\(\\.[0-9]+\\)*[ \t]+\\([-+a-zA-Z0-9]+\\)" - expires)) - (setq expires (concat (match-string 1 expires) "-" ; day - (match-string 2 expires) "-" ; month - (match-string 3 expires) " " ; year - (match-string 4 expires) ".00 " ; hour:minutes:seconds - (match-string 6 expires)))) ":" ; timezone - - (while (consp trusted) - (if (string-match (car trusted) current-url) - (setq trusted (- (match-end 0) (match-beginning 0))) - (pop trusted))) - (while (consp untrusted) - (if (string-match (car untrusted) current-url) - (setq untrusted (- (match-end 0) (match-beginning 0))) - (pop untrusted))) - (if (and trusted untrusted) - ;; Choose the more specific match - (if (> trusted untrusted) - (setq untrusted nil) - (setq trusted nil))) - (cond - (untrusted - ;; The site was explicity marked as untrusted by the user - nil) - ((or (eq url-privacy-level 'paranoid) - (and (listp url-privacy-level) (memq 'cookies url-privacy-level))) - ;; user never wants cookies - nil) - ((and url-cookie-confirmation - (not trusted) - (save-window-excursion - (with-output-to-temp-buffer "*Cookie Warning*" - (mapcar - (function - (lambda (x) - (princ (format "%s - %s" (car x) (cdr x))))) rest)) - (prog1 - (not (funcall url-confirmation-func - (format "Allow %s to set these cookies? " - (url-host url-current-object)))) - (if (get-buffer "*Cookie Warning*") - (kill-buffer "*Cookie Warning*"))))) - ;; user wants to be asked, and declined. - nil) - ((url-cookie-host-can-set-p (url-host url-current-object) domain) - ;; Cookie is accepted by the user, and passes our security checks - (let ((cur nil)) - (while rest - (setq cur (pop rest)) - (url-cookie-store (car cur) (cdr cur) - expires domain path secure)))) - (t - (message "%s tried to set a cookie for domain %s - rejected." - (url-host url-current-object) domain))))) - -(defvar url-cookie-timer nil) - -(defcustom url-cookie-save-interval 3600 - "*The number of seconds between automatic saves of cookies. -Default is 1 hour. Note that if you change this variable outside of -the `customize' interface after `url-do-setup' has been run, you need -to run the `url-cookie-setup-save-timer' function manually." - :set (function (lambda (var val) - (set-default var val) - (and (featurep 'url) - (fboundp 'url-cookie-setup-save-timer) - (url-cookie-setup-save-timer)))) - :type 'integer - :group 'url) - -;;;###autoload -(defun url-cookie-setup-save-timer () - "Reset the cookie saver timer." - (interactive) - (cond - ((featurep 'itimer) - (ignore-errors (delete-itimer url-cookie-timer)) - (setq url-cookie-timer nil) - (if url-cookie-save-interval - (setq url-cookie-timer - (start-itimer "url-cookie-saver" 'url-cookie-write-file - url-cookie-save-interval - url-cookie-save-interval)))) - ((fboundp 'run-at-time) - (ignore-errors (cancel-timer url-cookie-timer)) - (setq url-cookie-timer nil) - (if url-cookie-save-interval - (setq url-cookie-timer - (run-at-time url-cookie-save-interval - url-cookie-save-interval - 'url-cookie-write-file)))) - (t nil))) - -(provide 'url-cookie) - diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-dav.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-dav.el deleted file mode 100644 index ed5f0437..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-dav.el +++ /dev/null @@ -1,973 +0,0 @@ -;;; url-dav.el --- WebDAV support - -;; Copyright (C) 2001 Free Software Foundation, Inc. - -;; Author: Bill Perry -;; Maintainer: Bill Perry -;; Version: $Revision: 1.6 $ -;; Keywords: url, vc - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -(eval-when-compile - (require 'cl)) - -(require 'xml) -(require 'url-util) -(require 'url-handlers) - -(defvar url-dav-supported-protocols '(1 2) - "List of supported DAV versions.") - -;;;###autoload -(defun url-dav-supported-p (url) - (and (featurep 'xml) - (fboundp 'xml-expand-namespace) - (intersection url-dav-supported-protocols - (plist-get (url-http-options url) 'dav)))) - -(defun url-dav-node-text (node) - "Return the text data from the XML node NODE." - (mapconcat (lambda (txt) - (if (stringp txt) - txt - "")) (xml-node-children node) " ")) - - -;;; Parsing routines for the actual node contents. -;;; -;;; I am not incredibly happy with how this code looks/works right -;;; now, but it DOES work, and if we get the API right, our callers -;;; won't have to worry about the internal representation. - -(defconst url-dav-datatype-attribute - 'urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/dt) - -(defun url-dav-process-integer-property (node) - (truncate (string-to-number (url-dav-node-text node)))) - -(defun url-dav-process-number-property (node) - (string-to-number (url-dav-node-text node))) - -(defconst url-dav-iso8601-regexp - (let* ((dash "-?") - (colon ":?") - (4digit "\\([0-9][0-9][0-9][0-9]\\)") - (2digit "\\([0-9][0-9]\\)") - (date-fullyear 4digit) - (date-month 2digit) - (date-mday 2digit) - (time-hour 2digit) - (time-minute 2digit) - (time-second 2digit) - (time-secfrac "\\(\\.[0-9]+\\)?") - (time-numoffset (concat "[-+]\\(" time-hour "\\):" time-minute)) - (time-offset (concat "Z" time-numoffset)) - (partial-time (concat time-hour colon time-minute colon time-second - time-secfrac)) - (full-date (concat date-fullyear dash date-month dash date-mday)) - (full-time (concat partial-time time-offset)) - (date-time (concat full-date "T" full-time))) - (list (concat "^" full-date) - (concat "T" partial-time) - (concat "Z" time-numoffset))) - "List of regular expressions matching iso8601 dates. -1st regular expression matches the date. -2nd regular expression matches the time. -3rd regular expression matches the (optional) timezone specification. -") - -(defun url-dav-process-date-property (node) - (require 'parse-time) - (let* ((date-re (nth 0 url-dav-iso8601-regexp)) - (time-re (nth 1 url-dav-iso8601-regexp)) - (tz-re (nth 2 url-dav-iso8601-regexp)) - (date-string (url-dav-node-text node)) - re-start - time seconds minute hour fractional-seconds - day month year day-of-week dst tz) - ;; We need to populate 'time' with - ;; (SEC MIN HOUR DAY MON YEAR DOW DST TZ) - - ;; Nobody else handles iso8601 correctly, lets do it ourselves. - (when (string-match date-re date-string re-start) - (setq year (string-to-int (match-string 1 date-string)) - month (string-to-int (match-string 2 date-string)) - day (string-to-int (match-string 3 date-string)) - re-start (match-end 0)) - (when (string-match time-re date-string re-start) - (setq hour (string-to-int (match-string 1 date-string)) - minute (string-to-int (match-string 2 date-string)) - seconds (string-to-int (match-string 3 date-string)) - fractional-seconds (string-to-int (or - (match-string 4 date-string) - "0")) - re-start (match-end 0)) - (when (string-match tz-re date-string re-start) - (setq tz (match-string 1 date-string))) - (url-debug 'dav "Parsed iso8601%s date" (if tz "tz" "")) - (setq time (list seconds minute hour day month year day-of-week dst tz)))) - - ;; Fall back to having Gnus do fancy things for us. - (when (not time) - (setq time (parse-time-string date-string))) - - (if time - (setq time (apply 'encode-time time)) - (url-debug 'dav "Unable to decode date (%S) (%s)" - (xml-node-name node) date-string)) - time)) - -(defun url-dav-process-boolean-property (node) - (/= 0 (string-to-int (url-dav-node-text node)))) - -(defun url-dav-process-uri-property (node) - ;; Returns a parsed representation of the URL... - (url-generic-parse-url (url-dav-node-text node))) - -(defun url-dav-find-parser (node) - "Find a function to parse the XML node NODE." - (or (get (xml-node-name node) 'dav-parser) - (let ((fn (intern (format "url-dav-process-%s" (xml-node-name node))))) - (if (not (fboundp fn)) - (setq fn 'url-dav-node-text) - (put (xml-node-name node) 'dav-parser fn)) - fn))) - -(defmacro url-dav-dispatch-node (node) - `(funcall (url-dav-find-parser ,node) ,node)) - -(defun url-dav-process-DAV:prop (node) - ;; A prop node has content model of ANY - ;; - ;; Some predefined nodes have special meanings though. - ;; - ;; DAV:supportedlock - list of DAV:lockentry - ;; DAV:source - ;; DAV:iscollection - boolean - ;; DAV:getcontentlength - integer - ;; DAV:ishidden - boolean - ;; DAV:getcontenttype - string - ;; DAV:resourcetype - node who's name is the resource type - ;; DAV:getlastmodified - date - ;; DAV:creationdate - date - ;; DAV:displayname - string - ;; DAV:getetag - unknown - (let ((children (xml-node-children node)) - (node-type nil) - (props nil) - (value nil) - (handler-func nil)) - (when (not children) - (error "No child nodes in DAV:prop")) - - (while children - (setq node (car children) - node-type (intern - (or - (cdr-safe (assq url-dav-datatype-attribute - (xml-node-attributes node))) - "unknown")) - value nil) - - (case node-type - ((dateTime.iso8601tz - dateTime.iso8601 - dateTime.tz - dateTime.rfc1123 - dateTime - date) ; date is our 'special' one... - ;; Some type of date/time string. - (setq value (url-dav-process-date-property node))) - (int - ;; Integer type... - (setq value (url-dav-process-integer-property node))) - ((number float) - (setq value (url-dav-process-number-property node))) - (boolean - (setq value (url-dav-process-boolean-property node))) - (uri - (setq value (url-dav-process-uri-property node))) - (otherwise - (if (not (eq node-type 'unknown)) - (url-debug 'dav "Unknown data type in url-dav-process-prop: %s" - node-type)) - (setq value (url-dav-dispatch-node node)))) - - (setq props (plist-put props (xml-node-name node) value) - children (cdr children))) - props)) - -(defun url-dav-process-DAV:supportedlock (node) - ;; DAV:supportedlock is a list of DAV:lockentry items. - ;; DAV:lockentry in turn contains a DAV:lockscope and DAV:locktype. - ;; The DAV:lockscope must have a single node beneath it, ditto for - ;; DAV:locktype. - (let ((children (xml-node-children node)) - (results nil) - scope type) - (while children - (when (and (not (stringp (car children))) - (eq (xml-node-name (car children)) 'DAV:lockentry)) - (setq scope (assq 'DAV:lockscope (xml-node-children (car children))) - type (assq 'DAV:locktype (xml-node-children (car children)))) - (when (and scope type) - (setq scope (xml-node-name (car (xml-node-children scope))) - type (xml-node-name (car (xml-node-children type)))) - (push (cons type scope) results))) - (setq children (cdr children))) - results)) - -(defun url-dav-process-subnode-property (node) - ;; Returns a list of child node names. - (delq nil (mapcar 'car-safe (xml-node-children node)))) - -(defalias 'url-dav-process-DAV:depth 'url-dav-process-integer-property) -(defalias 'url-dav-process-DAV:resourcetype 'url-dav-process-subnode-property) -(defalias 'url-dav-process-DAV:locktype 'url-dav-process-subnode-property) -(defalias 'url-dav-process-DAV:lockscope 'url-dav-process-subnode-property) -(defalias 'url-dav-process-DAV:getcontentlength 'url-dav-process-integer-property) -(defalias 'url-dav-process-DAV:getlastmodified 'url-dav-process-date-property) -(defalias 'url-dav-process-DAV:creationdate 'url-dav-process-date-property) -(defalias 'url-dav-process-DAV:iscollection 'url-dav-process-boolean-property) -(defalias 'url-dav-process-DAV:ishidden 'url-dav-process-boolean-property) - -(defun url-dav-process-DAV:locktoken (node) - ;; DAV:locktoken can have one or more DAV:href children. - (delq nil (mapcar (lambda (n) - (if (stringp n) - n - (url-dav-dispatch-node n))) - (xml-node-children node)))) - -(defun url-dav-process-DAV:owner (node) - ;; DAV:owner can contain anything. - (delq nil (mapcar (lambda (n) - (if (stringp n) - n - (url-dav-dispatch-node n))) - (xml-node-children node)))) - -(defun url-dav-process-DAV:activelock (node) - ;; DAV:activelock can contain: - ;; DAV:lockscope - ;; DAV:locktype - ;; DAV:depth - ;; DAV:owner (optional) - ;; DAV:timeout (optional) - ;; DAV:locktoken (optional) - (let ((children (xml-node-children node)) - (results nil)) - (while children - (if (listp (car children)) - (push (cons (xml-node-name (car children)) - (url-dav-dispatch-node (car children))) - results)) - (setq children (cdr children))) - results)) - -(defun url-dav-process-DAV:lockdiscovery (node) - ;; Can only contain a list of DAV:activelock objects. - (let ((children (xml-node-children node)) - (results nil)) - (while children - (cond - ((stringp (car children)) - ;; text node? why? - nil) - ((eq (xml-node-name (car children)) 'DAV:activelock) - (push (url-dav-dispatch-node (car children)) results)) - (t - ;; Ignore unknown nodes... - nil)) - (setq children (cdr children))) - results)) - -(defun url-dav-process-DAV:status (node) - ;; The node contains a standard HTTP/1.1 response line... we really - ;; only care about the numeric status code. - (let ((status (url-dav-node-text node))) - (if (string-match "\\`[ \r\t\n]*HTTP/[0-9.]+ \\([0-9]+\\)" status) - (string-to-int (match-string 1 status)) - 500))) - -(defun url-dav-process-DAV:propstat (node) - ;; A propstate node can have the following children... - ;; - ;; DAV:prop - a list of properties and values - ;; DAV:status - An HTTP/1.1 status line - (let ((children (xml-node-children node)) - (props nil) - (status nil)) - (when (not children) - (error "No child nodes in DAV:propstat")) - - (setq props (url-dav-dispatch-node (assq 'DAV:prop children)) - status (url-dav-dispatch-node (assq 'DAV:status children))) - - ;; Need to parse out the HTTP status - (setq props (plist-put props 'DAV:status status)) - props)) - -(defun url-dav-process-DAV:response (node) - (let ((children (xml-node-children node)) - (propstat nil) - (href)) - (when (not children) - (error "No child nodes in DAV:response")) - - ;; A response node can have the following children... - ;; - ;; DAV:href - URL the response is for. - ;; DAV:propstat - see url-dav-process-propstat - ;; DAV:responsedescription - text description of the response - (setq propstat (assq 'DAV:propstat children) - href (assq 'DAV:href children)) - - (when (not href) - (error "No href in DAV:response")) - - (when (not propstat) - (error "No propstat in DAV:response")) - - (setq propstat (url-dav-dispatch-node propstat) - href (url-dav-dispatch-node href)) - (cons href propstat))) - -(defun url-dav-process-DAV:multistatus (node) - (let ((children (xml-node-children node)) - (results nil)) - (while children - (push (url-dav-dispatch-node (car children)) results) - (setq children (cdr children))) - results)) - - -;;; DAV request/response generation/processing -(defun url-dav-process-response (buffer url) - "Parses a WebDAV response from BUFFER, interpreting it relative to URL. - -The buffer must have been retrieved by HTTP or HTTPS and contain an -XML document. -" - (declare (special url-http-content-type - url-http-response-status - url-http-end-of-headers)) - (let ((tree nil) - (overall-status nil)) - (when buffer - (unwind-protect - (save-excursion - (set-buffer buffer) - (goto-char url-http-end-of-headers) - (setq overall-status url-http-response-status) - - ;; XML documents can be transferred as either text/xml or - ;; application/xml, and we are required to accept both of - ;; them. - (if (and - url-http-content-type - (or (string-match "^text/xml" url-http-content-type) - (string-match "^application/xml" url-http-content-type))) - (setq tree (xml-parse-region (point) (point-max))))) - ;; Clean up after ourselves. - '(kill-buffer buffer))) - - ;; We should now be - (if (eq (xml-node-name (car tree)) 'DAV:multistatus) - (url-dav-dispatch-node (car tree)) - (url-debug 'dav "Got back singleton response for URL(%S)" url) - (let ((properties (url-dav-dispatch-node (car tree)))) - ;; We need to make sure we have a DAV:status node in there for - ;; higher-level code; - (setq properties (plist-put properties 'DAV:status overall-status)) - ;; Make this look like a DAV:multistatus parse tree so that - ;; nobody but us needs to know the difference. - (list (cons url properties)))))) - -(defun url-dav-request (url method tag body - &optional depth headers namespaces) - "Performs WebDAV operation METHOD on URL. Returns the parsed responses. -Automatically creates an XML request body if TAG is non-nil. -BODY is the XML document fragment to be enclosed by . - -DEPTH is how deep the request should propogate. Default is 0, meaning -it should apply only to URL. A negative number means to use -`Infinity' for the depth. Not all WebDAV servers support this depth -though. - -HEADERS is an assoc list of extra headers to send in the request. - -NAMESPACES is an assoc list of (NAMESPACE . EXPANSION), and these are -added to the element. The DAV=DAV: namespace is automatically -added to this list, so most requests can just pass in nil. -" - ;; Take care of the default value for depth... - (setq depth (or depth 0)) - - ;; Now lets translate it into something webdav can understand. - (if (< depth 0) - (setq depth "Infinity") - (setq depth (int-to-string depth))) - (if (not (assoc "DAV" namespaces)) - (setq namespaces (cons '("DAV" . "DAV:") namespaces))) - - (let* ((url-request-extra-headers `(("Depth" . ,depth) - ("Content-type" . "text/xml") - ,@headers)) - (url-request-method method) - (url-request-data - (if tag - (concat - "\n" - "<" (symbol-name tag) " " - ;; add in the appropriate namespaces... - (mapconcat (lambda (ns) - (concat "xmlns:" (car ns) "='" (cdr ns) "'")) - namespaces "\n ") - ">\n" - body - "\n")))) - (url-dav-process-response (url-retrieve-synchronously url) url))) - -;;;###autoload -(defun url-dav-get-properties (url &optional attributes depth namespaces) - "Return properties for URL, up to DEPTH levels deep. - -Returns an assoc list, where the key is the filename (possibly a full -URI), and the value is a standard property list of DAV property -names (ie: DAV:resourcetype). -" - (url-dav-request url "PROPFIND" 'DAV:propfind - (if attributes - (mapconcat (lambda (attr) - (concat "<" - (symbol-name attr) - "/>")) - attributes "\n ") - " ") - depth nil namespaces)) - -(defmacro url-dav-http-success-p (status) - "Return whether PROPERTIES was the result of a successful DAV request." - `(= (/ (or ,status 500) 100) 2)) - - -;;; Locking support -(defvar url-dav-lock-identifier (concat "mailto:" user-mail-address) - "*URL used as contact information when creating locks in DAV. -This will be used as the contents of the DAV:owner/DAV:href tag to -identify the owner of a LOCK when requesting it. This will be shown -to other users when the DAV:lockdiscovery property is requested, so -make sure you are comfortable with it leaking to the outside world. -") - -;;;###autoload -(defun url-dav-lock-resource (url exclusive &optional depth) - "Request a lock on URL. If EXCLUSIVE is non-nil, get an exclusive lock. -Optional 3rd argument DEPTH says how deep the lock should go, default is 0 -\(lock only the resource and none of its children\). - -Returns a cons-cell of (SUCCESSFUL-RESULTS . FAILURE-RESULTS). -SUCCESSFUL-RESULTS is a list of (URL STATUS locktoken). -FAILURE-RESULTS is a list of (URL STATUS). -" - (setq exclusive (if exclusive "" "")) - (let* ((body - (concat - " " exclusive "\n" - " \n" - " \n" - " " url-dav-lock-identifier "\n" - " \n")) - (response nil) ; Responses to the LOCK request - (result nil) ; For walking thru the response list - (child-url nil) - (child-status nil) - (failures nil) ; List of failure cases (URL . STATUS) - (successes nil)) ; List of success cases (URL . STATUS) - (setq response (url-dav-request url "LOCK" 'DAV:lockinfo body - depth '(("Timeout" . "Infinite")))) - - ;; Get the parent URL ready for expand-file-name - (if (not (vectorp url)) - (setq url (url-generic-parse-url url))) - - ;; Walk thru the response list, fully expand the URL, and grab the - ;; status code. - (while response - (setq result (pop response) - child-url (url-expand-file-name (pop result) url) - child-status (or (plist-get result 'DAV:status) 500)) - (if (url-dav-http-success-p child-status) - (push (list url child-status "huh") successes) - (push (list url child-status) failures))) - (cons successes failures))) - -;;;###autoload -(defun url-dav-active-locks (url &optional depth) - "Return an assoc list of all active locks on URL." - (let ((response (url-dav-get-properties url '(DAV:lockdiscovery) depth)) - (properties nil) - (child nil) - (child-url nil) - (child-results nil) - (results nil)) - (if (not (vectorp url)) - (setq url (url-generic-parse-url url))) - - (while response - (setq child (pop response) - child-url (pop child) - child-results nil) - (when (and (url-dav-http-success-p (plist-get child 'DAV:status)) - (setq child (plist-get child 'DAV:lockdiscovery))) - ;; After our parser has had its way with it, The - ;; DAV:lockdiscovery property is a list of DAV:activelock - ;; objects, which are comprised of DAV:activelocks, which - ;; assoc lists of properties and values. - (while child - (if (assq 'DAV:locktoken (car child)) - (let ((tokens (cdr (assq 'DAV:locktoken (car child)))) - (owners (cdr (assq 'DAV:owner (car child))))) - (dolist (token tokens) - (dolist (owner owners) - (push (cons token owner) child-results))))) - (pop child))) - (if child-results - (push (cons (url-expand-file-name child-url url) child-results) - results))) - results)) - -;;;###autoload -(defun url-dav-unlock-resource (url lock-token) - "Release the lock on URL represented by LOCK-TOKEN. -Returns `t' iff the lock was successfully released. -" - (declare (special url-http-response-status)) - (let* ((url-request-extra-headers (list (cons "Lock-Token" - (concat "<" lock-token ">")))) - (url-request-method "UNLOCK") - (url-request-data nil) - (buffer (url-retrieve-synchronously url)) - (result nil)) - (when buffer - (unwind-protect - (save-excursion - (set-buffer buffer) - (setq result (url-dav-http-success-p url-http-response-status))) - (kill-buffer buffer))) - result)) - - -;;; file-name-handler stuff -(defun url-dav-file-attributes-mode-string (properties) - (let ((modes (make-string 10 ?-)) - (supported-locks (plist-get properties 'DAV:supportedlock)) - (executable-p (equal (plist-get properties 'http://apache.org/dav/props/executable) - "T")) - (directory-p (memq 'DAV:collection (plist-get properties 'DAV:resourcetype))) - (readable t) - (lock nil)) - ;; Assume we can read this, otherwise the PROPFIND would have - ;; failed. - (when readable - (aset modes 1 ?r) - (aset modes 4 ?r) - (aset modes 7 ?r)) - - (when directory-p - (aset modes 0 ?d)) - - (when executable-p - (aset modes 3 ?x) - (aset modes 6 ?x) - (aset modes 9 ?x)) - - (while supported-locks - (setq lock (car supported-locks) - supported-locks (cdr supported-locks)) - (case (car lock) - (DAV:write - (case (cdr lock) - (DAV:shared ; group permissions (possibly world) - (aset modes 5 ?w)) - (DAV:exclusive - (aset modes 2 ?w)) ; owner permissions? - (otherwise - (url-debug 'dav "Unrecognized DAV:lockscope (%S)" (cdr lock))))) - (otherwise - (url-debug 'dav "Unrecognized DAV:locktype (%S)" (car lock))))) - modes)) - -;;;###autoload -(defun url-dav-file-attributes (url) - (let ((properties (cdar (url-dav-get-properties url))) - (attributes nil)) - (if (and properties - (url-dav-http-success-p (plist-get properties 'DAV:status))) - ;; We got a good DAV response back.. - (setq attributes - (list - ;; t for directory, string for symbolic link, or nil - ;; Need to support DAV Bindings to figure out the - ;; symbolic link issues. - (if (memq 'DAV:collection (plist-get properties 'DAV:resourcetype)) t nil) - - ;; Number of links to file... Needs DAV Bindings. - 1 - - ;; File uid - no way to figure out? - 0 - - ;; File gid - no way to figure out? - 0 - - ;; Last access time - ??? - nil - - ;; Last modification time - (plist-get properties 'DAV:getlastmodified) - - ;; Last status change time... just reuse last-modified - ;; for now. - (plist-get properties 'DAV:getlastmodified) - - ;; size in bytes - (or (plist-get properties 'DAV:getcontentlength) 0) - - ;; file modes as a string like `ls -l' - ;; - ;; Should be able to build this up from the - ;; DAV:supportedlock attribute pretty easily. Getting - ;; the group info could be impossible though. - (url-dav-file-attributes-mode-string properties) - - ;; t iff file's gid would change if it were deleted & - ;; recreated. No way for us to know that thru DAV. - nil - - ;; inode number - meaningless - nil - - ;; device number - meaningless - nil)) - ;; Fall back to just the normal http way of doing things. - (setq attributes (url-http-head-file-attributes url))) - attributes)) - -;;;###autoload -(defun url-dav-save-resource (url obj &optional content-type lock-token) - "Save OBJ as URL using WebDAV. -URL must be a fully qualified URL. -OBJ may be a buffer or a string." - (let ((buffer nil) - (result nil) - (url-request-extra-headers nil) - (url-request-method "PUT") - (url-request-data - (cond - ((bufferp obj) - (save-excursion - (set-buffer obj) - (buffer-string))) - ((stringp obj) - obj) - (t - (error "Invalid object to url-dav-save-resource"))))) - - (if lock-token - (push - (cons "If" (concat "(<" lock-token ">)")) - url-request-extra-headers)) - - ;; Everything must always have a content-type when we submit it. - (push - (cons "Content-type" (or content-type "application/octet-stream")) - url-request-extra-headers) - - ;; Do the save... - (setq buffer (url-retrieve-synchronously url)) - - ;; Sanity checking - (when buffer - (unwind-protect - (save-excursion - (set-buffer buffer) - (setq result (url-dav-http-success-p url-http-response-status))) - (kill-buffer buffer))) - result)) - -(eval-when-compile - (defmacro url-dav-delete-something (url lock-token &rest error-checking) - "Delete URL completely, with no sanity checking whatsoever. DO NOT USE. -This is defined as a macro that will not be visible from compiled files. -Use with care, and even then think three times. -" - `(progn - ,@error-checking - (url-dav-request ,url "DELETE" nil nil -1 - (if ,lock-token - (list - (cons "If" - (concat "(<" ,lock-token ">)")))))))) - - -;;;###autoload -(defun url-dav-delete-directory (url &optional recursive lock-token) - "Delete the WebDAV collection URL. -If optional second argument RECURSIVE is non-nil, then delete all -files in the collection as well. -" - (let ((status nil) - (props nil) - (props nil)) - (setq props (url-dav-delete-something - url lock-token - (setq props (url-dav-get-properties url '(DAV:getcontenttype) 1)) - (if (and (not recursive) - (/= (length props) 1)) - (signal 'file-error (list "Removing directory" - "directory not empty" url))))) - - (mapc (lambda (result) - (setq status (plist-get (cdr result) 'DAV:status)) - (if (not (url-dav-http-success-p status)) - (signal 'file-error (list "Removing directory" - "Errror removing" - (car result) status)))) - props)) - nil) - -;;;###autoload -(defun url-dav-delete-file (url &optional lock-token) - "Delete file named URL." - (let ((props nil) - (status nil)) - (setq props (url-dav-delete-something - url lock-token - (setq props (url-dav-get-properties url)) - (if (eq (plist-get (cdar props) 'DAV:resourcetype) 'DAV:collection) - (signal 'file-error (list "Removing old name" "is a collection" url))))) - - (mapc (lambda (result) - (setq status (plist-get (cdr result) 'DAV:status)) - (if (not (url-dav-http-success-p status)) - (signal 'file-error (list "Removing old name" - "Errror removing" - (car result) status)))) - props)) - nil) - -;;;###autoload -(defun url-dav-directory-files (url &optional full match nosort files-only) - "Return a list of names of files in DIRECTORY. -There are three optional arguments: -If FULL is non-nil, return absolute file names. Otherwise return names - that are relative to the specified directory. -If MATCH is non-nil, mention only file names that match the regexp MATCH. -If NOSORT is non-nil, the list is not sorted--its order is unpredictable. - NOSORT is useful if you plan to sort the result yourself. -" - (let ((properties (url-dav-get-properties url '(DAV:resourcetype) 1)) - (child-url nil) - (child-props nil) - (files nil) - (parsed-url (url-generic-parse-url url))) - - (if (= (length properties) 1) - (signal 'file-error (list "Opening directory" "not a directory" url))) - - (while properties - (setq child-props (pop properties) - child-url (pop child-props)) - (if (and (eq (plist-get child-props 'DAV:resourcetype) 'DAV:collection) - files-only) - ;; It is a directory, and we were told to return just files. - nil - - ;; Fully expand the URL and then rip off the beginning if we - ;; are not supposed to return fully-qualified names. - (setq child-url (url-expand-file-name child-url parsed-url)) - (if (not full) - (setq child-url (substring child-url (length url)))) - - ;; We don't want '/' as the last character in filenames... - (if (string-match "/$" child-url) - (setq child-url (substring child-url 0 -1))) - - ;; If we have a match criteria, then apply it. - (if (or (and match (not (string-match match child-url))) - (string= child-url "") - (string= child-url url)) - nil - (push child-url files)))) - - (if nosort - files - (sort files 'string-lessp)))) - -;;;###autoload -(defun url-dav-file-directory-p (url) - "Return t if URL names an existing DAV collection." - (let ((properties (cdar (url-dav-get-properties url '(DAV:resourcetype))))) - (eq (plist-get properties 'DAV:resourcetype) 'DAV:collection))) - -;;;###autoload -(defun url-dav-make-directory (url &optional parents) - "Create the directory DIR and any nonexistent parent dirs." - (declare (special url-http-response-status)) - (let* ((url-request-extra-headers nil) - (url-request-method "MKCOL") - (url-request-data nil) - (buffer (url-retrieve-synchronously url)) - (result nil)) - (when buffer - (unwind-protect - (save-excursion - (set-buffer buffer) - (case url-http-response-status - (201 ; Collection created in its entirety - (setq result t)) - (403 ; Forbidden - nil) - (405 ; Method not allowed - nil) - (409 ; Conflict - nil) - (415 ; Unsupported media type (WTF?) - nil) - (507 ; Insufficient storage - nil) - (otherwise - nil))) - (kill-buffer buffer))) - result)) - -;;;###autoload -(defun url-dav-rename-file (oldname newname &optional overwrite) - (if (not (and (string-match url-handler-regexp oldname) - (string-match url-handler-regexp newname))) - (signal 'file-error "Cannot rename between different URL backends" oldname newname)) - - (let* ((headers nil) - (props nil) - (status nil) - (directory-p (url-dav-file-directory-p oldname)) - (exists-p (url-http-file-exists-p newname))) - - (if (and exists-p - (or - (null overwrite) - (and (numberp overwrite) - (not (yes-or-no-p - (format "File %s already exists; rename to it anyway? " - newname)))))) - (signal 'file-already-exists (list "File already exists" newname))) - - ;; Honor the overwrite flag... - (if overwrite (push '("Overwrite" . "T") headers)) - - ;; Have to tell them where to copy it to! - (push (cons "Destination" newname) headers) - - ;; Always send a depth of -1 in case we are moving a collection. - (setq props (url-dav-request oldname "MOVE" nil nil (if directory-p -1 0) - headers)) - - (mapc (lambda (result) - (setq status (plist-get (cdr result) 'DAV:status)) - - (if (not (url-dav-http-success-p status)) - (signal 'file-error (list "Renaming" oldname newname status)))) - props) - t)) - -;;;###autoload -(defun url-dav-file-name-all-completions (file url) - "Return a list of all completions of file name FILE in directory DIRECTORY. -These are all file names in directory DIRECTORY which begin with FILE. -" - (url-dav-directory-files url nil (concat "^" file ".*"))) - -;;;###autoload -(defun url-dav-file-name-completion (file url) - "Complete file name FILE in directory DIRECTORY. -Returns the longest string -common to all file names in DIRECTORY that start with FILE. -If there is only one and FILE matches it exactly, returns t. -Returns nil if DIR contains no name starting with FILE. -" - (let ((matches (url-dav-file-name-all-completions file url)) - (result nil)) - (cond - ((null matches) - ;; No matches - nil) - ((and (= (length matches) 1) - (string= file (car matches))) - ;; Only one file and FILE matches it exactly... - t) - (t - ;; Need to figure out the longest string that they have in commmon - (setq matches (sort matches (lambda (a b) (> (length a) (length b))))) - (let ((n (length file)) - (searching t) - (regexp nil) - (failed nil)) - (while (and searching - (< n (length (car matches)))) - (setq regexp (concat "^" (substring (car matches) 0 (1+ n))) - failed nil) - (dolist (potential matches) - (if (not (string-match regexp potential)) - (setq failed t))) - (if failed - (setq searching nil) - (incf n))) - (substring (car matches) 0 n)))))) - -(defun url-dav-register-handler (op) - (put op 'url-file-handlers (intern-soft (format "url-dav-%s" op)))) - -(mapcar 'url-dav-register-handler - '(file-name-all-completions - file-name-completion - rename-file - make-directory - file-directory-p - directory-files - delete-file - delete-directory - file-attributes)) - - -;;; Version Control backend cruft - -;(put 'vc-registered 'url-file-handlers 'url-dav-vc-registered) - -;;;###autoload -(defun url-dav-vc-registered (url) - (if (and (string-match "\\`https?" url) - (plist-get (url-http-options url) 'dav)) - (progn - (vc-file-setprop url 'vc-backend 'dav) - t))) - - -;;; Miscellaneous stuff. - -(provide 'url-dav) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-dired.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-dired.el deleted file mode 100644 index 9a9e45fa..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-dired.el +++ /dev/null @@ -1,102 +0,0 @@ -;;; url-dired.el --- URL Dired minor mode -;; Author: $Author: fx $ -;; Created: $Date: 2001/05/05 16:44:20 $ -;; Version: $Revision: 1.3 $ -;; Keywords: comm, files - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(autoload 'w3-fetch "w3") -(autoload 'w3-open-local "w3") -(autoload 'dired-get-filename "dired") - -(defvar url-dired-minor-mode-map - (let ((map (make-sparse-keymap))) - (define-key map "\C-m" 'url-dired-find-file) - (if (featurep 'xemacs) - (define-key map [button2] 'url-dired-find-file-mouse) - (define-key map [mouse-2] 'url-dired-find-file-mouse)) - map) - "Keymap used when browsing directories.") - -(defvar url-dired-minor-mode nil - "Whether we are in url-dired-minor-mode") - -(make-variable-buffer-local 'url-dired-minor-mode) - -(defun url-dired-find-file () - "In dired, visit the file or directory named on this line, using Emacs-W3." - (interactive) - (let ((filename (dired-get-filename))) - (cond ((string-match "/\\(.*@.*\\):\\(/.*\\)" filename) - (w3-fetch (concat "file://" (match-string 1 filename) (match-string 2 filename)))) - (t - (w3-open-local filename))))) - -(defun url-dired-find-file-mouse (event) - "In dired, visit the file or directory name you click on, using Emacs-W3." - (interactive "@e") - (mouse-set-point event) - (url-dired-find-file)) - -(defun url-dired-minor-mode (&optional arg) - "Minor mode for directory browsing with Emacs-W3." - (interactive "P") - (cond - ((null arg) - (setq url-dired-minor-mode (not url-dired-minor-mode))) - ((equal 0 arg) - (setq url-dired-minor-mode nil)) - (t - (setq url-dired-minor-mode t)))) - -(if (not (fboundp 'add-minor-mode)) - (defun add-minor-mode (toggle name &optional keymap after toggle-fun) - "Add a minor mode to `minor-mode-alist' and `minor-mode-map-alist'. -TOGGLE is a symbol which is used as the variable which toggle the minor mode, -NAME is the name that should appear in the modeline (it should be a string -beginning with a space), KEYMAP is a keymap to make active when the minor -mode is active, and AFTER is the toggling symbol used for another minor -mode. If AFTER is non-nil, then it is used to position the new mode in the -minor-mode alists. TOGGLE-FUN specifies an interactive function that -is called to toggle the mode on and off; this affects what appens when -button2 is pressed on the mode, and when button3 is pressed somewhere -in the list of modes. If TOGGLE-FUN is nil and TOGGLE names an -interactive function, TOGGLE is used as the toggle function. - -Example: (add-minor-mode 'view-minor-mode \" View\" view-mode-map)" - (if (not (assq toggle minor-mode-alist)) - (setq minor-mode-alist (cons (list toggle name) minor-mode-alist))) - (if (and keymap (not (assq toggle minor-mode-map-alist))) - (setq minor-mode-map-alist (cons (cons toggle keymap) - minor-mode-map-alist))))) - -(add-minor-mode 'url-dired-minor-mode " URL" url-dired-minor-mode-map) - -(defun url-find-file-dired (dir) - "\"Edit\" directory DIR, but with additional URL-friendly bindings." - (interactive "DURL Dired (directory): ") - (find-file dir) - (url-dired-minor-mode t)) - -(provide 'url-dired) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-expand.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-expand.el deleted file mode 100644 index 49048dd3..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-expand.el +++ /dev/null @@ -1,143 +0,0 @@ -;;; url-expand.el --- expand-file-name for URLs -;; Author: $Author: wmperry $ -;; Created: $Date: 1999/12/05 08:09:15 $ -;; Version: $Revision: 1.3 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require 'url-methods) -(require 'url-util) -(require 'url-parse) - -(defun url-expander-remove-relative-links (name) - ;; Strip . and .. from pathnames - (let ((new (if (not (string-match "^/" name)) - (concat "/" name) - name))) - - ;; If it ends with a '/.' or '/..', tack on a trailing '/' sot hat - ;; the tests that follow are not too complicated in terms of - ;; looking for '..' or '../', etc. - (if (string-match "/\\.+$" new) - (setq new (concat new "/"))) - - ;; Remove '/./' first - (while (string-match "/\\(\\./\\)" new) - (setq new (concat (substring new 0 (match-beginning 1)) - (substring new (match-end 1))))) - - ;; Then remove '/../' - (while (string-match "/\\([^/]*/\\.\\./\\)" new) - (setq new (concat (substring new 0 (match-beginning 1)) - (substring new (match-end 1))))) - - ;; Remove cruft at the beginning of the string, so people that put - ;; in extraneous '..' because they are morons won't lose. - (while (string-match "^/\\.\\.\\(/\\)" new) - (setq new (substring new (match-beginning 1) nil))) - new)) - -(defun url-expand-file-name (url &optional default) - "Convert URL to a fully specified URL, and canonicalize it. -Second arg DEFAULT is a URL to start with if URL is relative. -If DEFAULT is nil or missing, the current buffer's URL is used. -Path components that are `.' are removed, and -path components followed by `..' are removed, along with the `..' itself." - (if (and url (not (string-match "^#" url))) - ;; Need to nuke newlines and spaces in the URL, or we open - ;; ourselves up to potential security holes. - (setq url (mapconcat (function (lambda (x) - (if (memq x '(? ?\n ?\r)) - "" - (char-to-string x)))) - url ""))) - - ;; Need to figure out how/where to expand the fragment relative to - (setq default (cond - ((vectorp default) - ;; Default URL has already been parsed - default) - (default - ;; They gave us a default URL in non-parsed format - (url-generic-parse-url default)) - (url-current-object - ;; We are in a URL-based buffer, use the pre-parsed object - url-current-object) - ((string-match url-nonrelative-link url) - ;; The URL they gave us is absolute, go for it. - nil) - (t - ;; Hmmm - this shouldn't ever happen. - (error "url-expand-file-name confused - no default?")))) - - (cond - ((= (length url) 0) ; nil or empty string - (url-recreate-url default)) - ((string-match "^#" url) ; Offset link, use it raw - url) - ((string-match url-nonrelative-link url) ; Fully-qualified URL, return it immediately - url) - (t - (let* ((urlobj (url-generic-parse-url url)) - (inhibit-file-name-handlers t) - (expander (url-scheme-get-property (url-type default) 'expand-file-name))) - (if (string-match "^//" url) - (setq urlobj (url-generic-parse-url (concat (url-type default) ":" - url)))) - (funcall expander urlobj default) - (url-recreate-url urlobj))))) - -(defun url-identity-expander (urlobj defobj) - (url-set-type urlobj (or (url-type urlobj) (url-type defobj)))) - -(defun url-default-expander (urlobj defobj) - ;; The default expansion routine - urlobj is modified by side effect! - (if (url-type urlobj) - ;; Well, they told us the scheme, let's just go with it. - nil - (url-set-type urlobj (or (url-type urlobj) (url-type defobj))) - (url-set-port urlobj (or (url-port urlobj) - (and (string= (url-type urlobj) - (url-type defobj)) - (url-port defobj)))) - (if (not (string= "file" (url-type urlobj))) - (url-set-host urlobj (or (url-host urlobj) (url-host defobj)))) - (if (string= "ftp" (url-type urlobj)) - (url-set-user urlobj (or (url-user urlobj) (url-user defobj)))) - (if (string= (url-filename urlobj) "") - (url-set-filename urlobj "/")) - (if (string-match "^/" (url-filename urlobj)) - nil - (let ((query nil) - (file nil) - (sepchar nil)) - (if (string-match "[?#]" (url-filename urlobj)) - (setq query (substring (url-filename urlobj) (match-end 0)) - file (substring (url-filename urlobj) 0 (match-beginning 0)) - sepchar (substring (url-filename urlobj) (match-beginning 0) (match-end 0))) - (setq file (url-filename urlobj))) - (setq file (url-expander-remove-relative-links - (concat (url-basepath (url-filename defobj)) file))) - (url-set-filename urlobj (if query (concat file sepchar query) file)))))) - -(provide 'url-expand) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-file.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-file.el deleted file mode 100644 index fad9995f..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-file.el +++ /dev/null @@ -1,239 +0,0 @@ -;;; url-file.el --- File retrieval code -;; Author: $Author: fx $ -;; Created: $Date: 2002/04/22 09:14:24 $ -;; Version: $Revision: 1.11 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(eval-when-compile (require 'cl)) -(require 'mailcap) -(require 'url-vars) -(require 'url-parse) -(require 'url-dired) - -(defconst url-file-default-port 21 "Default FTP port.") -(defconst url-file-asynchronous-p t "FTP transfers are asynchronous.") -(defalias 'url-file-expand-file-name 'url-default-expander) - -(defun url-file-find-possibly-compressed-file (fname &rest args) - "Find the exact file referenced by `fname'. -This tries the common compression extensions, because things like -ange-ftp and efs are not quite smart enough to realize when a server -can do automatic decompression for them, and won't find 'foo' if -'foo.gz' exists, even though the ftp server would happily serve it up -to them." - (let ((scratch nil) - (compressed-extensions '("" ".gz" ".z" ".Z" ".bz2")) - (found nil)) - (while (and compressed-extensions (not found)) - (if (file-exists-p (setq scratch (concat fname (pop compressed-extensions)))) - (setq found scratch))) - found)) - -(defun url-file-host-is-local-p (host) - "Return t iff HOST references our local machine." - (let ((case-fold-search t)) - (or - (null host) - (string= "" host) - (equal (downcase host) (downcase (system-name))) - (and (string-match "^localhost$" host) t) - (and (not (string-match (regexp-quote ".") host)) - (equal (downcase host) (if (string-match (regexp-quote ".") - (system-name)) - (substring (system-name) 0 - (match-beginning 0)) - (system-name))))))) - -(defun url-file-asynch-callback (x y name buff func args &optional efs) - (if (not (featurep 'ange-ftp)) - ;; EFS passes us an extra argument - (setq name buff - buff func - func args - args efs)) - (let ((size (nth 7 (file-attributes name)))) - (save-excursion - (set-buffer buff) - (goto-char (point-max)) - (if (/= -1 size) - (insert (format "Content-length: %d\n" size))) - (insert "\n") - (insert-file-contents-literally name) - (if (not (url-file-host-is-local-p (url-host url-current-object))) - (condition-case () - (delete-file name) - (error nil))) - (apply func args)))) - -(defun url-file-build-filename (url) - (if (not (vectorp url)) - (setq url (url-generic-parse-url url))) - (let* ((user (url-user url)) - (pass (url-password url)) - (port (url-port url)) - (host (url-host url)) - (site (if (and port (/= port 21)) - (if (featurep 'ange-ftp) - (format "%s %d" host port) - ;; This works in Emacs 21's ange-ftp too. - (format "%s#%d" host port)) - host)) - (file (url-unhex-string (url-filename url))) - (filename (if (or user (not (url-file-host-is-local-p host))) - (concat "/" (or user "anonymous") "@" site ":" file) - (if (and (memq system-type - '(emx ms-dos windows-nt ms-windows)) - (string-match "^/[a-zA-Z]:/" file)) - (substring file 1) - file))) - pos-index) - - (and user pass - (cond - ((featurep 'ange-ftp) - (ange-ftp-set-passwd host user pass)) - ((or (featurep 'efs) (featurep 'efs-auto)) - (efs-set-passwd host user pass)) - (t - nil))) - - ;; This makes sure that directories have a trailing directory - ;; separator on them so URL expansion works right. - ;; - ;; FIXME? What happens if the remote system doesn't use our local - ;; directory-sep-char as its separator? Would it be safer to just - ;; use '/' unconditionally and rely on the FTP server to - ;; straighten it out for us? - (if (and (file-directory-p filename) - (not (string-match (format "%c$" directory-sep-char) filename))) - (url-set-filename url - (format "%s%c" filename directory-sep-char))) - - ;; If it is a directory, look for an index file first. - (if (and (file-directory-p filename) - url-directory-index-file - (setq pos-index (expand-file-name url-directory-index-file filename)) - (file-exists-p pos-index) - (file-readable-p pos-index)) - (setq filename pos-index)) - - ;; Find the (possibly compressed) file - (setq filename (url-file-find-possibly-compressed-file filename)) - filename)) - -;;;###autoload -(defun url-file (url callback cbargs) - "Handle file: and ftp: URLs." - (let* ((buffer nil) - (uncompressed-filename nil) - (content-type nil) - (content-encoding nil) - (coding-system-for-read 'binary)) - - (setq filename (url-file-build-filename url)) - - (if (not filename) - (error "File does not exist: %s" (url-recreate-url url))) - - ;; Need to figure out the content-type from the real extension, - ;; not the compressed one. - (setq uncompressed-filename (if (string-match "\\.\\(gz\\|Z\\|z\\)$" filename) - (substring filename 0 (match-beginning 0)) - filename)) - (setq content-type (mailcap-extension-to-mime - (url-file-extension uncompressed-filename)) - content-encoding (case (intern (url-file-extension filename)) - ((\.z \.gz) "gzip") - (\.Z "compress") - (\.uue "x-uuencoded") - (\.hqx "x-hqx") - (\.bz2 "x-bzip2") - (otherwise nil))) - - (if (file-directory-p filename) - ;; A directory is done the same whether we are local or remote - (url-find-file-dired filename) - (save-excursion - (setq buffer (generate-new-buffer " *url-file*")) - (set-buffer buffer) - (mm-disable-multibyte) - (setq url-current-object url) - (insert "Content-type: " (or content-type "application/octet-stream") "\n") - (if content-encoding - (insert "Content-transfer-encoding: " content-encoding "\n")) - (if (url-file-host-is-local-p (url-host url)) - ;; Local files are handled slightly oddly - (if (featurep 'ange-ftp) - (url-file-asynch-callback nil nil - filename - (current-buffer) - callback cbargs) - (url-file-asynch-callback nil nil nil - filename - (current-buffer) - callback cbargs)) - ;; FTP handling - (let* ((extension (url-file-extension filename)) - (new (url-generate-unique-filename - (and (> (length extension) 0) - (concat "%s." extension))))) - (if (featurep 'ange-ftp) - (ange-ftp-copy-file-internal filename (expand-file-name new) t - nil t - (list 'url-file-asynch-callback - new (current-buffer) - callback cbargs) - t) - (autoload 'efs-copy-file-internal "efs") - (efs-copy-file-internal filename (efs-ftp-path filename) - new (efs-ftp-path new) - t nil 0 - (list 'url-file-asynch-callback - new (current-buffer) - callback cbargs) - 0 nil)))))) - buffer)) - -(defmacro url-file-create-wrapper (method args) - (` (defalias (quote (, (intern (format "url-ftp-%s" method)))) - (defun (, (intern (format "url-file-%s" method))) (, args) - (, (format "FTP/FILE URL wrapper around `%s' call." method)) - (setq url (url-file-build-filename url)) - (and url ((, method) (,@ (remove '&rest (remove '&optional args))))))))) - -(url-file-create-wrapper file-exists-p (url)) -(url-file-create-wrapper file-attributes (url)) -(url-file-create-wrapper file-symlink-p (url)) -(url-file-create-wrapper file-readable-p (url)) -(url-file-create-wrapper file-writable-p (url)) -(url-file-create-wrapper file-executable-p (url)) -(if (featurep 'xemacs) - (progn - (url-file-create-wrapper directory-files (url &optional full match nosort files-only)) - (url-file-create-wrapper file-truename (url &optional default))) - (url-file-create-wrapper directory-files (url &optional full match nosort)) - (url-file-create-wrapper file-truename (url &optional counter prev-dirs))) - -(provide 'url-file) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-ftp.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-ftp.el deleted file mode 100644 index 19b55c19..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-ftp.el +++ /dev/null @@ -1,44 +0,0 @@ -;;; url-ftp.el --- FTP wrapper -;; Author: $Author: wmperry $ -;; Created: $Date: 1999/11/30 12:47:21 $ -;; Version: $Revision: 1.1 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; We knew not what we did when we overloaded 'file' to mean 'file' -;; and 'ftp' back in the dark ages of the web. -;; -;; This stub file is just here to please the auto-scheme-loading code -;; in url-methods.el and just maps everything onto the code in -;; url-file. - -(require 'url-parse) -(require 'url-file) - -(defconst url-ftp-default-port 21 "Default FTP port.") -(defconst url-ftp-asynchronous-p t "FTP transfers are asynchronous.") -(defalias 'url-ftp-expand-file-name 'url-default-expander) -(defalias 'url-ftp 'url-file) - -(provide 'url-ftp) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-gw.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-gw.el deleted file mode 100644 index d66a4468..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-gw.el +++ /dev/null @@ -1,264 +0,0 @@ -;;; url-gw.el --- Gateway munging for URL loading -;; Author: Bill Perry -;; Created: $Date: 2002/04/22 09:26:46 $ -;; $Revision: 1.8 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1997, 1998 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(eval-when-compile (require 'cl)) -(require 'url-vars) - -;; Fixme: support SSH explicitly or via a url-gateway-rlogin-program? - -(autoload 'socks-open-network-stream "socks") -(autoload 'open-ssl-stream "ssl") - -(defgroup url-gateway nil - "URL gateway variables" - :group 'url) - -(defcustom url-gateway-local-host-regexp nil - "*A regular expression specifying local hostnames/machines." - :type '(choice (const nil) regexp) - :group 'url-gateway) - -(defcustom url-gateway-prompt-pattern - "^[^#$%>;]*[#$%>;] *" ;; "bash\\|\$ *\r?$\\|> *\r?" - "*A regular expression matching a shell prompt." - :type 'regexp - :group 'url-gateway) - -(defcustom url-gateway-rlogin-host nil - "*What hostname to actually rlog into before doing a telnet." - :type '(choice (const nil) string) - :group 'url-gateway) - -(defcustom url-gateway-rlogin-user-name nil - "*Username to log into the remote machine with when using rlogin." - :type '(choice (const nil) string) - :group 'url-gateway) - -(defcustom url-gateway-rlogin-parameters '("telnet" "-8") - "*Parameters to `url-open-rlogin'. -This list will be used as the parameter list given to rsh." - :type '(repeat string) - :group 'url-gateway) - -(defcustom url-gateway-telnet-host nil - "*What hostname to actually login to before doing a telnet." - :type '(choice (const nil) string) - :group 'url-gateway) - -(defcustom url-gateway-telnet-parameters '("exec" "telnet" "-8") - "*Parameters to `url-open-telnet'. -This list will be executed as a command after logging in via telnet." - :type '(repeat string) - :group 'url-gateway) - -(defcustom url-gateway-telnet-login-prompt "^\r*.?login:" - "*Prompt that tells us we should send our username when loggin in w/telnet." - :type 'regexp - :group 'url-gateway) - -(defcustom url-gateway-telnet-password-prompt "^\r*.?password:" - "*Prompt that tells us we should send our password when loggin in w/telnet." - :type 'regexp - :group 'url-gateway) - -(defcustom url-gateway-telnet-user-name nil - "User name to log in via telnet with." - :type '(choice (const nil) string) - :group 'url-gateway) - -(defcustom url-gateway-telnet-password nil - "Password to use to log in via telnet with." - :type '(choice (const nil) string) - :group 'url-gateway) - -(defcustom url-gateway-broken-resolution nil - "*Whether to use nslookup to resolve hostnames. -This should be used when your version of Emacs cannot correctly use DNS, -but your machine can. This usually happens if you are running a statically -linked Emacs under SunOS 4.x" - :type 'boolean - :group 'url-gateway) - -(defcustom url-gateway-nslookup-program "nslookup" - "*If non-NIL then a string naming nslookup program." - :type '(choice (const :tag "None" :value nil) string) - :group 'url-gateway) - -;; Stolen from ange-ftp -;;;###autoload -(defun url-gateway-nslookup-host (host) - "Attempt to resolve the given HOST using nslookup if possible." - (interactive "sHost: ") - (if url-gateway-nslookup-program - (let ((proc (start-process " *nslookup*" " *nslookup*" - url-gateway-nslookup-program host)) - (res host)) - (process-kill-without-query proc) - (save-excursion - (set-buffer (process-buffer proc)) - (while (memq (process-status proc) '(run open)) - (accept-process-output proc)) - (goto-char (point-min)) - (if (re-search-forward "Name:.*\nAddress: *\\(.*\\)$" nil t) - (setq res (buffer-substring (match-beginning 1) - (match-end 1)))) - (kill-buffer (current-buffer))) - res) - host)) - -;; Stolen from red gnus nntp.el -(defun url-wait-for-string (regexp proc) - "Wait until string matching REGEXP arrives in process PROC's buffer." - (let ((buf (current-buffer))) - (goto-char (point-min)) - (while (not (re-search-forward regexp nil t)) - (accept-process-output proc) - (set-buffer buf) - (goto-char (point-min))))) - -;; Stolen from red gnus nntp.el -(defun url-open-rlogin (name buffer host service) - "Open a connection using rsh." - (if (not (stringp service)) - (setq service (int-to-string service))) - (let ((proc (if url-gateway-rlogin-user-name - (start-process - name buffer "rsh" - url-gateway-rlogin-host "-l" url-gateway-rlogin-user-name - (mapconcat 'identity - (append url-gateway-rlogin-parameters - (list host service)) " ")) - (start-process - name buffer "rsh" url-gateway-rlogin-host - (mapconcat 'identity - (append url-gateway-rlogin-parameters - (list host service)) - " "))))) - (set-buffer buffer) - (url-wait-for-string "^\r*200" proc) - (beginning-of-line) - (delete-region (point-min) (point)) - proc)) - -;; Stolen from red gnus nntp.el -(defun url-open-telnet (name buffer host service) - (if (not (stringp service)) - (setq service (int-to-string service))) - (save-excursion - (set-buffer (get-buffer-create buffer)) - (erase-buffer) - (let ((proc (start-process name buffer "telnet" "-8")) - (case-fold-search t)) - (when (memq (process-status proc) '(open run)) - (process-send-string proc "set escape \^X\n") - (process-send-string proc (concat - "open " url-gateway-telnet-host "\n")) - (url-wait-for-string url-gateway-telnet-login-prompt proc) - (process-send-string - proc (concat - (or url-gateway-telnet-user-name - (setq url-gateway-telnet-user-name (read-string "login: "))) - "\n")) - (url-wait-for-string url-gateway-telnet-password-prompt proc) - (process-send-string - proc (concat - (or url-gateway-telnet-password - (setq url-gateway-telnet-password - (funcall url-passwd-entry-func "Password: "))) - "\n")) - (erase-buffer) - (url-wait-for-string url-gateway-prompt-pattern proc) - (process-send-string - proc (concat (mapconcat 'identity - (append url-gateway-telnet-parameters - (list host service)) " ") "\n")) - (url-wait-for-string "^\r*Escape character.*\r*\n+" proc) - (delete-region (point-min) (match-end 0)) - (process-send-string proc "\^]\n") - (url-wait-for-string "^telnet" proc) - (process-send-string proc "mode character\n") - (accept-process-output proc 1) - (sit-for 1) - (goto-char (point-min)) - (forward-line 1) - (delete-region (point) (point-max))) - proc))) - -;;;###autoload -(defun url-open-stream (name buffer host service) - "Open a stream to HOST, possibly via a gateway. -Args per `open-network-stream'. -Will not make a connexion if `url-gateway-unplugged' is non-nil." - (unless url-gateway-unplugged - (let ((gw-method (if (and url-gateway-local-host-regexp - (not (eq 'ssl url-gateway-method)) - (string-match - url-gateway-local-host-regexp - host)) - 'native - url-gateway-method)) -;;; ;; This hack is for OS/2 Emacs so that it will not do bogus CRLF -;;; ;; conversions while trying to be 'helpful' -;;; (tcp-binary-process-output-services (if (stringp service) -;;; (list service) -;;; (list service -;;; (int-to-string service)))) - - ;; An attempt to deal with denied connections, and attempt - ;; to reconnect - (cur-retries 0) - (retry t) - (errobj nil) - (conn nil)) - - ;; If the user told us to do DNS for them, do it. - (if url-gateway-broken-resolution - (setq host (url-gateway-nslookup-host host))) - - (condition-case errobj - ;; This is a clean way to ensure the new process inherits the - ;; right coding systems in both Emacs and XEmacs. - (let ((coding-system-for-read 'binary) - (coding-system-for-write 'binary)) - (setq conn (case gw-method - (ssl - (open-ssl-stream name buffer host service)) - ((native) - (open-network-stream name buffer host service)) - (socks - (socks-open-network-stream name buffer host service)) - (telnet - (url-open-telnet name buffer host service)) - (rlogin - (url-open-rlogin name buffer host service)) - (otherwise - (error "Bad setting of url-gateway-method: %s" - url-gateway-method))))) - (error - (setq conn nil))) - conn))) - -(provide 'url-gw) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-handlers.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-handlers.el deleted file mode 100644 index 8b6ebdf0..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-handlers.el +++ /dev/null @@ -1,252 +0,0 @@ -;;; url-handlers.el --- file-name-handler stuff for URL loading -;; Author: $Author: sds $ -;; Created: $Date: 2003/06/26 18:45:45 $ -;; Version: $Revision: 1.10 $ -;; Keywords: comm, data, processes, hypermedia - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require 'url) -(require 'url-parse) -(require 'url-util) -(require 'mm-decode) -(require 'mailcap) - -(eval-when-compile - (require 'cl)) - -;; Implementation status -;; --------------------- -;; Function Status -;; ------------------------------------------------------------ -;; add-name-to-file Needs DAV Bindings -;; copy-file Broken (assumes 1st item is URL) -;; delete-directory Finished (DAV) -;; delete-file Finished (DAV) -;; diff-latest-backup-file -;; directory-file-name unnecessary (what about VMS)? -;; directory-files Finished (DAV) -;; dired-call-process -;; dired-compress-file -;; dired-uncache -;; expand-file-name Finished -;; file-accessible-directory-p -;; file-attributes Finished, better with DAV -;; file-directory-p Needs DAV, finished -;; file-executable-p Finished -;; file-exists-p Finished -;; file-local-copy -;; file-modes -;; file-name-all-completions Finished (DAV) -;; file-name-as-directory -;; file-name-completion Finished (DAV) -;; file-name-directory -;; file-name-nondirectory -;; file-name-sans-versions why? -;; file-newer-than-file-p -;; file-ownership-preserved-p No way to know -;; file-readable-p Finished -;; file-regular-p !directory_p -;; file-symlink-p Needs DAV bindings -;; file-truename Needs DAV bindings -;; file-writable-p Check for LOCK? -;; find-backup-file-name why? -;; get-file-buffer why? -;; insert-directory Use DAV -;; insert-file-contents Finished -;; load -;; make-directory Finished (DAV) -;; make-symbolic-link Needs DAV bindings -;; rename-file Finished (DAV) -;; set-file-modes Use mod_dav specific executable flag? -;; set-visited-file-modtime Impossible? -;; shell-command Impossible? -;; unhandled-file-name-directory -;; vc-registered Finished (DAV) -;; verify-visited-file-modtime -;; write-region - -(defvar url-handler-regexp - "\\`\\(https?\\|ftp\\|file\\|nfs\\)://" - "*A regular expression for matching URLs handled by file-name-handler-alist. -Some valid URL protocols just do not make sense to visit interactively -\(about, data, info, irc, mailto, etc\). This regular expression -avoids conflicts with local files that look like URLs \(Gnus is -particularly bad at this\).") - -;;;###autoload -(defun url-setup-file-name-handlers () - "Setup file-name handlers." - (cond - ((not (boundp 'file-name-handler-alist)) - nil) ; Don't load if no alist - ((rassq 'url-file-handler file-name-handler-alist) - nil) ; Don't load twice - (t - (push (cons url-handler-regexp 'url-file-handler) - file-name-handler-alist)))) - -(defun url-run-real-handler (operation args) - (let ((inhibit-file-name-handlers (cons 'url-file-handler - (if (eq operation inhibit-file-name-operation) - inhibit-file-name-handlers))) - (inhibit-file-name-operation operation)) - (apply operation args))) - -(defun url-file-handler (operation &rest args) - "Function called from the `file-name-handler-alist' routines. -OPERATION is what needs to be done (`file-exists-p', etc). ARGS are -the arguments that would have been passed to OPERATION." - (let ((fn (or (get operation 'url-file-handlers) - (intern-soft (format "url-%s" operation)))) - (val nil) - (hooked nil)) - (if (and fn (fboundp fn)) - (setq hooked t - val (apply fn args)) - (setq hooked nil - val (url-run-real-handler operation args))) - (url-debug 'handlers "%s %S%S => %S" (if hooked "Hooked" "Real") - operation args val) - val)) - -(defun url-file-handler-identity (&rest args) - ;; Identity function - (car args)) - -;; These are operations that we can fully support -(put 'file-readable-p 'url-file-handlers 'url-file-exists-p) -(put 'substitute-in-file-name 'url-file-handlers 'url-file-handler-identity) -(put 'file-name-absolute-p 'url-file-handlers (lambda (&rest ignored) t)) -(put 'expand-file-name 'url-file-handlers 'url-handler-expand-file-name) - -;; These are operations that we do not support yet (DAV!!!) -(put 'file-writable-p 'url-file-handlers 'ignore) -(put 'file-symlink-p 'url-file-handlers 'ignore) - -(defun url-handler-expand-file-name (file &optional base) - (if (file-name-absolute-p file) - (expand-file-name file "/") - (url-expand-file-name file base))) - -;; The actual implementation -;;;###autoload -(defun url-copy-file (url newname &optional ok-if-already-exists keep-time) - "Copy URL to NEWNAME. Both args must be strings. -Signals a `file-already-exists' error if file NEWNAME already exists, -unless a third argument OK-IF-ALREADY-EXISTS is supplied and non-nil. -A number as third arg means request confirmation if NEWNAME already exists. -This is what happens in interactive use with M-x. -Fourth arg KEEP-TIME non-nil means give the new file the same -last-modified time as the old one. (This works on only some systems.) -A prefix arg makes KEEP-TIME non-nil." - (if (and (file-exists-p newname) - (not ok-if-already-exists)) - (error "Opening output file: File already exists, %s" newname)) - (let ((buffer (url-retrieve-synchronously url)) - (handle nil)) - (if (not buffer) - (error "Opening input file: No such file or directory, %s" url)) - (save-excursion - (set-buffer buffer) - (setq handle (mm-dissect-buffer t))) - (mm-save-part-to-file handle newname) - (kill-buffer buffer) - (mm-destroy-parts handle))) - -;;;###autoload -(defun url-file-local-copy (url &rest ignored) - "Copy URL into a temporary file on this machine. -Returns the name of the local copy, or nil, if FILE is directly -accessible." - (let ((filename (make-temp-name "url"))) - (url-copy-file url filename) - filename)) - -;;;###autoload -(defun url-insert-file-contents (url &optional visit beg end replace) - (let ((buffer (url-retrieve-synchronously url)) - (handle nil) - (data nil)) - (if (not buffer) - (error "Opening input file: No such file or directory, %s" url)) - (if visit (setq buffer-file-name url)) - (save-excursion - (set-buffer buffer) - (setq handle (mm-dissect-buffer t)) - (set-buffer (mm-handle-buffer handle)) - (if beg - (setq data (buffer-substring beg end)) - (setq data (buffer-string)))) - (kill-buffer buffer) - (mm-destroy-parts handle) - (if replace (delete-region (point-min) (point-max))) - (save-excursion - (insert data)) - (list url (length data)))) - -(defun url-file-name-completion (url directory) - (error "Unimplemented")) - -(defun url-file-name-all-completions (file directory) - (error "Unimplemented")) - -;; All other handlers map onto their respective backends. -(defmacro url-handlers-create-wrapper (method args) - `(defun ,(intern (format "url-%s" method)) ,args - ,(format "URL file-name-handler wrapper for `%s' call.\n---\n%s" method - (or (documentation method t) "No original documentation.")) - (setq url (url-generic-parse-url url)) - (when (url-type url) - (funcall (url-scheme-get-property (url-type url) (quote ,method)) - ,@(remove '&rest (remove '&optional args)))))) - -(url-handlers-create-wrapper file-exists-p (url)) -(url-handlers-create-wrapper file-attributes (url)) -(url-handlers-create-wrapper file-symlink-p (url)) -(url-handlers-create-wrapper file-writable-p (url)) -(url-handlers-create-wrapper file-directory-p (url)) -(url-handlers-create-wrapper file-executable-p (url)) - -(if (featurep 'xemacs) - (progn - ;; XEmacs specific prototypes - (url-handlers-create-wrapper - directory-files (url &optional full match nosort files-only)) - (url-handlers-create-wrapper - file-truename (url &optional default))) - ;; Emacs specific prototypes - (url-handlers-create-wrapper - directory-files (url &optional full match nosort)) - (url-handlers-create-wrapper - file-truename (url &optional counter prev-dirs))) - -(add-hook 'find-file-hooks 'url-handlers-set-buffer-mode) - -(defun url-handlers-set-buffer-mode () - "Set correct modes for the current buffer if visiting a remote file." - (and (stringp buffer-file-name) - (string-match url-handler-regexp buffer-file-name) - (auto-save-mode 0))) - -(provide 'url-handlers) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-history.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-history.el deleted file mode 100644 index 77b58b6f..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-history.el +++ /dev/null @@ -1,199 +0,0 @@ -;;; url-history.el --- Global history tracking for URL package -;; Author: $Author: fx $ -;; Created: $Date: 2001/05/05 16:49:52 $ -;; Version: $Revision: 1.6 $ -;; Keywords: comm, data, processes, hypermedia - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; This can get a recursive require. -;;(require 'url) -(eval-when-compile (require 'cl)) -(require 'url-parse) -(autoload 'url-do-setup "url") - -(defgroup url-history nil - "History variables in the URL package" - :prefix "url-history" - :group 'url) - -(defcustom url-history-track nil - "*Controls whether to keep a list of all the URLS being visited. -If non-nil, url will keep track of all the URLS visited. -If eq to `t', then the list is saved to disk at the end of each emacs -session." - :type 'boolean - :group 'url-history) - -(defcustom url-history-file nil - "*The global history file for the URL package. -This file contains a list of all the URLs you have visited. This file -is parsed at startup and used to provide URL completion." - :type '(choice (const :tag "Default" :value nil) file) - :group 'url-history) - -(defcustom url-history-save-interval 3600 - "*The number of seconds between automatic saves of the history list. -Default is 1 hour. Note that if you change this variable outside of -the `customize' interface after `url-do-setup' has been run, you need -to run the `url-history-setup-save-timer' function manually." - :set (function (lambda (var val) - (set-default var val) - (and (featurep 'url) - (fboundp 'url-history-setup-save-timer) - (let ((def (symbol-function - 'url-history-setup-save-timer))) - (not (and (listp def) (eq 'autoload (car def))))) - (url-history-setup-save-timer)))) - :type 'integer - :group 'url-history) - -(defvar url-history-timer nil) - -(defvar url-history-list nil - "List of urls visited this session.") - -(defvar url-history-changed-since-last-save nil - "Whether the history list has changed since the last save operation.") - -(defvar url-history-hash-table nil - "Hash table for global history completion.") - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;;###autoload -(defun url-history-setup-save-timer () - "Reset the history list timer." - (interactive) - (cond - ((featurep 'itimer) - (ignore-errors (delete-itimer url-history-timer)) - (setq url-history-timer nil) - (if url-history-save-interval - (setq url-history-timer - (start-itimer "url-history-saver" 'url-history-save-history - url-history-save-interval - url-history-save-interval)))) - ((fboundp 'run-at-time) - (ignore-errors (cancel-timer url-history-timer)) - (setq url-history-timer nil) - (if url-history-save-interval - (setq url-history-timer - (run-at-time url-history-save-interval - url-history-save-interval - 'url-history-save-history)))) - (t nil))) - -;;;###autoload -(defun url-history-parse-history (&optional fname) - "Parse a history file stored in FNAME." - ;; Parse out the mosaic global history file for completions, etc. - (or fname (setq fname (expand-file-name url-history-file))) - (cond - ((not (file-exists-p fname)) - (message "%s does not exist." fname)) - ((not (file-readable-p fname)) - (message "%s is unreadable." fname)) - (t - (condition-case nil - (load fname nil t) - (error (message "Could not load %s" fname))))) - (if (not url-history-hash-table) - (setq url-history-hash-table (make-hash-table :size 31 :test 'equal)))) - -(defun url-history-update-url (url time) - (setq url-history-changed-since-last-save t) - (puthash (if (vectorp url) (url-recreate-url url) url) time url-history-hash-table)) - -;;;###autoload -(defun url-history-save-history (&optional fname) - "Write the global history file into `url-history-file'. -The type of data written is determined by what is in the file to begin -with. If the type of storage cannot be determined, then prompt the -user for what type to save as." - (interactive) - (or fname (setq fname (expand-file-name url-history-file))) - (cond - ((not url-history-changed-since-last-save) nil) - ((not (file-writable-p fname)) - (message "%s is unwritable." fname)) - (t - (let ((make-backup-files nil) - (version-control nil) - (require-final-newline t)) - (save-excursion - (set-buffer (get-buffer-create " *url-tmp*")) - (erase-buffer) - (let ((count 0)) - (maphash (function - (lambda (key value) - (while (string-match "[\r\n]+" key) - (setq key (concat (substring key 0 (match-beginning 0)) - (substring key (match-end 0) nil)))) - (setq count (1+ count)) - (insert "(puthash \"" key "\"" - (if (not (stringp value)) " '" "") - (prin1-to-string value) - " url-history-hash-table)\n"))) - url-history-hash-table) - (goto-char (point-min)) - (insert (format - "(setq url-history-hash-table (make-hash-table :size %d :test 'equal))\n" - (/ count 4))) - (goto-char (point-max)) - (insert "\n") - (write-file fname)) - (kill-buffer (current-buffer)))))) - (setq url-history-changed-since-last-save nil)) - -(defun url-have-visited-url (url) - (url-do-setup) - (gethash url url-history-hash-table nil)) - -(defun url-completion-function (string predicate function) - (url-do-setup) - (cond - ((eq function nil) - (let ((list nil)) - (maphash (function (lambda (key val) - (setq list (cons (cons key val) - list)))) - url-history-hash-table) - (try-completion string (nreverse list) predicate))) - ((eq function t) - (let ((stub (concat "^" (regexp-quote string))) - (retval nil)) - (maphash - (function - (lambda (url time) - (if (string-match stub url) - (setq retval (cons url retval))))) - url-history-hash-table) - retval)) - ((eq function 'lambda) - (and url-history-hash-table - (gethash string url-history-hash-table) - t)) - (t - (error "url-completion-function very confused.")))) - -(provide 'url-history) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-http.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-http.el deleted file mode 100644 index ddc9373b..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-http.el +++ /dev/null @@ -1,1234 +0,0 @@ -;;; url-http.el --- HTTP retrieval routines -;; Author: Bill Perry -;; Version: $Revision: 1.39 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1999, 2001 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(eval-when-compile - (require 'cl) - (defvar url-http-extra-headers)) -(require 'url-gw) -(require 'url-util) -(require 'url-parse) -(require 'url-cookie) -(require 'mail-parse) -(require 'url-auth) -(autoload 'url-retrieve-synchronously "url") -(autoload 'url-retrieve "url") -(autoload 'url-cache-create-filename "url-cache") -(autoload 'url-mark-buffer-as-dead "url") - -(defconst url-http-default-port 80 "Default HTTP port.") -(defconst url-http-asynchronous-p t "HTTP retrievals are asynchronous.") -(defalias 'url-http-expand-file-name 'url-default-expander) - -(defvar url-http-real-basic-auth-storage nil) -(defvar url-http-proxy-basic-auth-storage nil) - -(defvar url-http-open-connections (make-hash-table :test 'equal - :size 17) - "A hash table of all open network connections.") - -(defvar url-http-version "1.1" - "What version of HTTP we advertise, as a string. -Valid values are 1.1 and 1.0. -This is only useful when debugging the HTTP subsystem. - -Setting this to 1.0 will tell servers not to send chunked encoding, -and other HTTP/1.1 specific features. -") - -(defvar url-http-attempt-keepalives t - "Whether to use a single TCP connection multiple times in HTTP. -This is only useful when debugging the HTTP subsystem. Setting to -`nil' will explicitly close the connection to the server after every -request. -") - -;(eval-when-compile -;; These are all macros so that they are hidden from external sight -;; when the file is byte-compiled. -;; -;; This allows us to expose just the entry points we want. - -;; These routines will allow us to implement persistent HTTP -;; connections. -(defsubst url-http-debug (&rest args) - (if quit-flag - (let ((proc (get-buffer-process (current-buffer)))) - ;; The user hit C-g, honor it! Some things can get in an - ;; incredibly tight loop (chunked encoding) - (if proc - (progn - (set-process-sentinel proc nil) - (set-process-filter proc nil))) - (error "Transfer interrupted!"))) - (apply 'url-debug 'http args)) - -(defun url-http-mark-connection-as-busy (host port proc) - (url-http-debug "Marking connection as busy: %s:%d %S" host port proc) - (puthash (cons host port) - (delq proc (gethash (cons host port) url-http-open-connections)) - url-http-open-connections) - proc) - -(defun url-http-mark-connection-as-free (host port proc) - (url-http-debug "Marking connection as free: %s:%d %S" host port proc) - (set-process-buffer proc nil) - (set-process-sentinel proc 'url-http-idle-sentinel) - (puthash (cons host port) - (cons proc (gethash (cons host port) url-http-open-connections)) - url-http-open-connections) - nil) - -(defun url-http-find-free-connection (host port) - (let ((conns (gethash (cons host port) url-http-open-connections)) - (found nil)) - (while (and conns (not found)) - (if (not (memq (process-status (car conns)) '(run open))) - (progn - (url-http-debug "Cleaning up dead process: %s:%d %S" - host port (car conns)) - (url-http-idle-sentinel (car conns) nil)) - (setq found (car conns)) - (url-http-debug "Found existing connection: %s:%d %S" host port found)) - (pop conns)) - (if found - (url-http-debug "Reusing existing connection: %s:%d" host port) - (url-http-debug "Contacting host: %s:%d" host port)) - (url-lazy-message "Contacting host: %s:%d" host port) - (url-http-mark-connection-as-busy host port - (or found - (url-open-stream host nil host - port))))) - -;; Building an HTTP request -(defun url-http-user-agent-string () - (if (or (eq url-privacy-level 'paranoid) - (and (listp url-privacy-level) - (memq 'agent url-privacy-level))) - "" - (format "User-Agent: %sURL/%s%s\r\n" - (if url-package-name - (concat url-package-name "/" url-package-version " ") - "") - url-version - (cond - ((and url-os-type url-system-type) - (concat " (" url-os-type "; " url-system-type ")")) - ((or url-os-type url-system-type) - (concat " (" (or url-system-type url-os-type) ")")) - (t ""))))) - -(defun url-http-create-request (url &optional ref-url) - "Create an HTTP request for URL, referred to by REF-URL." - (declare (special proxy-object proxy-info)) - (let* ((extra-headers) - (request nil) - (no-cache (cdr-safe (assoc "Pragma" url-request-extra-headers))) - (proxy-obj (and (boundp 'proxy-object) proxy-object)) - (proxy-auth (if (or (cdr-safe (assoc "Proxy-Authorization" - url-request-extra-headers)) - (not proxy-obj)) - nil - (let ((url-basic-auth-storage - 'url-http-proxy-basic-auth-storage)) - (url-get-authentication url nil 'any nil)))) - (real-fname (if proxy-obj (url-recreate-url proxy-obj) - (url-filename url))) - (host (url-host (or proxy-obj url))) - (auth (if (cdr-safe (assoc "Authorization" url-request-extra-headers)) - nil - (url-get-authentication (or - (and (boundp 'proxy-info) - proxy-info) - url) nil 'any nil)))) - (if (equal "" real-fname) - (setq real-fname "/")) - (setq no-cache (and no-cache (string-match "no-cache" no-cache))) - (if auth - (setq auth (concat "Authorization: " auth "\r\n"))) - (if proxy-auth - (setq proxy-auth (concat "Proxy-Authorization: " proxy-auth "\r\n"))) - - ;; Protection against stupid values in the referer - (if (and ref-url (stringp ref-url) (or (string= ref-url "file:nil") - (string= ref-url ""))) - (setq ref-url nil)) - - ;; We do not want to expose the referer if the user is paranoid. - (if (or (memq url-privacy-level '(low high paranoid)) - (and (listp url-privacy-level) - (memq 'lastloc url-privacy-level))) - (setq ref-url nil)) - - ;; url-request-extra-headers contains an assoc-list of - ;; header/value pairs that we need to put into the request. - (setq extra-headers (mapconcat - (lambda (x) - (concat (car x) ": " (cdr x))) - url-request-extra-headers "\r\n")) - (if (not (equal extra-headers "")) - (setq extra-headers (concat extra-headers "\r\n"))) - - ;; This was done with a call to `format'. Concatting parts has - ;; the advantage of keeping the parts of each header togther and - ;; allows us to elide null lines directly, at the cost of making - ;; the layout less clear. - (setq request - (concat - ;; The request - (or url-request-method "GET") " " real-fname " HTTP/" url-http-version "\r\n" - ;; Version of MIME we speak - "MIME-Version: 1.0\r\n" - ;; (maybe) Try to keep the connection open - "Connection: " (if (or proxy-obj - (not url-http-attempt-keepalives)) - "close" "keep-alive") "\r\n" - ;; HTTP extensions we support - (if url-extensions-header - (format - "Extension: %s\r\n" url-extensions-header)) - ;; Who we want to talk to - (if (/= (url-port (or proxy-obj url)) - (url-scheme-get-property - (url-type (or proxy-obj url)) 'default-port)) - (format - "Host: %s:%d\r\n" host (url-port (or proxy-obj url))) - (format "Host: %s\r\n" host)) - ;; Who its from - (if url-personal-mail-address - (concat - "From: " url-personal-mail-address "\r\n")) - ;; Encodings we understand - (if url-mime-encoding-string - (concat - "Accept-encoding: " url-mime-encoding-string "\r\n")) - (if url-mime-charset-string - (concat - "Accept-charset: " url-mime-charset-string "\r\n")) - ;; Languages we understand - (if url-mime-language-string - (concat - "Accept-language: " url-mime-language-string "\r\n")) - ;; Types we understand - "Accept: " (or url-mime-accept-string "*/*") "\r\n" - ;; User agent - (url-http-user-agent-string) - ;; Proxy Authorization - proxy-auth - ;; Authorization - auth - ;; Cookies - (url-cookie-generate-header-lines host real-fname - (equal "https" (url-type url))) - ;; If-modified-since - (if (and (not no-cache) - (member url-request-method '("GET" nil))) - (let ((tm (url-is-cached (or proxy-obj url)))) - (if tm - (concat "If-modified-since: " - (url-get-normalized-date tm) "\r\n")))) - ;; Whence we came - (if ref-url (concat - "Referer: " ref-url "\r\n")) - extra-headers - ;; Any data - (if url-request-data - (concat - "Content-length: " (number-to-string - (length url-request-data)) - "\r\n\r\n" - url-request-data)) - ;; End request - "\r\n")) - (url-http-debug "Request is: \n%s" request) - request)) - -;; Parsing routines -(defun url-http-clean-headers () - "Remove trailing \r from header lines. -This allows us to use `mail-fetch-field', etc." - (declare (special url-http-end-of-headers)) - (goto-char (point-min)) - (while (re-search-forward "\r$" url-http-end-of-headers t) - (replace-match ""))) - -(defun url-http-handle-authentication (proxy) - (declare (special status success url-http-method url-http-data - url-callback-function url-callback-arguments)) - (url-http-debug "Handling %s authentication" (if proxy "proxy" "normal")) - (let ((auth (or (mail-fetch-field (if proxy "proxy-authenticate" "www-authenticate")) - "basic")) - (type nil) - ;; in case there is a proxy, `url-current-object' points at this proxy - ;; => retrieve URL from `url-callback-arguments' - (url (car url-callback-arguments)) - (url-basic-auth-storage 'url-http-real-basic-auth-storage) - ) - - ;; Cheating, but who cares? :) - (if proxy - (setq url-basic-auth-storage 'url-http-proxy-basic-auth-storage)) - - (setq auth (url-eat-trailing-space (url-strip-leading-spaces auth))) - (if (string-match "[ \t]" auth) - (setq type (downcase (substring auth 0 (match-beginning 0)))) - (setq type (downcase auth))) - - (if (not (url-auth-registered type)) - (progn - (widen) - (goto-char (point-max)) - (insert "
Sorry, but I do not know how to handle " type - " authentication. If you'd like to write it," - " send it to " url-bug-address ".
") - (setq status t)) - (let* ((args auth) - (ctr (1- (length args))) - auth) - (while (/= 0 ctr) - (if (char-equal ?, (aref args ctr)) - (aset args ctr ?\;)) - (setq ctr (1- ctr))) - (setq args (url-parse-args args) - auth (url-get-authentication url (cdr-safe (assoc "realm" args)) - type t args)) - (if (not auth) - (setq success t) - (push (cons (if proxy "Proxy-Authorization" "Authorization") auth) - url-http-extra-headers) - (let ((url-request-method url-http-method) - (url-request-data url-http-data) - (url-request-extra-headers url-http-extra-headers)) - (url-retrieve url url-callback-function url-callback-arguments)))) - (kill-buffer (current-buffer))))) - -(defun url-http-parse-response () - "Parse just the response code." - (declare (special url-http-end-of-headers url-http-response-status)) - (if (not url-http-end-of-headers) - (error "Trying to parse HTTP response code in odd buffer: %s" (buffer-name))) - (url-http-debug "url-http-parse-response called in (%s)" (buffer-name)) - (goto-char (point-min)) - (while (and - (not (looking-at "^HTTP")) - (not (forward-line 1)))) - (skip-chars-forward " \t\n") ; Skip any blank crap - (skip-chars-forward "HTTP/") ; Skip HTTP Version - (read (current-buffer)) - (setq url-http-response-status (read (current-buffer)))) - -(defun url-http-handle-cookies () - "Handle all set-cookie / set-cookie2 headers in an HTTP response. -The buffer must already be narrowed to the headers, so mail-fetch-field will -work correctly." - (let ((cookies (mail-fetch-field "Set-Cookie" nil nil t)) - (cookies2 (mail-fetch-field "Set-Cookie2" nil nil t))) - (and cookies (url-http-debug "Found %d Set-Cookie headers" (length cookies))) - (and cookies2 (url-http-debug "Found %d Set-Cookie2 headers" (length cookies2))) - (while cookies - (url-cookie-handle-set-cookie (pop cookies))) -;;; (while cookies2 -;;; (url-cookie-handle-set-cookie2 (pop cookies))) - ) - ) - -(defun url-http-parse-headers () - "Parse and handle HTTP specific headers. -Return t if and only if the current buffer is still active and -should be shown to the user." - ;; The comments after each status code handled are taken from RFC - ;; 2616 (HTTP/1.1) - (declare (special url-http-end-of-headers url-http-response-status - url-http-method url-http-data url-http-process - url-callback-function url-callback-arguments)) - - (url-http-mark-connection-as-free (url-host url-current-object) - (url-port url-current-object) - url-http-process) - - (if (or (not (boundp 'url-http-end-of-headers)) - (not url-http-end-of-headers)) - (error "Trying to parse headers in odd buffer: %s" (buffer-name))) - (goto-char (point-min)) - (url-http-debug "url-http-parse-headers called in (%s)" (buffer-name)) - (url-http-parse-response) - (mail-narrow-to-head) - ;;(narrow-to-region (point-min) url-http-end-of-headers) - (let ((parse-buffer (current-buffer)) - (version nil) - (class nil) - (success nil)) - (setq class (/ url-http-response-status 100)) - (url-http-debug "Parsed HTTP headers: class=%d status=%d" class url-http-response-status) - (url-http-handle-cookies) - - (case class - ;; Classes of response codes - ;; - ;; 5xx = Server Error - ;; 4xx = Client Error - ;; 3xx = Redirection - ;; 2xx = Successful - ;; 1xx = Informational - (1 ; Information messages - ;; 100 = Continue with request - ;; 101 = Switching protocols - ;; 102 = Processing (Added by DAV) - (url-mark-buffer-as-dead parse-buffer) - (error "HTTP responses in class 1xx not supported (%d)" url-http-response-status)) - (2 ; Success - ;; 200 Ok - ;; 201 Created - ;; 202 Accepted - ;; 203 Non-authoritative information - ;; 204 No content - ;; 205 Reset content - ;; 206 Partial content - ;; 207 Multi-status (Added by DAV) - (case url-http-response-status - ((204 205) - ;; No new data, just stay at the same document - (url-mark-buffer-as-dead parse-buffer) - (setq success t)) - (otherwise - ;; Generic success for all others. Store in the cache, and - ;; mark it as successful. - (widen) - (if (equal url-http-method "GET") - (url-store-in-cache parse-buffer)) - (setq success t)))) - (3 ; Redirection - ;; 300 Multiple choices - ;; 301 Moved permanently - ;; 302 Found - ;; 303 See other - ;; 304 Not modified - ;; 305 Use proxy - ;; 307 Temporary redirect - (let ((redirect-uri (or (mail-fetch-field "Location") - (mail-fetch-field "URI")))) - (case url-http-response-status - (300 - ;; Quoth the spec (section 10.3.1) - ;; ------------------------------- - ;; The requested resource corresponds to any one of a set of - ;; representations, each with its own specific location and - ;; agent-driven negotiation information is being provided so - ;; that the user can select a preferred representation and - ;; redirect its request to that location. - ;; [...] - ;; If the server has a preferred choice of representation, it - ;; SHOULD include the specific URI for that representation in - ;; the Location field; user agents MAY use the Location field - ;; value for automatic redirection. - ;; ------------------------------- - ;; We do not support agent-driven negotiation, so we just - ;; redirect to the preferred URI if one is provided. - nil) - ((301 302 307) - ;; If the 301|302 status code is received in response to a - ;; request other than GET or HEAD, the user agent MUST NOT - ;; automatically redirect the request unless it can be - ;; confirmed by the user, since this might change the - ;; conditions under which the request was issued. - (if (member url-http-method '("HEAD" "GET")) - ;; Automatic redirection is ok - nil - ;; It is just too big of a pain in the ass to get this - ;; prompt all the time. We will just silently lose our - ;; data and convert to a GET method. - (url-http-debug "Converting `%s' request to `GET' because of REDIRECT(%d)" - url-http-method url-http-response-status) - (setq url-http-method "GET" - url-request-data nil))) - (303 - ;; The response to the request can be found under a different - ;; URI and SHOULD be retrieved using a GET method on that - ;; resource. - (setq url-http-method "GET" - url-http-data nil)) - (304 - ;; The 304 response MUST NOT contain a message-body. - (url-http-debug "Extracting document from cache... (%s)" - (url-cache-create-filename (url-view-url t))) - (url-cache-extract (url-cache-create-filename (url-view-url t))) - (setq redirect-uri nil - success t)) - (305 - ;; The requested resource MUST be accessed through the - ;; proxy given by the Location field. The Location field - ;; gives the URI of the proxy. The recipient is expected - ;; to repeat this single request via the proxy. 305 - ;; responses MUST only be generated by origin servers. - (error "Redirection thru a proxy server not supported: %s" - redirect-uri)) - (otherwise - ;; Treat everything like '300' - nil)) - (when redirect-uri - ;; Clean off any whitespace and/or <...> cruft. - (if (string-match "\\([^ \t]+\\)[ \t]" redirect-uri) - (setq redirect-uri (match-string 1 redirect-uri))) - (if (string-match "^<\\(.*\\)>$" redirect-uri) - (setq redirect-uri (match-string 1 redirect-uri))) - - ;; Some stupid sites (like sourceforge) send a - ;; non-fully-qualified URL (ie: /), which royally confuses - ;; the URL library. - (if (not (string-match url-nonrelative-link redirect-uri)) - (setq redirect-uri (url-expand-file-name redirect-uri))) - (let ((url-request-method url-http-method) - (url-request-data url-http-data) - (url-request-extra-headers url-http-extra-headers)) - ;; on some systems, we have to wait in order to avoid drawing a blank page - (and url-slow-proxy-requires-waiting-for - (sleep-for url-slow-proxy-requires-waiting-for)) - (url-retrieve redirect-uri url-callback-function - (cons redirect-uri - (and url-callback-arguments - (cdr url-callback-arguments)))) - (url-mark-buffer-as-dead parse-buffer))))) - (4 ; Client error - ;; 400 Bad Request - ;; 401 Unauthorized - ;; 402 Payment required - ;; 403 Forbidden - ;; 404 Not found - ;; 405 Method not allowed - ;; 406 Not acceptable - ;; 407 Proxy authentication required - ;; 408 Request time-out - ;; 409 Conflict - ;; 410 Gone - ;; 411 Length required - ;; 412 Precondition failed - ;; 413 Request entity too large - ;; 414 Request-URI too large - ;; 415 Unsupported media type - ;; 416 Requested range not satisfiable - ;; 417 Expectation failed - ;; 422 Unprocessable Entity (Added by DAV) - ;; 423 Locked - ;; 424 Failed Dependency - (case url-http-response-status - (401 - ;; The request requires user authentication. The response - ;; MUST include a WWW-Authenticate header field containing a - ;; challenge applicable to the requested resource. The - ;; client MAY repeat the request with a suitable - ;; Authorization header field. - (url-http-handle-authentication nil)) - (402 - ;; This code is reserved for future use - (url-mark-buffer-as-dead parse-buffer) - (error "Somebody wants you to give them money")) - (403 - ;; The server understood the request, but is refusing to - ;; fulfill it. Authorization will not help and the request - ;; SHOULD NOT be repeated. - (setq success t)) - (404 - ;; Not found - (setq success t)) - (405 - ;; The method specified in the Request-Line is not allowed - ;; for the resource identified by the Request-URI. The - ;; response MUST include an Allow header containing a list of - ;; valid methods for the requested resource. - (setq success t)) - (406 - ;; The resource identified by the request is only capable of - ;; generating response entities which have content - ;; characteristics nota cceptable according to the accept - ;; headers sent in the request. - (setq success t)) - (407 - ;; This code is similar to 401 (Unauthorized), but indicates - ;; that the client must first authenticate itself with the - ;; proxy. The proxy MUST return a Proxy-Authenticate header - ;; field containing a challenge applicable to the proxy for - ;; the requested resource. - (url-http-handle-authentication t)) - (408 - ;; The client did not produce a request within the time that - ;; the server was prepared to wait. The client MAY repeat - ;; the request without modifications at any later time. - (setq success t)) - (409 - ;; The request could not be completed due to a conflict with - ;; the current state of the resource. This code is only - ;; allowed in situations where it is expected that the user - ;; mioght be able to resolve the conflict and resubmit the - ;; request. The response body SHOULD include enough - ;; information for the user to recognize the source of the - ;; conflict. - (setq success t)) - (410 - ;; The requested resource is no longer available at the - ;; server and no forwarding address is known. - (setq success t)) - (411 - ;; The server refuses to accept the request without a defined - ;; Content-Length. The client MAY repeat the request if it - ;; adds a valid Content-Length header field containing the - ;; length of the message-body in the request message. - ;; - ;; NOTE - this will never happen because - ;; `url-http-create-request' automatically calculates the - ;; content-length. - (setq success t)) - (412 - ;; The precondition given in one or more of the - ;; request-header fields evaluated to false when it was - ;; tested on the server. - (setq success t)) - ((413 414) - ;; The server is refusing to process a request because the - ;; request entity|URI is larger than the server is willing or - ;; able to process. - (setq success t)) - (415 - ;; The server is refusing to service the request because the - ;; entity of the request is in a format not supported by the - ;; requested resource for the requested method. - (setq success t)) - (416 - ;; A server SHOULD return a response with this status code if - ;; a request included a Range request-header field, and none - ;; of the range-specifier values in this field overlap the - ;; current extent of the selected resource, and the request - ;; did not include an If-Range request-header field. - (setq success t)) - (417 - ;; The expectation given in an Expect request-header field - ;; could not be met by this server, or, if the server is a - ;; proxy, the server has unambiguous evidence that the - ;; request could not be met by the next-hop server. - (setq success t)) - (otherwise - ;; The request could not be understood by the server due to - ;; malformed syntax. The client SHOULD NOT repeat the - ;; request without modifications. - (setq success t)))) - (5 - ;; 500 Internal server error - ;; 501 Not implemented - ;; 502 Bad gateway - ;; 503 Service unavailable - ;; 504 Gateway time-out - ;; 505 HTTP version not supported - ;; 507 Insufficient storage - (setq success t) - (case url-http-response-status - (501 - ;; The server does not support the functionality required to - ;; fulfill the request. - nil) - (502 - ;; The server, while acting as a gateway or proxy, received - ;; an invalid response from the upstream server it accessed - ;; in attempting to fulfill the request. - nil) - (503 - ;; The server is currently unable to handle the request due - ;; to a temporary overloading or maintenance of the server. - ;; The implication is that this is a temporary condition - ;; which will be alleviated after some delay. If known, the - ;; length of the delay MAY be indicated in a Retry-After - ;; header. If no Retry-After is given, the client SHOULD - ;; handle the response as it would for a 500 response. - nil) - (504 - ;; The server, while acting as a gateway or proxy, did not - ;; receive a timely response from the upstream server - ;; specified by the URI (e.g. HTTP, FTP, LDAP) or some other - ;; auxiliary server (e.g. DNS) it needed to access in - ;; attempting to complete the request. - nil) - (505 - ;; The server does not support, or refuses to support, the - ;; HTTP protocol version that was used in the request - ;; message. - nil) - (507 ; DAV - ;; The method could not be performed on the resource - ;; because the server is unable to store the representation - ;; needed to successfully complete the request. This - ;; condition is considered to be temporary. If the request - ;; which received this status code was the result of a user - ;; action, the request MUST NOT be repeated until it is - ;; requested by a separate user action. - nil))) - (otherwise - (error "Unknown class of HTTP response code: %d (%d)" - class url-http-response-status))) - (if (not success) - (url-mark-buffer-as-dead parse-buffer)) - (url-http-debug "Finished parsing HTTP headers: %S" success) - (widen) - success)) - -;; Miscellaneous -(defun url-http-activate-callback () - "Activate callback specified when this buffer was created." - (declare (special url-http-process - url-callback-function - url-callback-arguments)) - (url-http-mark-connection-as-free (url-host url-current-object) - (url-port url-current-object) - url-http-process) - (url-http-debug "Activating callback in buffer (%s)" (buffer-name)) - (apply url-callback-function url-callback-arguments)) - -;; ) - -;; These unfortunately cannot be macros... please ignore them! -(defun url-http-idle-sentinel (proc why) - "Remove this (now defunct) process PROC from the list of open connections." - (maphash (lambda (key val) - (if (memq proc val) - (puthash key (delq proc val) url-http-open-connections))) - url-http-open-connections)) - -(defun url-http-end-of-document-sentinel (proc why) - ;; Sentinel used for old HTTP/0.9 or connections we know are going - ;; to die as the 'end of document' notifier. - (url-http-debug "url-http-end-of-document-sentinel in buffer (%s)" - (process-buffer proc)) - (url-http-idle-sentinel proc why) - (save-excursion - (set-buffer (process-buffer proc)) - (goto-char (point-min)) - (if (not (looking-at "HTTP/")) - ;; HTTP/0.9 just gets passed back no matter what - (url-http-activate-callback) - (if (url-http-parse-headers) - (url-http-activate-callback))))) - -(defun url-http-simple-after-change-function (st nd length) - ;; Function used when we do NOT know how long the document is going to be - ;; Just _very_ simple 'downloaded %d' type of info. - (declare (special url-http-end-of-headers)) - (url-lazy-message "Reading %s..." (url-pretty-length nd))) - -(defun url-http-content-length-after-change-function (st nd length) - "Function used when we DO know how long the document is going to be. -More sophisticated percentage downloaded, etc. -Also does minimal parsing of HTTP headers and will actually cause -the callback to be triggered." - (declare (special url-current-object - url-http-end-of-headers - url-http-content-length - url-http-content-type - url-http-process)) - (if url-http-content-type - (url-display-percentage - "Reading [%s]... %s of %s (%d%%)" - (url-percentage (- nd url-http-end-of-headers) - url-http-content-length) - url-http-content-type - (url-pretty-length (- nd url-http-end-of-headers)) - (url-pretty-length url-http-content-length) - (url-percentage (- nd url-http-end-of-headers) - url-http-content-length)) - (url-display-percentage - "Reading... %s of %s (%d%%)" - (url-percentage (- nd url-http-end-of-headers) - url-http-content-length) - (url-pretty-length (- nd url-http-end-of-headers)) - (url-pretty-length url-http-content-length) - (url-percentage (- nd url-http-end-of-headers) - url-http-content-length))) - - (if (> (- nd url-http-end-of-headers) url-http-content-length) - (progn - ;; Found the end of the document! Wheee! - (url-display-percentage nil nil) - (message "Reading... done.") - (if (url-http-parse-headers) - (url-http-activate-callback))))) - -(defun url-http-chunked-encoding-after-change-function (st nd length) - "Function used when dealing with 'chunked' encoding. -Cannot give a sophisticated percentage, but we need a different -function to look for the special 0-length chunk that signifies -the end of the document." - (declare (special url-current-object - url-http-end-of-headers - url-http-content-type - url-http-chunked-length - url-http-chunked-counter - url-http-process url-http-chunked-start)) - (save-excursion - (goto-char st) - (let ((read-next-chunk t) - (case-fold-search t) - (regexp nil) - (no-initial-crlf nil)) - ;; We need to loop thru looking for more chunks even within - ;; one after-change-function call. - (while read-next-chunk - (setq no-initial-crlf (= 0 url-http-chunked-counter)) - (if url-http-content-type - (url-display-percentage nil - "Reading [%s]... chunk #%d" - url-http-content-type url-http-chunked-counter) - (url-display-percentage nil - "Reading... chunk #%d" - url-http-chunked-counter)) - (url-http-debug "Reading chunk %d (%d %d %d)" - url-http-chunked-counter st nd length) - (setq regexp (if no-initial-crlf - "\\([0-9a-z]+\\).*\r?\n" - "\r?\n\\([0-9a-z]+\\).*\r?\n")) - - (if url-http-chunked-start - ;; We know how long the chunk is supposed to be, skip over - ;; leading crap if possible. - (if (> nd (+ url-http-chunked-start url-http-chunked-length)) - (progn - (url-http-debug "Got to the end of chunk #%d!" - url-http-chunked-counter) - (goto-char (+ url-http-chunked-start - url-http-chunked-length))) - (url-http-debug "Still need %d bytes to hit end of chunk" - (- (+ url-http-chunked-start - url-http-chunked-length) - nd)) - (setq read-next-chunk nil))) - (if (not read-next-chunk) - (url-http-debug "Still spinning for next chunk...") - (if no-initial-crlf (skip-chars-forward "\r\n")) - (if (not (looking-at regexp)) - (progn - ;; Must not have received the entirety of the chunk header, - ;; need to spin some more. - (url-http-debug "Did not see start of chunk @ %d!" (point)) - (setq read-next-chunk nil)) - (add-text-properties (match-beginning 0) (match-end 0) - (list 'start-open t - 'end-open t - 'chunked-encoding t - 'face (if (featurep 'xemacs) - 'text-cursor - 'cursor) - 'invisible t)) - (setq url-http-chunked-length (string-to-int (buffer-substring - (match-beginning 1) - (match-end 1)) - 16) - url-http-chunked-counter (1+ url-http-chunked-counter) - url-http-chunked-start (set-marker - (or url-http-chunked-start - (make-marker)) - (match-end 0))) -; (if (not url-http-debug) - (delete-region (match-beginning 0) (match-end 0));) - (url-http-debug "Saw start of chunk %d (length=%d, start=%d" - url-http-chunked-counter url-http-chunked-length - (marker-position url-http-chunked-start)) - (if (= 0 url-http-chunked-length) - (progn - ;; Found the end of the document! Wheee! - (url-http-debug "Saw end of stream chunk!") - (setq read-next-chunk nil) - (url-display-percentage nil nil) - (goto-char (match-end 1)) - (if (re-search-forward "^\r*$" nil t) - (message "Saw end of trailers...")) - (if (url-http-parse-headers) - (url-http-activate-callback)))))))))) - -(defun url-http-wait-for-headers-change-function (st nd length) - ;; This will wait for the headers to arrive and then splice in the - ;; next appropriate after-change-function, etc. - (declare (special url-current-object - url-http-end-of-headers - url-http-content-type - url-http-content-length - url-http-transfer-encoding - url-callback-function - url-callback-arguments - url-http-process - url-http-method - url-http-after-change-function - url-http-response-status)) - (url-http-debug "url-http-wait-for-headers-change-function (%s)" - (buffer-name)) - (if (not (bobp)) - (let ((end-of-headers nil) - (old-http nil) - (content-length nil)) - (goto-char (point-min)) - (if (not (looking-at "^HTTP/[1-9]\\.[0-9]")) - ;; Not HTTP/x.y data, must be 0.9 - ;; God, I wish this could die. - (setq end-of-headers t - url-http-end-of-headers 0 - old-http t) - (if (re-search-forward "^\r*$" nil t) - ;; Saw the end of the headers - (progn - (url-http-debug "Saw end of headers... (%s)" (buffer-name)) - (setq url-http-end-of-headers (set-marker (make-marker) - (point)) - end-of-headers t) - (url-http-clean-headers)))) - - (if (not end-of-headers) - ;; Haven't seen the end of the headers yet, need to wait - ;; for more data to arrive. - nil - (if old-http - (message "HTTP/0.9 How I hate thee!") - (progn - (url-http-parse-response) - (mail-narrow-to-head) - ;;(narrow-to-region (point-min) url-http-end-of-headers) - (setq url-http-transfer-encoding (mail-fetch-field - "transfer-encoding") - url-http-content-type (mail-fetch-field "content-type")) - (if (mail-fetch-field "content-length") - (setq url-http-content-length - (string-to-int (mail-fetch-field "content-length")))) - (widen))) - (if url-http-transfer-encoding - (setq url-http-transfer-encoding - (downcase url-http-transfer-encoding))) - - (cond - ((or (= url-http-response-status 204) - (= url-http-response-status 205)) - (url-http-debug "%d response must have headers only (%s)." - url-http-response-status (buffer-name)) - (if (url-http-parse-headers) - (url-http-activate-callback))) - ((string= "HEAD" url-http-method) - ;; A HEAD request is _ALWAYS_ terminated by the header - ;; information, regardless of any entity headers, - ;; according to section 4.4 of the HTTP/1.1 draft. - (url-http-debug "HEAD request must have headers only (%s)." - (buffer-name)) - (if (url-http-parse-headers) - (url-http-activate-callback))) - ((string= "CONNECT" url-http-method) - ;; A CONNECT request is finished, but we cannot stick this - ;; back on the free connectin list - (url-http-debug "CONNECT request must have headers only.") - (if (url-http-parse-headers) - (url-http-activate-callback))) - ((equal url-http-response-status 304) - ;; Only allowed to have a header section. We have to handle - ;; this here instead of in url-http-parse-headers because if - ;; you have a cached copy of something without a known - ;; content-length, and try to retrieve it from the cache, we'd - ;; fall into the 'being dumb' section and wait for the - ;; connection to terminate, which means we'd wait for 10 - ;; seconds for the keep-alives to time out on some servers. - (if (url-http-parse-headers) - (url-http-activate-callback))) - (old-http - ;; HTTP/0.9 always signaled end-of-connection by closing the - ;; connection. - (url-http-debug - "Saw HTTP/0.9 response, connection closed means end of document.") - (setq url-http-after-change-function - 'url-http-simple-after-change-function)) - ((equal url-http-transfer-encoding "chunked") - (url-http-debug "Saw chunked encoding.") - (setq url-http-after-change-function - 'url-http-chunked-encoding-after-change-function) - (if (> nd url-http-end-of-headers) - (progn - (url-http-debug - "Calling initial chunked-encoding for extra data at end of headers") - (url-http-chunked-encoding-after-change-function - (marker-position url-http-end-of-headers) nd - (- nd url-http-end-of-headers))))) - ((integerp url-http-content-length) - (url-http-debug - "Got a content-length, being smart about document end.") - (setq url-http-after-change-function - 'url-http-content-length-after-change-function) - (cond - ((= 0 url-http-content-length) - ;; We got a NULL body! Activate the callback - ;; immediately! - (url-http-debug - "Got 0-length content-length, activating callback immediately.") - (if (url-http-parse-headers) - (url-http-activate-callback))) - ((> nd url-http-end-of-headers) - ;; Have some leftover data - (url-http-debug "Calling initial content-length for extra data at end of headers") - (url-http-content-length-after-change-function - (marker-position url-http-end-of-headers) - nd - (- nd url-http-end-of-headers))) - (t - nil))) - (t - (url-http-debug "No content-length, being dumb.") - (setq url-http-after-change-function - 'url-http-simple-after-change-function))))) - ;; We are still at the beginning of the buffer... must just be - ;; waiting for a response. - (url-http-debug "Spinning waiting for headers...")) - (goto-char (point-max))) - -;;;###autoload -(defun url-http (url callback cbargs) - "Retrieve URL via HTTP asynchronously. -URL must be a parsed URL. See `url-generic-parse-url' for details. -When retrieval is completed, the function CALLBACK is executed with -CBARGS as the arguments." - (check-type url vector "Need a pre-parsed URL.") - (declare (special url-current-object - url-http-end-of-headers - url-http-content-type - url-http-content-length - url-http-transfer-encoding - url-http-after-change-function - url-callback-function - url-callback-arguments - url-http-method - url-http-extra-headers - url-http-data - url-http-chunked-length - url-http-chunked-start - url-http-chunked-counter - url-http-process)) - (let ((connection (url-http-find-free-connection (url-host url) - (url-port url))) - (buffer (generate-new-buffer (format " *http %s:%d*" - (url-host url) - (url-port url))))) - (if (not connection) - ;; Failed to open the connection for some reason - (progn - (kill-buffer buffer) - (setq buffer nil) - (error "Could not create connection to %s:%d" (url-host url) - (url-port url))) - (save-excursion - (set-buffer buffer) - (mm-disable-multibyte) - (setq url-current-object url - mode-line-format "%b [%s]") - - (dolist (var '(url-http-end-of-headers - url-http-content-type - url-http-content-length - url-http-transfer-encoding - url-http-after-change-function - url-http-response-status - url-http-chunked-length - url-http-chunked-counter - url-http-chunked-start - url-callback-function - url-callback-arguments - url-http-process - url-http-method - url-http-extra-headers - url-http-data)) - (set (make-local-variable var) nil)) - - (setq url-http-method (or url-request-method "GET") - url-http-extra-headers url-request-extra-headers - url-http-data url-request-data - url-http-process connection - url-http-chunked-length nil - url-http-chunked-start nil - url-http-chunked-counter 0 - url-callback-function callback - url-callback-arguments cbargs - url-http-after-change-function 'url-http-wait-for-headers-change-function) - - (set-process-buffer connection buffer) - (set-process-sentinel connection 'url-http-end-of-document-sentinel) - (set-process-filter connection 'url-http-generic-filter) - (process-send-string connection (url-http-create-request url)))) - buffer)) - -;; Since Emacs 19/20 does not allow you to change the -;; `after-change-functions' hook in the midst of running them, we fake -;; an after change by hooking into the process filter and inserting -;; the data ourselves. This is slightly less efficient, but there -;; were tons of weird ways the after-change code was biting us in the -;; shorts. -(defun url-http-generic-filter (proc data) - ;; Sometimes we get a zero-length data chunk after the process has - ;; been changed to 'free', which means it has no buffer associated - ;; with it. Do nothing if there is no buffer, or 0 length data. - (declare (special url-http-after-change-function)) - (and (process-buffer proc) - (/= (length data) 0) - (save-excursion - (set-buffer (process-buffer proc)) - (url-http-debug "Calling after change function `%s' for `%S'" url-http-after-change-function proc) - (funcall url-http-after-change-function - (point-max) - (progn - (goto-char (point-max)) - (insert data) - (point-max)) - (length data))))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; file-name-handler stuff from here on out -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(if (not (fboundp 'symbol-value-in-buffer)) - (defun url-http-symbol-value-in-buffer (symbol buffer - &optional unbound-value) - "Return the value of SYMBOL in BUFFER, or UNBOUND-VALUE if it is unbound." - (save-excursion - (set-buffer buffer) - (if (not (boundp symbol)) - unbound-value - (symbol-value symbol)))) - (defalias 'url-http-symbol-value-in-buffer 'symbol-value-in-buffer)) - -(defun url-http-head (url) - (let ((url-request-method "HEAD") - (url-request-data nil)) - (url-retrieve-synchronously url))) - -;;;###autoload -(defun url-http-file-exists-p (url) - (let ((version nil) - (status nil) - (exists nil) - (buffer (url-http-head url))) - (if (not buffer) - (setq exists nil) - (setq status (url-http-symbol-value-in-buffer 'url-http-response-status - buffer 500) - exists (and (>= status 200) (< status 300))) - (kill-buffer buffer)) - exists)) - -;;;###autoload -(defalias 'url-http-file-readable-p 'url-http-file-exists-p) - -(defun url-http-head-file-attributes (url) - (let ((buffer (url-http-head url)) - (attributes nil)) - (when buffer - (setq attributes (make-list 11 nil)) - (setf (nth 1 attributes) 1) ; Number of links to file - (setf (nth 2 attributes) 0) ; file uid - (setf (nth 3 attributes) 0) ; file gid - (setf (nth 7 attributes) ; file size - (url-http-symbol-value-in-buffer 'url-http-content-length - buffer -1)) - (setf (nth 8 attributes) (eval-when-compile (make-string 10 ?-))) - (kill-buffer buffer)) - attributes)) - -;;;###autoload -(defun url-http-file-attributes (url) - (if (url-dav-supported-p url) - (url-dav-file-attributes url) - (url-http-head-file-attributes url))) - -;;;###autoload -(defun url-http-options (url) - "Returns a property list describing options available for URL. -This list is retrieved using the `OPTIONS' HTTP method. - -Property list members: - -methods - A list of symbols specifying what HTTP methods the resource - supports. - -dav - A list of numbers specifying what DAV protocol/schema versions are - supported. - -dasl - A list of supported DASL search types supported (string form) - -ranges - A list of the units available for use in partial document fetches. - -p3p - The `Platform For Privacy Protection' description for the resource. - Currently this is just the raw header contents. This is likely to - change once P3P is formally supported by the URL package or - Emacs/W3. -" - (let* ((url-request-method "OPTIONS") - (url-request-data nil) - (buffer (url-retrieve-synchronously url)) - (header nil) - (options nil)) - (when (and buffer (= 2 (/ (url-http-symbol-value-in-buffer - 'url-http-response-status buffer 0) 100))) - ;; Only parse the options if we got a 2xx response code! - (save-excursion - (save-restriction - (save-match-data - (set-buffer buffer) - (mail-narrow-to-head) - - ;; Figure out what methods are supported. - (when (setq header (mail-fetch-field "allow")) - (setq options (plist-put - options 'methods - (mapcar 'intern (split-string header "[ ,]+"))))) - - ;; Check for DAV - (when (setq header (mail-fetch-field "dav")) - (setq options (plist-put - options 'dav - (delq 0 - (mapcar 'string-to-number - (split-string header "[, ]+")))))) - - ;; Now for DASL - (when (setq header (mail-fetch-field "dasl")) - (setq options (plist-put - options 'dasl - (split-string header "[, ]+")))) - - ;; P3P - should get more detailed here. FIXME - (when (setq header (mail-fetch-field "p3p")) - (setq options (plist-put options 'p3p header))) - - ;; Check for whether they accept byte-range requests. - (when (setq header (mail-fetch-field "accept-ranges")) - (setq options (plist-put - options 'ranges - (delq 'none - (mapcar 'intern - (split-string header "[, ]+")))))) - )))) - (if buffer (kill-buffer buffer)) - options)) - -(provide 'url-http) - -;;; url-http.el ends here diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-https.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-https.el deleted file mode 100644 index 27652792..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-https.el +++ /dev/null @@ -1,53 +0,0 @@ -;;; url-https.el --- HTTP over SSL routines -;; Author: $Author: wmperry $ -;; Created: $Date: 2001/11/22 14:32:13 $ -;; Version: $Revision: 1.3 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require 'url-gw) -(require 'url-util) -(require 'url-parse) -(require 'url-cookie) -(require 'url-http) - -(defconst url-https-default-port 443 "Default HTTPS port.") -(defconst url-https-asynchronous-p t "HTTPS retrievals are asynchronous.") -(defalias 'url-https-expand-file-name 'url-http-expand-file-name) - -(defmacro url-https-create-secure-wrapper (method args) - (` (defun (, (intern (format (if method "url-https-%s" "url-https") method))) (, args) - (, (format "HTTPS wrapper around `%s' call." (or method "url-http"))) - (condition-case () - (require 'ssl) - (error - (error "HTTPS support could not find `ssl' library."))) - (let ((url-gateway-method 'ssl)) - ((, (intern (format (if method "url-http-%s" "url-http") method))) (,@ (remove '&rest (remove '&optional args)))))))) - -(url-https-create-secure-wrapper nil (url callback cbargs)) -(url-https-create-secure-wrapper file-exists-p (url)) -(url-https-create-secure-wrapper file-readable-p (url)) -(url-https-create-secure-wrapper file-attributes (url)) - -(provide 'url-https) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-imap.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-imap.el deleted file mode 100644 index 3d143759..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-imap.el +++ /dev/null @@ -1,81 +0,0 @@ -;;; url-imap.el --- IMAP retrieval routines -;; Author: Simon Josefsson -;; Created: $Date: 2002/01/22 17:52:16 $ -;; Version: $Revision: 1.4 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -; Anyway, here's a teaser. It's quite broken in lots of regards, but at -; least it seem to work. At least a little. At least when called -; manually like this (I've no idea how it's supposed to be called): - -; (url-imap (url-generic-parse-url "imap://cyrus.andrew.cmu.edu/archive.c-client;UID=1021")) - -(eval-when-compile (require 'cl)) -(require 'url-util) -(require 'url-parse) -(require 'nnimap) -(require 'mm-util) - -(defconst url-imap-default-port 143 "Default IMAP port") - -(defun url-imap-open-host (host port user pass) - ;; xxx use user and password - (if (fboundp 'nnheader-init-server-buffer) - (nnheader-init-server-buffer)) - (let ((imap-username user) - (imap-password pass) - (authenticator (if user 'login 'anonymous))) - (if (stringp port) - (setq port (string-to-int port))) - (nnimap-open-server host - `((nnimap-server-port ,port) - (nnimap-stream 'network) - (nnimap-authenticator ,authenticator))))) - -(defun url-imap (url) - (check-type url vector "Need a pre-parsed URL.") - (save-excursion - (set-buffer (generate-new-buffer " *url-imap*")) - (mm-disable-multibyte) - (let* ((host (url-host url)) - (port (url-port url)) - ;; xxx decode mailbox (see rfc2192) - (mailbox (url-filename url)) - (coding-system-for-read 'binary)) - (and (eq (string-to-char mailbox) ?/) - (setq mailbox (substring mailbox 1))) - (url-imap-open-host host port (url-user url) (url-password url)) - (cond ((assoc "TYPE" (url-attributes url)) - ;; xxx list mailboxes (start gnus?) - ) - ((assoc "UID" (url-attributes url)) - ;; fetch message part - ;; xxx handle partial fetches - (insert "Content-type: message/rfc822\n\n") - (nnimap-request-article (cdr (assoc "UID" (url-attributes url))) - mailbox host (current-buffer))) - (t - ;; xxx list messages in mailbox (start gnus?) - ))) - (current-buffer))) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-irc.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-irc.el deleted file mode 100644 index c4005d19..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-irc.el +++ /dev/null @@ -1,78 +0,0 @@ -;;; url-irc.el --- IRC URL interface -;; Author: $Author: wmperry $ -;; Created: $Date: 1999/12/24 12:13:33 $ -;; Version: $Revision: 1.2 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;;; IRC URLs are defined in http://www.w3.org/Addressing/draft-mirashi-url-irc-01.txt - -(require 'url-vars) -(require 'url-parse) - -(defconst url-irc-default-port 6667 "Default port for IRC connections") - -(defcustom url-irc-function 'url-irc-zenirc - "*Function to actually open an IRC connection. -Should be a function that takes several argument: - HOST - the hostname of the IRC server to contact - PORT - the port number of the IRC server to contact - CHANNEL - What channel on the server to visit right away (can be nil) - USER - What username to use -PASSWORD - What password to use" - :type '(choice (const :tag "ZEN IRC" :value 'url-irc-zenirc) - (function :tag "Other")) - :group 'url) - -(defun url-irc-zenirc (host port channel user password) - (let ((zenirc-buffer-name (if (and user host port) - (format "%s@%s:%d" user host port) - (format "%s:%d" host port))) - (zenirc-server-alist - (list - (list host port password nil user)))) - (zenirc) - (goto-char (point-max)) - (if (not channel) - nil - (insert "/join " channel) - (zenirc-send-line)))) - -;;;###autoload -(defun url-irc (url) - (let* ((host (url-host url)) - (port (string-to-int (url-port url))) - (pass (url-password url)) - (user (url-user url)) - (chan (url-filename url))) - (if (url-target url) - (setq chan (concat chan "#" (url-target url)))) - (if (string-match "^/" chan) - (setq chan (substring chan 1 nil))) - (if (= (length chan) 0) - (setq chan nil)) - (funcall url-irc-function host port chan user pass) - nil)) - -(provide 'url-irc) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-ldap.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-ldap.el deleted file mode 100644 index 67409e39..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-ldap.el +++ /dev/null @@ -1,233 +0,0 @@ -;;; url-ldap.el --- LDAP Uniform Resource Locator retrieval code -;; Author: $Author: wmperry $ -;; Created: $Date: 1999/11/26 12:11:50 $ -;; Version: $Revision: 1.1.1.1 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1998 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require 'url-vars) -(require 'url-parse) -(require 'url-util) - -;; This has been implemented from RFC2255 'The LDAP URL Format' (Dec 1997) -;; -;; basic format is: ldap://host:port/dn?attributes?scope?filter?extensions -;; -;; Test URLs: -;; ldap://ldap.itd.umich.edu/cn%3Dumbflabmanager%2C%20ou%3DUser%20Groups%2C%20ou%3DGroups%2C%20o%3DUniversity%20of%20Michigan%2C%20c%3DUS -;; ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US -;; -;; For simple queries, I have verified compatibility with Netscape -;; Communicator v4.5 under linux. -;; -;; For anything _useful_ though, like specifying the attributes, -;; scope, filter, or extensions, netscape claims the URL format is -;; unrecognized. So I don't think it supports anything other than the -;; defaults (scope=base,attributes=*,filter=(objectClass=*) - -(defconst url-ldap-default-port 389 "Default LDAP port.") -(defalias 'url-ldap-expand-file-name 'url-default-expander) - -(defvar url-ldap-pretty-names - '(("l" . "City") - ("objectclass" . "Object Class") - ("o" . "Organization") - ("ou" . "Organizational Unit") - ("cn" . "Name") - ("sn" . "Last Name") - ("givenname" . "First Name") - ("mail" . "Email") - ("title" . "Title") - ("c" . "Country") - ("postalcode" . "ZIP Code") - ("telephonenumber" . "Phone Number") - ("facsimiletelephonenumber" . "Fax") - ("postaladdress" . "Mailing Address") - ("description" . "Notes")) - "*An assoc list mapping LDAP attribute names to pretty descriptions of them.") - -(defvar url-ldap-attribute-formatters - '(("mail" . (lambda (x) (format "%s" x x))) - ("owner" . url-ldap-dn-formatter) - ("creatorsname" . url-ldap-dn-formatter) - ("jpegphoto" . url-ldap-image-formatter) - ("usercertificate" . url-ldap-certificate-formatter) - ("modifiersname" . url-ldap-dn-formatter) - ("namingcontexts" . url-ldap-dn-formatter) - ("defaultnamingcontext" . url-ldap-dn-formatter) - ("member" . url-ldap-dn-formatter)) - "*An assoc list mapping LDAP attribute names to pretty formatters for them.") - -(defsubst url-ldap-attribute-pretty-name (n) - (or (cdr-safe (assoc (downcase n) url-ldap-pretty-names)) n)) - -(defsubst url-ldap-attribute-pretty-desc (n v) - (if (string-match "^\\([^;]+\\);" n) - (setq n (match-string 1 n))) - (funcall (or (cdr-safe (assoc (downcase n) url-ldap-attribute-formatters)) 'identity) v)) - -(defun url-ldap-dn-formatter (dn) - (concat "" dn "")) - -(defun url-ldap-certificate-formatter (data) - (condition-case () - (require 'ssl) - (error nil)) - (let ((vals (and (fboundp 'ssl-certificate-information) - (ssl-certificate-information data)))) - (if (not vals) - "Unable to parse certificate" - (concat "\n" - (mapconcat - (lambda (ava) - (format "\n" (car ava) (cdr ava))) - vals "\n") - "
%s%s
\n")))) - -(defun url-ldap-image-formatter (data) - (format "JPEG Photo" - (url-hexify-string (base64-encode-string data)))) - -;;;###autoload -(defun url-ldap (url) - (save-excursion - (set-buffer (generate-new-buffer " *url-ldap*")) - (setq url-current-object url) - (insert "Content-type: text/html\r\n\r\n") - (if (not (fboundp 'ldap-search-internal)) - (insert "\n" - " \n" - " LDAP Not Supported\n" - " \n" - " \n" - " \n" - "

LDAP Not Supported

\n" - "

\n" - " This version of Emacs does not support LDAP.\n" - "

\n" - " \n" - "\n") - (let* ((binddn nil) - (data (url-filename url)) - (host (url-host url)) - (port (url-port url)) - (base-object nil) - (attributes nil) - (scope nil) - (filter nil) - (extensions nil) - (connection nil) - (results nil) - (extract-dn (and (fboundp 'function-max-args) - (= (function-max-args 'ldap-search-internal) 7)))) - - ;; Get rid of leading / - (if (string-match "^/" data) - (setq data (substring data 1))) - - (setq data (mapcar (lambda (x) (if (/= (length x) 0) x nil)) (split-string data "\\?")) - base-object (nth 0 data) - attributes (nth 1 data) - scope (nth 2 data) - filter (nth 3 data) - extensions (nth 4 data)) - - ;; fill in the defaults - (setq base-object (url-unhex-string (or base-object "")) - scope (intern (url-unhex-string (or scope "base"))) - filter (url-unhex-string (or filter "(objectClass=*)"))) - - (if (not (memq scope '(base one tree))) - (error "Malformed LDAP URL: Unknown scope: %S" scope)) - - ;; Convert to the internal LDAP support scoping names. - (setq scope (cdr (assq scope '((base . base) (one . onelevel) (sub . subtree))))) - - (if attributes - (setq attributes (mapcar 'url-unhex-string (split-string attributes ",")))) - - ;; Parse out the exentions - (if extensions - (setq extensions (mapcar (lambda (ext) - (if (string-match "\\([^=]*\\)=\\(.*\\)" ext) - (cons (match-string 1 ext) (match-string 2 ext)) - (cons ext ext))) - (split-string extensions ",")) - extensions (mapcar (lambda (ext) - (cons (url-unhex-string (car ext)) - (url-unhex-string (cdr ext)))) - extensions))) - - (setq binddn (cdr-safe (or (assoc "bindname" extensions) - (assoc "!bindname" extensions)))) - - ;; Now, let's actually do something with it. - (setq connection (ldap-open host (if binddn (list 'binddn binddn))) - results (if extract-dn - (ldap-search-internal connection filter base-object scope attributes nil t) - (ldap-search-internal connection filter base-object scope attributes nil))) - - (ldap-close connection) - (insert "\n" - " \n" - " LDAP Search Results\n" - " \n" - " \n" - " \n" - "

" (int-to-string (length results)) " matches

\n") - - (mapc (lambda (obj) - (insert "
\n" - " \n") - (if extract-dn - (insert " \n")) - (mapc (lambda (attr) - (if (= (length (cdr attr)) 1) - ;; single match, easy - (insert " \n") - ;; Multiple matches, slightly uglier - (insert " \n" - (format " " - " \n"))) - (if extract-dn (cdr obj) obj)) - (insert "
" (car obj) "
" - (url-ldap-attribute-pretty-name (car attr)) - "" - (url-ldap-attribute-pretty-desc (car attr) (car (cdr attr))) - "
" (length (cdr attr))) - (url-ldap-attribute-pretty-name (car attr)) "" - (mapconcat (lambda (x) - (url-ldap-attribute-pretty-desc (car attr) x)) - (cdr attr) - "
\n") - "
\n")) - results) - - (insert "
\n" - " \n" - "\n"))) - (current-buffer))) - -(provide 'url-ldap) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-mailto.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-mailto.el deleted file mode 100644 index 02e41041..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-mailto.el +++ /dev/null @@ -1,129 +0,0 @@ -;;; url-mail.el --- Mail Uniform Resource Locator retrieval code -;; Author: $Author: fx $ -;; Created: $Date: 2001/10/05 17:04:06 $ -;; Version: $Revision: 1.4 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(eval-when-compile (require 'cl)) -(require 'url-vars) -(require 'url-parse) -(require 'url-util) - -;;;###autoload -(defun url-mail (&rest args) - (interactive "P") - (if (fboundp 'message-mail) - (apply 'message-mail args) - (or (apply 'mail args) - (error "Mail aborted")))) - -(defun url-mail-goto-field (field) - (if (not field) - (goto-char (point-max)) - (let ((dest nil) - (lim nil) - (case-fold-search t)) - (save-excursion - (goto-char (point-min)) - (if (re-search-forward (regexp-quote mail-header-separator) nil t) - (setq lim (match-beginning 0))) - (goto-char (point-min)) - (if (re-search-forward (concat "^" (regexp-quote field) ":") lim t) - (setq dest (match-beginning 0)))) - (if dest - (progn - (goto-char dest) - (end-of-line)) - (goto-char lim) - (insert (capitalize field) ": ") - (save-excursion - (insert "\n")))))) - -;;;###autoload -(defun url-mailto (url) - "Handle the mailto: URL syntax." - (if (url-user url) - ;; malformed mailto URL (mailto://wmperry@gnu.org instead of - ;; mailto:wmperry@gnu.org - (url-set-filename url (concat (url-user url) "@" (url-filename url)))) - (setq url (url-filename url)) - (let (to args source-url subject func headers-start) - (if (string-match (regexp-quote "?") url) - (setq headers-start (match-end 0) - to (url-unhex-string (substring url 0 (match-beginning 0))) - args (url-parse-query-string - (substring url headers-start nil) t)) - (setq to (url-unhex-string url))) - (setq source-url (url-view-url t)) - (if (and url-request-data (not (assoc "subject" args))) - (setq args (cons (list "subject" - (concat "Automatic submission from " - url-package-name "/" - url-package-version)) args))) - (if (and source-url (not (assoc "x-url-from" args))) - (setq args (cons (list "x-url-from" source-url) args))) - - (if (assoc "to" args) - (push to (cdr (assoc "to" args))) - (setq args (cons (list "to" to) args))) - (setq subject (cdr-safe (assoc "subject" args))) - (if (fboundp url-mail-command) (funcall url-mail-command) (mail)) - (while args - (if (string= (caar args) "body") - (progn - (goto-char (point-max)) - (insert (mapconcat 'identity (cdar args) "\n"))) - (url-mail-goto-field (caar args)) - (setq func (intern-soft (concat "mail-" (caar args)))) - (insert (mapconcat 'identity (cdar args) ", "))) - (setq args (cdr args))) - ;; (url-mail-goto-field "User-Agent") -;; (insert url-package-name "/" url-package-version " URL/" url-version) - (if (not url-request-data) - (progn - (set-buffer-modified-p nil) - (if subject - (url-mail-goto-field nil) - (url-mail-goto-field "subject"))) - (if url-request-extra-headers - (mapconcat - (lambda (x) - (url-mail-goto-field (car x)) - (insert (cdr x))) - url-request-extra-headers "")) - (goto-char (point-max)) - (insert url-request-data) - ;; It seems Microsoft-ish to send without warning. - ;; Fixme: presumably this should depend on a privacy setting. - (if (y-or-n-p "Send this auto-generated mail? ") - (cond ((eq url-mail-command 'compose-mail) - (funcall (get mail-user-agent 'sendfunc) nil)) - ;; otherwise, we can't be sure - ((fboundp 'message-mail) - (message-send-and-exit)) - (t (mail-send-and-exit nil))))) - nil)) - -(provide 'url-mailto) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-methods.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-methods.el deleted file mode 100644 index 505fa083..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-methods.el +++ /dev/null @@ -1,149 +0,0 @@ -;;; url-methods.el --- Load URL schemes as needed -;; Author: $Author: wmperry $ -;; Created: $Date: 2002/11/04 14:40:32 $ -;; Version: $Revision: 1.14 $ -;; Keywords: comm, data, processes, hypermedia - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(eval-when-compile - (require 'cl)) - -;; This loads up some of the small, silly URLs that I really don't -;; want to bother putting in their own separate files. -(require 'url-auto) -(require 'url-parse) - -(defvar url-scheme-registry (make-hash-table :size 7 :test 'equal)) - -(defconst url-scheme-methods - '((default-port . variable) - (asynchronous-p . variable) - (expand-file-name . function) - (file-exists-p . function) - (file-attributes . function) - (parse-url . function) - (file-symlink-p . function) - (file-writable-p . function) - (file-directory-p . function) - (file-executable-p . function) - (directory-files . function) - (file-truename . function)) - "Assoc-list of methods that each URL loader can provide.") - -(defconst url-scheme-default-properties - (list 'name "unknown" - 'loader 'url-scheme-default-loader - 'default-port 0 - 'expand-file-name 'url-identity-expander - 'parse-url 'url-generic-parse-url - 'asynchronous-p nil - 'file-directory-p 'ignore - 'file-truename (lambda (&rest args) - (url-recreate-url (car args))) - 'file-exists-p 'ignore - 'file-attributes 'ignore)) - -(defun url-scheme-default-loader (url &optional callback cbargs) - "Signal an error for an unknown URL scheme." - (error "Unkown URL scheme: %s" (url-type url))) - -(defun url-scheme-register-proxy (scheme) - "Automatically find a proxy for SCHEME and put it in `url-proxy-services'." - (let* ((env-var (concat scheme "_proxy")) - (env-proxy (or (getenv (upcase env-var)) - (getenv (downcase env-var)))) - (cur-proxy (assoc scheme url-proxy-services)) - (urlobj nil)) - - ;; Store any proxying information - this will not overwrite an old - ;; entry, so that people can still set this information in their - ;; .emacs file - (cond - (cur-proxy nil) ; Keep their old settings - ((null env-proxy) nil) ; No proxy setup - ;; First check if its something like hostname:port - ((string-match "^\\([^:]+\\):\\([0-9]+\\)$" env-proxy) - (setq urlobj (url-generic-parse-url nil)) ; Get a blank object - (url-set-type urlobj "http") - (url-set-host urlobj (match-string 1 env-proxy)) - (url-set-port urlobj (string-to-number (match-string 2 env-proxy)))) - ;; Then check if its a fully specified URL - ((string-match url-nonrelative-link env-proxy) - (setq urlobj (url-generic-parse-url env-proxy)) - (url-set-type urlobj "http") - (url-set-target urlobj nil)) - ;; Finally, fall back on the assumption that its just a hostname - (t - (setq urlobj (url-generic-parse-url nil)) ; Get a blank object - (url-set-type urlobj "http") - (url-set-host urlobj env-proxy))) - - (if (and (not cur-proxy) urlobj) - (progn - (setq url-proxy-services - (cons (cons scheme (format "%s:%d" (url-host urlobj) - (url-port urlobj))) - url-proxy-services)) - (message "Using a proxy for %s..." scheme))))) - -(defun url-scheme-get-property (scheme property) - "Get property of a URL SCHEME. -Will automatically try to load a backend from url-SCHEME.el if -it has not already been loaded." - (setq scheme (downcase scheme)) - (let ((desc (gethash scheme url-scheme-registry))) - (if (not desc) - (let* ((stub (concat "url-" scheme)) - (loader (intern stub))) - (condition-case () - (require loader) - (error nil)) - (if (fboundp loader) - (progn - ;; Found the module to handle URLs - (url-scheme-register-proxy scheme) - (setq desc (list 'name scheme - 'loader loader)) - (dolist (cell url-scheme-methods) - (let ((symbol (intern-soft (format "%s-%s" stub (car cell)))) - (type (cdr cell))) - (if symbol - (case type - (function - ;; Store the symbol name of a function - (if (fboundp symbol) - (setq desc (plist-put desc (car cell) symbol)))) - (variable - ;; Store the VALUE of a variable - (if (boundp symbol) - (setq desc (plist-put desc (car cell) - (symbol-value symbol))))) - (otherwise - (error "Malformed url-scheme-methods entry: %S" - cell)))))) - (puthash scheme desc url-scheme-registry))))) - (or (plist-get desc property) - (plist-get url-scheme-default-properties property)))) - -(provide 'url-methods) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-misc.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-misc.el deleted file mode 100644 index 9a9e58b2..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-misc.el +++ /dev/null @@ -1,119 +0,0 @@ -;;; url-misc.el --- Misc Uniform Resource Locator retrieval code -;; Author: $Author: fx $ -;; Created: $Date: 2002/04/22 22:23:59 $ -;; Version: $Revision: 1.5 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996, 97, 98, 99, 2002 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require 'url-vars) -(require 'url-parse) -(autoload 'Info-goto-node "info" "" t) -(autoload 'man "man" nil t) - -;;;###autoload -(defun url-man (url) - "Fetch a Unix manual page URL." - (man (url-filename url)) - nil) - -;;;###autoload -(defun url-info (url) - "Fetch a GNU Info URL." - ;; Fetch an info node - (let* ((fname (url-filename url)) - (node (url-unhex-string (or (url-target url) "Top")))) - (if (and fname node) - (Info-goto-node (concat "(" fname ")" node)) - (error "Malformed url: %s" (url-recreate-url url))) - nil)) - -(defun url-do-terminal-emulator (type server port user) - (terminal-emulator - (generate-new-buffer (format "%s%s" (if user (concat user "@") "") server)) - (case type - (rlogin "rlogin") - (telnet "telnet") - (tn3270 "tn3270") - (otherwise - (error "Unknown terminal emulator required: %s" type))) - (case type - (rlogin - (if user - (list server "-l" user) - (list server))) - (telnet - (if user (message "Please log in as user: %s" user)) - (if port - (list server port) - (list server))) - (tn3270 - (if user (message "Please log in as user: %s" user)) - (list server))))) - -;;;###autoload -(defun url-generic-emulator-loader (url) - (let* ((type (intern (downcase (url-type url)))) - (server (url-host url)) - (name (url-user url)) - (port (url-port url))) - (url-do-terminal-emulator type server port name)) - nil) - -;;;###autoload -(defalias 'url-rlogin 'url-generic-emulator-loader) -;;;###autoload -(defalias 'url-telnet 'url-generic-emulator-loader) -;;;###autoload -(defalias 'url-tn3270 'url-generic-emulator-loader) - -;; RFC 2397 -;;;###autoload -(defun url-data (url) - "Fetch a data URL (RFC 2397)." - (let ((mediatype nil) - ;; The mediatype may need to be hex-encoded too -- see the RFC. - (desc (url-unhex-string (url-filename url))) - (encoding "8bit") - (data nil)) - (save-excursion - (if (not (string-match "\\([^,]*\\)?," desc)) - (error "Malformed data URL: %s" desc) - (setq mediatype (match-string 1 desc)) - (if (and mediatype (string-match ";base64\\'" mediatype)) - (setq mediatype (substring mediatype 0 (match-beginning 0)) - encoding "base64")) - (if (or (null mediatype) - (eq ?\; (aref mediatype 0))) - (setq mediatype (concat "text/plain" mediatype))) - (setq data (url-unhex-string (substring desc (match-end 0))))) - (set-buffer (generate-new-buffer " *url-data*")) - (mm-disable-multibyte) - (insert (format "Content-Length: %d\n" (length data)) - "Content-Type: " mediatype "\n" - "Content-Encoding: " encoding "\n" - "\n") - (if data (insert data)) - (current-buffer)))) - -(provide 'url-misc) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-news.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-news.el deleted file mode 100644 index f758b12f..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-news.el +++ /dev/null @@ -1,135 +0,0 @@ -;;; url-news.el --- News Uniform Resource Locator retrieval code -;; Author: $Author: fx $ -;; Created: $Date: 2001/05/22 16:13:00 $ -;; Version: $Revision: 1.3 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(require 'url-vars) -(require 'url-util) -(require 'url-parse) -(require 'nntp) -(autoload 'url-warn "url") -(autoload 'gnus-group-read-ephemeral-group "gnus-group") -(eval-when-compile (require 'cl)) - -(defgroup url-news nil - "News related options" - :group 'url) - -(defun url-news-open-host (host port user pass) - (if (fboundp 'nnheader-init-server-buffer) - (nnheader-init-server-buffer)) - (nntp-open-server host (list (string-to-int port))) - (if (and user pass) - (progn - (nntp-send-command "^.*\r?\n" "AUTHINFO USER" user) - (nntp-send-command "^.*\r?\n" "AUTHINFO PASS" pass) - (if (not (nntp-server-opened host)) - (url-warn 'url (format "NNTP authentication to `%s' as `%s' failed" - host user)))))) - -(defun url-news-fetch-message-id (host message-id) - (let ((buf (generate-new-buffer " *url-news*"))) - (if (eq ?> (aref message-id (1- (length message-id)))) - nil - (setq message-id (concat "<" message-id ">"))) - (if (cdr-safe (nntp-request-article message-id nil host buf)) - ;; Successfully retrieved the article - nil - (save-excursion - (set-buffer buf) - (insert "Content-type: text/html\n\n" - "\n" - " \n" - " Error\n" - " \n" - " \n" - "
\n" - "

Error requesting article...

\n" - "

\n" - " The status message returned by the NNTP server was:" - "


\n" - " \n" - (nntp-status-message) - " \n" - "

\n" - "

\n" - " If you If you feel this is an error, send me mail\n" - "

\n" - "
\n" - " \n" - "\n" - "\n" - ))) - buf)) - -(defun url-news-fetch-newsgroup (newsgroup host) - (declare (special gnus-group-buffer)) - (if (string-match "^/+" newsgroup) - (setq newsgroup (substring newsgroup (match-end 0)))) - (if (string-match "/+$" newsgroup) - (setq newsgroup (substring newsgroup 0 (match-beginning 0)))) - - ;; This saves us from checking new news if GNUS is already running - ;; FIXME - is it relatively safe to use gnus-alive-p here? FIXME - (if (or (not (get-buffer gnus-group-buffer)) - (save-excursion - (set-buffer gnus-group-buffer) - (not (eq major-mode 'gnus-group-mode)))) - (gnus)) - (set-buffer gnus-group-buffer) - (goto-char (point-min)) - (gnus-group-read-ephemeral-group newsgroup - (list 'nntp host - 'nntp-open-connection-function - nntp-open-connection-function) - nil - (cons (current-buffer) 'browse))) - -;;;###autoload -(defun url-news (url) - ;; Find a news reference - (let* ((host (or (url-host url) url-news-server)) - (port (url-port url)) - (article-brackets nil) - (buf nil) - (article (url-filename url))) - (url-news-open-host host port (url-user url) (url-password url)) - (setq article (url-unhex-string article)) - (cond - ((string-match "@" article) ; Its a specific article - (setq buf (url-news-fetch-message-id host article))) - ((string= article "") ; List all newsgroups - (gnus)) - (t ; Whole newsgroup - (url-news-fetch-newsgroup article host))) - buf)) - -;;;###autoload -(defun url-snews (url) - (let ((nntp-open-connection-function 'nntp-open-ssl-stream)) - (url-news url))) - -(provide 'url-news) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-nfs.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-nfs.el deleted file mode 100644 index d3e5b4d4..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-nfs.el +++ /dev/null @@ -1,97 +0,0 @@ -;;; url-nfs.el --- NFS URL interface -;; Author: $Author: fx $ -;; Created: $Date: 2001/05/22 16:10:50 $ -;; Version: $Revision: 1.3 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(eval-when-compile (require 'cl)) -(require 'url-parse) -(require 'url-file) - -(defvar url-nfs-automounter-directory-spec - "file:/net/%h%f" - "*How to invoke the NFS automounter. Certain % sequences are recognized. - -%h -- the hostname of the NFS server -%n -- the port # of the NFS server -%u -- the username to use to authenticate -%p -- the password to use to authenticate -%f -- the filename on the remote server -%% -- a literal % - -Each can be used any number of times.") - -(defun url-nfs-unescape (format host port user pass file) - (save-excursion - (set-buffer (get-buffer-create " *nfs-parse*")) - (erase-buffer) - (insert format) - (goto-char (point-min)) - (while (re-search-forward "%\\(.\\)" nil t) - (let ((escape (aref (match-string 1) 0))) - (replace-match "" t t) - (case escape - (?% (insert "%")) - (?h (insert host)) - (?n (insert (or port ""))) - (?u (insert (or user ""))) - (?p (insert (or pass ""))) - (?f (insert (or file "/")))))) - (buffer-string))) - -(defun url-nfs-build-filename (url) - (let* ((host (url-host url)) - (port (string-to-int (url-port url))) - (pass (url-password url)) - (user (url-user url)) - (file (url-filename url))) - (url-generic-parse-url - (url-nfs-unescape url-nfs-automounter-directory-spec - host port user pass file)))) - -(defun url-nfs (url callback cbargs) - (url-file (url-nfs-build-filename url) callback cbargs)) - -(defmacro url-nfs-create-wrapper (method args) - (` (defun (, (intern (format "url-nfs-%s" method))) (, args) - (, (format "NFS URL wrapper around `%s' call." method)) - (setq url (url-nfs-build-filename url)) - (and url ((, (intern (format "url-file-%s" method))) - (,@ (remove '&rest (remove '&optional args)))))))) - -(url-nfs-create-wrapper file-exists-p (url)) -(url-nfs-create-wrapper file-attributes (url)) -(url-nfs-create-wrapper file-symlink-p (url)) -(url-nfs-create-wrapper file-readable-p (url)) -(url-nfs-create-wrapper file-writable-p (url)) -(url-nfs-create-wrapper file-executable-p (url)) -(if (featurep 'xemacs) - (progn - (url-nfs-create-wrapper directory-files (url &optional full match nosort files-only)) - (url-nfs-create-wrapper file-truename (url &optional default))) - (url-nfs-create-wrapper directory-files (url &optional full match nosort)) - (url-nfs-create-wrapper file-truename (url &optional counter prev-dirs))) - -(provide 'url-nfs) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-ns.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-ns.el deleted file mode 100644 index 0800f707..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-ns.el +++ /dev/null @@ -1,106 +0,0 @@ -;;; url-ns.el --- Various netscape-ish functions for proxy definitions -;; Author: $Author: fx $ -;; Created: $Date: 2000/12/20 21:08:02 $ -;; Version: $Revision: 1.2 $ -;; Keywords: comm, data, processes, hypermedia - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1997 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require 'url-gw) - -;;;###autoload -(defun isPlainHostName (host) - (not (string-match "\\." host))) - -;;;###autoload -(defun dnsDomainIs (host dom) - (string-match (concat (regexp-quote dom) "$") host)) - -;;;###autoload -(defun dnsResolve (host) - (url-gateway-nslookup-host host)) - -;;;###autoload -(defun isResolvable (host) - (if (string-match "^[0-9.]+$" host) - t - (not (string= host (url-gateway-nslookup-host host))))) - -;;;###autoload -(defun isInNet (ip net mask) - (let ((netc (split-string ip "\\.")) - (ipc (split-string net "\\.")) - (maskc (split-string mask "\\."))) - (if (or (/= (length netc) (length ipc)) - (/= (length ipc) (length maskc))) - nil - (setq netc (mapcar 'string-to-int netc) - ipc (mapcar 'string-to-int ipc) - maskc (mapcar 'string-to-int maskc)) - (and - (= (logand (nth 0 netc) (nth 0 maskc)) - (logand (nth 0 ipc) (nth 0 maskc))) - (= (logand (nth 1 netc) (nth 1 maskc)) - (logand (nth 1 ipc) (nth 1 maskc))) - (= (logand (nth 2 netc) (nth 2 maskc)) - (logand (nth 2 ipc) (nth 2 maskc))) - (= (logand (nth 3 netc) (nth 3 maskc)) - (logand (nth 3 ipc) (nth 3 maskc))))))) - -;; Netscape configuration file parsing -(defvar url-ns-user-prefs nil - "Internal, do not use.") - -;;;###autoload -(defun url-ns-prefs (&optional file) - (if (not file) - (setq file (expand-file-name "~/.netscape/preferences.js"))) - (if (not (and (file-exists-p file) - (file-readable-p file))) - (message "Could not open %s for reading" file) - (save-excursion - (let ((false nil) - (true t)) - (setq url-ns-user-prefs (make-hash-table :size 13 :test 'equal)) - (set-buffer (get-buffer-create " *ns-parse*")) - (erase-buffer) - (insert-file-contents file) - (goto-char (point-min)) - (while (re-search-forward "^//" nil t) - (replace-match ";;")) - (goto-char (point-min)) - (while (re-search-forward "^user_pref(" nil t) - (replace-match "(url-ns-set-user-pref ")) - (goto-char (point-min)) - (while (re-search-forward "\"," nil t) - (replace-match "\"")) - (goto-char (point-min)) - (eval-buffer))))) - -(defun url-ns-set-user-pref (key val) - (puthash key val url-ns-user-prefs)) - -;;;###autoload -(defun url-ns-user-pref (key &optional default) - (gethash key url-ns-user-prefs default)) - -(provide 'url-ns) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-parse.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-parse.el deleted file mode 100644 index 4cbc4d6b..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-parse.el +++ /dev/null @@ -1,207 +0,0 @@ -;;; url-parse.el --- Uniform Resource Locator parser -;; Author: $Author: fx $ -;; Created: $Date: 2001/10/01 11:52:06 $ -;; Version: $Revision: 1.4 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(require 'url-auto) -(require 'url-vars) - -(autoload 'url-scheme-get-property "url-methods") - -(defmacro url-type (urlobj) - `(aref ,urlobj 0)) - -(defmacro url-user (urlobj) - `(aref ,urlobj 1)) - -(defmacro url-password (urlobj) - `(aref ,urlobj 2)) - -(defmacro url-host (urlobj) - `(aref ,urlobj 3)) - -(defmacro url-port (urlobj) - `(or (aref ,urlobj 4) - (if (url-fullness ,urlobj) - (url-scheme-get-property (url-type ,urlobj) 'default-port)))) - -(defmacro url-filename (urlobj) - `(aref ,urlobj 5)) - -(defmacro url-target (urlobj) - `(aref ,urlobj 6)) - -(defmacro url-attributes (urlobj) - `(aref ,urlobj 7)) - -(defmacro url-fullness (urlobj) - `(aref ,urlobj 8)) - -(defmacro url-set-type (urlobj type) - `(aset ,urlobj 0 ,type)) - -(defmacro url-set-user (urlobj user) - `(aset ,urlobj 1 ,user)) - -(defmacro url-set-password (urlobj pass) - `(aset ,urlobj 2 ,pass)) - -(defmacro url-set-host (urlobj host) - `(aset ,urlobj 3 ,host)) - -(defmacro url-set-port (urlobj port) - `(aset ,urlobj 4 ,port)) - -(defmacro url-set-filename (urlobj file) - `(aset ,urlobj 5 ,file)) - -(defmacro url-set-target (urlobj targ) - `(aset ,urlobj 6 ,targ)) - -(defmacro url-set-attributes (urlobj targ) - `(aset ,urlobj 7 ,targ)) - -(defmacro url-set-full (urlobj val) - `(aset ,urlobj 8 ,val)) - -;;;###autoload -(defun url-recreate-url (urlobj) - (concat (url-type urlobj) ":" (if (url-host urlobj) "//" "") - (if (url-user urlobj) - (concat (url-user urlobj) - (if (url-password urlobj) - (concat ":" (url-password urlobj))) - "@")) - (url-host urlobj) - (if (and (url-port urlobj) - (not (equal (url-port urlobj) - (url-scheme-get-property (url-type urlobj) 'default-port)))) - (format ":%d" (url-port urlobj))) - (or (url-filename urlobj) "/") - (if (url-target urlobj) - (concat "#" (url-target urlobj))) - (if (url-attributes urlobj) - (concat ";" - (mapconcat - (function - (lambda (x) - (if (cdr x) - (concat (car x) "=" (cdr x)) - (car x)))) (url-attributes urlobj) ";"))))) - -;;;###autoload -(defun url-generic-parse-url (url) - "Return a vector of the parts of URL. -Format is: -\[proto username password hostname portnumber file reference attributes fullp\]" - (cond - ((null url) - (make-vector 9 nil)) - ((or (not (string-match url-nonrelative-link url)) - (= ?/ (string-to-char url))) - (let ((retval (make-vector 9 nil))) - (url-set-filename retval url) - (url-set-full retval nil) - retval)) - (t - (save-excursion - (set-buffer (get-buffer-create " *urlparse*")) - (set-syntax-table url-parse-syntax-table) - (let ((save-pos nil) - (prot nil) - (user nil) - (pass nil) - (host nil) - (port nil) - (file nil) - (refs nil) - (attr nil) - (full nil) - (inhibit-read-only t)) - (erase-buffer) - (insert url) - (goto-char (point-min)) - (setq save-pos (point)) - (if (not (looking-at "//")) - (progn - (skip-chars-forward "a-zA-Z+.\\-") - (downcase-region save-pos (point)) - (setq prot (buffer-substring save-pos (point))) - (skip-chars-forward ":") - (setq save-pos (point)))) - - ;; We are doing a fully specified URL, with hostname and all - (if (looking-at "//") - (progn - (setq full t) - (forward-char 2) - (setq save-pos (point)) - (skip-chars-forward "^/") - (setq host (buffer-substring save-pos (point))) - (if (string-match "^\\([^@]+\\)@" host) - (setq user (match-string 1 host) - host (substring host (match-end 0) nil))) - (if (and user (string-match "\\([^:]+\\):\\(.*\\)" user)) - (setq pass (match-string 2 user) - user (match-string 1 user))) - (if (string-match ":\\([0-9+]+\\)" host) - (setq port (string-to-int (match-string 1 host)) - host (substring host 0 (match-beginning 0)))) - (if (string-match ":$" host) - (setq host (substring host 0 (match-beginning 0)))) - (setq host (downcase host) - save-pos (point)))) - - (if (not port) - (setq port (url-scheme-get-property prot 'default-port))) - - ;; Gross hack to preserve ';' in data URLs - - (setq save-pos (point)) - - (if (string= "data" prot) - (goto-char (point-max)) - ;; Now check for references - (skip-chars-forward "^#") - (if (eobp) - nil - (delete-region - (point) - (progn - (skip-chars-forward "#") - (setq refs (buffer-substring (point) (point-max))) - (point-max)))) - (goto-char save-pos) - (skip-chars-forward "^;") - (if (not (eobp)) - (setq attr (url-parse-args (buffer-substring (point) (point-max)) t) - attr (nreverse attr)))) - - (setq file (buffer-substring save-pos (point))) - (if (and host (string-match "%[0-9][0-9]" host)) - (setq host (url-unhex-string host))) - (vector prot user pass host port file refs attr full)))))) - -(provide 'url-parse) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-privacy.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-privacy.el deleted file mode 100644 index dcb244e5..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-privacy.el +++ /dev/null @@ -1,83 +0,0 @@ -;;; url-privacy.el --- Global history tracking for URL package -;; Author: $Author: fx $ -;; Created: $Date: 2001/10/05 17:10:26 $ -;; Version: $Revision: 1.4 $ -;; Keywords: comm, data, processes, hypermedia - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(eval-when-compile (require 'cl)) -(require 'url-vars) - -(if (fboundp 'device-type) - (defalias 'url-device-type 'device-type) - (defun url-device-type (&optional device) (or window-system 'tty))) - -;;;###autoload -(defun url-setup-privacy-info () - (interactive) - (setq url-system-type - (cond - ((or (eq url-privacy-level 'paranoid) - (and (listp url-privacy-level) - (memq 'os url-privacy-level))) - nil) - ;; First, we handle the inseparable OS/Windowing system - ;; combinations - ((eq system-type 'Apple-Macintosh) "Macintosh") - ((eq system-type 'next-mach) "NeXT") - ((eq system-type 'windows-nt) "Windows-NT; 32bit") - ((eq system-type 'ms-windows) "Windows; 16bit") - ((eq system-type 'ms-dos) "MS-DOS; 32bit") - ((memq (url-device-type) '(win32 w32)) "Windows; 32bit") - ((eq (url-device-type) 'pm) "OS/2; 32bit") - (t - (case (url-device-type) - (x "X11") - (ns "OpenStep") - (tty "TTY") - (otherwise nil))))) - - (setq url-personal-mail-address (or url-personal-mail-address - user-mail-address - (format "%s@%s" (user-real-login-name) - (system-name)))) - - (if (or (memq url-privacy-level '(paranoid high)) - (and (listp url-privacy-level) - (memq 'email url-privacy-level))) - (setq url-personal-mail-address nil)) - - (setq url-os-type - (cond - ((or (eq url-privacy-level 'paranoid) - (and (listp url-privacy-level) - (memq 'os url-privacy-level))) - nil) - ((boundp 'system-configuration) - system-configuration) - ((boundp 'system-type) - (symbol-name system-type)) - (t nil)))) - -(provide 'url-privacy) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-proxy.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-proxy.el deleted file mode 100644 index b13a0545..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-proxy.el +++ /dev/null @@ -1,78 +0,0 @@ -;;; url-proxy.el --- Proxy server support -;; Author: $Author: fx $ -;; Created: $Date: 2001/10/11 21:09:35 $ -;; Version: $Revision: 1.5 $ -;; Keywords: comm, data, processes, hypermedia - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1999 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require 'url-parse) -(autoload 'url-warn "url") - -(defun url-default-find-proxy-for-url (urlobj host) - (cond - ((or (and (assoc "no_proxy" url-proxy-services) - (string-match - (cdr - (assoc "no_proxy" url-proxy-services)) - host)) - (equal "www" (url-type urlobj))) - "DIRECT") - ((cdr (assoc (url-type urlobj) url-proxy-services)) - (concat "PROXY " (cdr (assoc (url-type urlobj) url-proxy-services)))) - ;; - ;; Should check for socks - ;; - (t - "DIRECT"))) - -(defvar url-proxy-locator 'url-default-find-proxy-for-url) - -(defun url-find-proxy-for-url (url host) - (let ((proxies (split-string (funcall url-proxy-locator url host) " *; *")) - (proxy nil) - (case-fold-search t)) - ;; Not sure how I should handle gracefully degrading from one proxy to - ;; another, so for now just deal with the first one - ;; (while proxies - (if (listp proxies) - (setq proxy (car proxies)) - (setq proxy proxies)) - (cond - ((string-match "^direct" proxy) nil) - ((string-match "^proxy +" proxy) - (concat "http://" (substring proxy (match-end 0)) "/")) - ((string-match "^socks +" proxy) - (concat "socks://" (substring proxy (match-end 0)))) - (t - (url-warn 'url (format "Unknown proxy directive: %s" proxy) 'critical) - nil)))) - -(defun url-proxy (url callback &optional cbargs) - ;; Retrieve URL from a proxy. - ;; Expects `url-using-proxy' to be bound to the specific proxy to use." - (setq url-using-proxy (url-generic-parse-url url-using-proxy)) - (let ((proxy-object (copy-sequence url))) - (url-set-target proxy-object nil) - (url-http url-using-proxy callback cbargs))) - -(provide 'url-proxy) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-util.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-util.el deleted file mode 100644 index 04561d08..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-util.el +++ /dev/null @@ -1,485 +0,0 @@ -;;; url-util.el --- Miscellaneous helper routines for URL library -;; Author: Bill Perry -;; Created: $Date: 2002/04/22 09:16:11 $ -;; Version: $Revision: 1.14 $ -;; Keywords: comm, data, processes - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996, 97, 98, 99, 2001 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require 'url-parse) -(autoload 'timezone-parse-date "timezone") -(autoload 'timezone-make-date-arpa-standard "timezone") - -(defvar url-parse-args-syntax-table - (copy-syntax-table emacs-lisp-mode-syntax-table) - "A syntax table for parsing sgml attributes.") - -(modify-syntax-entry ?' "\"" url-parse-args-syntax-table) -(modify-syntax-entry ?` "\"" url-parse-args-syntax-table) -(modify-syntax-entry ?{ "(" url-parse-args-syntax-table) -(modify-syntax-entry ?} ")" url-parse-args-syntax-table) - -;;;###autoload -(defcustom url-debug nil - "*What types of debug messages from the URL library to show. -Debug messages are logged to the *URL-DEBUG* buffer. - -If t, all messages will be logged. -If a number, all messages will be logged, as well shown via `message'. -If a list, it is a list of the types of messages to be logged." - :type '(choice (const :tag "none" nil) - (const :tag "all" t) - (checklist :tag "custom" - (const :tag "HTTP" :value http) - (const :tag "DAV" :value dav) - (const :tag "General" :value retrieval) - (const :tag "Filename handlers" :value handlers) - (symbol :tag "Other"))) - :group 'url-hairy) - -;;;###autoload -(defun url-debug (tag &rest args) - (if quit-flag - (error "Interrupted!")) - (if (or (eq url-debug t) - (numberp url-debug) - (and (listp url-debug) (memq tag url-debug))) - (save-excursion - (set-buffer (get-buffer-create "*URL-DEBUG*")) - (goto-char (point-max)) - (insert (symbol-name tag) " -> " (apply 'format args) "\n") - (if (numberp url-debug) - (apply 'message args))))) - -;;;###autoload -(defun url-parse-args (str &optional nodowncase) - ;; Return an assoc list of attribute/value pairs from an RFC822-type string - (let ( - name ; From name= - value ; its value - results ; Assoc list of results - name-pos ; Start of XXXX= position - val-pos ; Start of value position - st - nd - ) - (save-excursion - (save-restriction - (set-buffer (get-buffer-create " *urlparse-temp*")) - (set-syntax-table url-parse-args-syntax-table) - (erase-buffer) - (insert str) - (setq st (point-min) - nd (point-max)) - (set-syntax-table url-parse-args-syntax-table) - (narrow-to-region st nd) - (goto-char (point-min)) - (while (not (eobp)) - (skip-chars-forward "; \n\t") - (setq name-pos (point)) - (skip-chars-forward "^ \n\t=;") - (if (not nodowncase) - (downcase-region name-pos (point))) - (setq name (buffer-substring name-pos (point))) - (skip-chars-forward " \t\n") - (if (/= (or (char-after (point)) 0) ?=) ; There is no value - (setq value nil) - (skip-chars-forward " \t\n=") - (setq val-pos (point) - value - (cond - ((or (= (or (char-after val-pos) 0) ?\") - (= (or (char-after val-pos) 0) ?')) - (buffer-substring (1+ val-pos) - (condition-case () - (prog2 - (forward-sexp 1) - (1- (point)) - (skip-chars-forward "\"")) - (error - (skip-chars-forward "^ \t\n") - (point))))) - (t - (buffer-substring val-pos - (progn - (skip-chars-forward "^;") - (skip-chars-backward " \t") - (point))))))) - (setq results (cons (cons name value) results)) - (skip-chars-forward "; \n\t")) - results)))) - -;;;###autoload -(defun url-insert-entities-in-string (string) - "Convert HTML markup-start characters to entity references in STRING. -Also replaces the \" character, so that the result may be safely used as - an attribute value in a tag. Returns a new string with the result of the - conversion. Replaces these characters as follows: - & ==> & - < ==> < - > ==> > - \" ==> "" - (if (string-match "[&<>\"]" string) - (save-excursion - (set-buffer (get-buffer-create " *entity*")) - (erase-buffer) - (buffer-disable-undo (current-buffer)) - (insert string) - (goto-char (point-min)) - (while (progn - (skip-chars-forward "^&<>\"") - (not (eobp))) - (insert (cdr (assq (char-after (point)) - '((?\" . """) - (?& . "&") - (?< . "<") - (?> . ">"))))) - (delete-char 1)) - (buffer-string)) - string)) - -;;;###autoload -(defun url-normalize-url (url) - "Return a 'normalized' version of URL. -Strips out default port numbers, etc." - (let (type data grok retval) - (setq data (url-generic-parse-url url) - type (url-type data)) - (if (member type '("www" "about" "mailto" "info")) - (setq retval url) - (url-set-target data nil) - (setq retval (url-recreate-url data))) - retval)) - -;;;###autoload -(defun url-lazy-message (&rest args) - "Just like `message', but is a no-op if called more than once a second. -Will not do anything if url-show-status is nil." - (if (or (null url-show-status) - (active-minibuffer-window) - (= url-lazy-message-time - (setq url-lazy-message-time (nth 1 (current-time))))) - nil - (apply 'message args))) - -;;;###autoload -(defun url-get-normalized-date (&optional specified-time) - "Return a 'real' date string that most HTTP servers can understand." - (require 'timezone) - (let* ((raw (if specified-time (current-time-string specified-time) - (current-time-string))) - (gmt (timezone-make-date-arpa-standard raw - (nth 1 (current-time-zone)) - "GMT")) - (parsed (timezone-parse-date gmt)) - (day (cdr-safe (assoc (substring raw 0 3) weekday-alist))) - (year nil) - (month (car - (rassoc - (string-to-int (aref parsed 1)) monthabbrev-alist))) - ) - (setq day (or (car-safe (rassoc day weekday-alist)) - (substring raw 0 3)) - year (aref parsed 0)) - ;; This is needed for plexus servers, or the server will hang trying to - ;; parse the if-modified-since header. Hopefully, I can take this out - ;; soon. - (if (and year (> (length year) 2)) - (setq year (substring year -2 nil))) - - (concat day ", " (aref parsed 2) "-" month "-" year " " - (aref parsed 3) " " (or (aref parsed 4) - (concat "[" (nth 1 (current-time-zone)) - "]"))))) - -;;;###autoload -(defun url-eat-trailing-space (x) - "Remove spaces/tabs at the end of a string." - (let ((y (1- (length x))) - (skip-chars (list ? ?\t ?\n))) - (while (and (>= y 0) (memq (aref x y) skip-chars)) - (setq y (1- y))) - (substring x 0 (1+ y)))) - -;;;###autoload -(defun url-strip-leading-spaces (x) - "Remove spaces at the front of a string." - (let ((y (1- (length x))) - (z 0) - (skip-chars (list ? ?\t ?\n))) - (while (and (<= z y) (memq (aref x z) skip-chars)) - (setq z (1+ z))) - (substring x z nil))) - -;;;###autoload -(defun url-pretty-length (n) - (cond - ((< n 1024) - (format "%d bytes" n)) - ((< n (* 1024 1024)) - (format "%dk" (/ n 1024.0))) - (t - (format "%2.2fM" (/ n (* 1024 1024.0)))))) - -;;;###autoload -(defun url-display-percentage (fmt perc &rest args) - (if (null fmt) - (if (fboundp 'clear-progress-display) - (clear-progress-display)) - (if (and (fboundp 'progress-display) perc) - (apply 'progress-display fmt perc args) - (apply 'message fmt args)))) - -;;;###autoload -(defun url-percentage (x y) - (if (fboundp 'float) - (round (* 100 (/ x (float y)))) - (/ (* x 100) y))) - -;;;###autoload -(defun url-basepath (file &optional x) - "Return the base pathname of FILE, or the actual filename if X is true." - (cond - ((null file) "") - ((string-match (eval-when-compile (regexp-quote "?")) file) - (if x - (file-name-nondirectory (substring file 0 (match-beginning 0))) - (file-name-directory (substring file 0 (match-beginning 0))))) - (x (file-name-nondirectory file)) - (t (file-name-directory file)))) - -;;;###autoload -(defun url-parse-query-string (query &optional downcase) - (let (retval pairs cur key val) - (setq pairs (split-string query "&")) - (while pairs - (setq cur (car pairs) - pairs (cdr pairs)) - (if (not (string-match "=" cur)) - nil ; Grace - (setq key (url-unhex-string (substring cur 0 (match-beginning 0))) - val (url-unhex-string (substring cur (match-end 0) nil))) - (if downcase - (setq key (downcase key))) - (setq cur (assoc key retval)) - (if cur - (setcdr cur (cons val (cdr cur))) - (setq retval (cons (list key val) retval))))) - retval)) - -(defun url-unhex (x) - (if (> x ?9) - (if (>= x ?a) - (+ 10 (- x ?a)) - (+ 10 (- x ?A))) - (- x ?0))) - -;;;###autoload -(defun url-unhex-string (str &optional allow-newlines) - "Remove %XXX embedded spaces, etc in a url. -If optional second argument ALLOW-NEWLINES is non-nil, then allow the -decoding of carriage returns and line feeds in the string, which is normally -forbidden in URL encoding." - (setq str (or str "")) - (let ((tmp "") - (case-fold-search t)) - (while (string-match "%[0-9a-f][0-9a-f]" str) - (let* ((start (match-beginning 0)) - (ch1 (url-unhex (elt str (+ start 1)))) - (code (+ (* 16 ch1) - (url-unhex (elt str (+ start 2)))))) - (setq tmp (concat - tmp (substring str 0 start) - (cond - (allow-newlines - (char-to-string code)) - ((or (= code ?\n) (= code ?\r)) - " ") - (t (char-to-string code)))) - str (substring str (match-end 0))))) - (setq tmp (concat tmp str)) - tmp)) - -(defconst url-unreserved-chars - '( - ?a ?b ?c ?d ?e ?f ?g ?h ?i ?j ?k ?l ?m ?n ?o ?p ?q ?r ?s ?t ?u ?v ?w ?x ?y ?z - ?A ?B ?C ?D ?E ?F ?G ?H ?I ?J ?K ?L ?M ?N ?O ?P ?Q ?R ?S ?T ?U ?V ?W ?X ?Y ?Z - ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 - ?- ?_ ?. ?! ?~ ?* ?' ?\( ?\)) - "A list of characters that are _NOT_ reserved in the URL spec. -This is taken from RFC 2396.") - -;;;###autoload -(defun url-hexify-string (str) - "Escape characters in a string." - (mapconcat - (lambda (char) - ;; Fixme: use a char table instead. - (if (not (memq char url-unreserved-chars)) - (if (< char 16) - (format "%%0%X" char) - (format "%%%X" char)) - (char-to-string char))) - str "")) - -;;;###autoload -(defun url-file-extension (fname &optional x) - "Return the filename extension of FNAME. -If optional variable X is t, -then return the basename of the file with the extension stripped off." - (if (and fname - (setq fname (url-basepath fname t)) - (string-match "\\.[^./]+$" fname)) - (if x (substring fname 0 (match-beginning 0)) - (substring fname (match-beginning 0) nil)) - ;; - ;; If fname has no extension, and x then return fname itself instead of - ;; nothing. When caching it allows the correct .hdr file to be produced - ;; for filenames without extension. - ;; - (if x - fname - ""))) - -;;;###autoload -(defun url-truncate-url-for-viewing (url &optional width) - "Return a shortened version of URL that is WIDTH characters or less wide. -WIDTH defaults to the current frame width." - (let* ((fr-width (or width (frame-width))) - (str-width (length url)) - (tail (file-name-nondirectory url)) - (fname nil) - (modified 0) - (urlobj nil)) - ;; The first thing that can go are the search strings - (if (and (>= str-width fr-width) - (string-match "?" url)) - (setq url (concat (substring url 0 (match-beginning 0)) "?...") - str-width (length url) - tail (file-name-nondirectory url))) - (if (< str-width fr-width) - nil ; Hey, we are done! - (setq urlobj (url-generic-parse-url url) - fname (url-filename urlobj) - fr-width (- fr-width 4)) - (while (and (>= str-width fr-width) - (string-match "/" fname)) - (setq fname (substring fname (match-end 0) nil) - modified (1+ modified)) - (url-set-filename urlobj fname) - (setq url (url-recreate-url urlobj) - str-width (length url))) - (if (> modified 1) - (setq fname (concat "/.../" fname)) - (setq fname (concat "/" fname))) - (url-set-filename urlobj fname) - (setq url (url-recreate-url urlobj))) - url)) - -;;;###autoload -(defun url-view-url (&optional no-show) - "View the current document's URL. -Optional argument NO-SHOW means just return the URL, don't show it in -the minibuffer. - -This uses `url-current-object', set locally to the buffer." - (interactive) - (if (not url-current-object) - nil - (if no-show - (url-recreate-url url-current-object) - (message "%s" (url-recreate-url url-current-object))))) - -(eval-and-compile - (defvar url-get-url-filename-chars "-%.?@a-zA-Z0-9()_/:~=&" - "Valid characters in a URL") - ) - -(defun url-get-url-at-point (&optional pt) - "Get the URL closest to point, but don't change position. -Has a preference for looking backward when not directly on a symbol." - ;; Not at all perfect - point must be right in the name. - (save-excursion - (if pt (goto-char pt)) - (let (start url) - (save-excursion - ;; first see if you're just past a filename - (if (not (eobp)) - (if (looking-at "[] \t\n[{}()]") ; whitespace or some parens - (progn - (skip-chars-backward " \n\t\r({[]})") - (if (not (bobp)) - (backward-char 1))))) - (if (and (char-after (point)) - (string-match (eval-when-compile - (concat "[" url-get-url-filename-chars "]")) - (char-to-string (char-after (point))))) - (progn - (skip-chars-backward url-get-url-filename-chars) - (setq start (point)) - (skip-chars-forward url-get-url-filename-chars)) - (setq start (point))) - (setq url (buffer-substring-no-properties start (point)))) - (if (and url (string-match "^(.*)\\.?$" url)) - (setq url (match-string 1 url))) - (if (and url (string-match "^URL:" url)) - (setq url (substring url 4 nil))) - (if (and url (string-match "\\.$" url)) - (setq url (substring url 0 -1))) - (if (and url (string-match "^www\\." url)) - (setq url (concat "http://" url))) - (if (and url (not (string-match url-nonrelative-link url))) - (setq url nil)) - url))) - -(defun url-generate-unique-filename (&optional fmt) - "Generate a unique filename in `url-temporary-directory'." - (if (not fmt) - (let ((base (format "url-tmp.%d" (user-real-uid))) - (fname "") - (x 0)) - (setq fname (format "%s%d" base x)) - (while (file-exists-p - (expand-file-name fname url-temporary-directory)) - (setq x (1+ x) - fname (concat base (int-to-string x)))) - (expand-file-name fname url-temporary-directory)) - (let ((base (concat "url" (int-to-string (user-real-uid)))) - (fname "") - (x 0)) - (setq fname (format fmt (concat base (int-to-string x)))) - (while (file-exists-p - (expand-file-name fname url-temporary-directory)) - (setq x (1+ x) - fname (format fmt (concat base (int-to-string x))))) - (expand-file-name fname url-temporary-directory)))) - -(defun url-extract-mime-headers () - "Set `url-current-mime-headers' in current buffer." - (save-excursion - (goto-char (point-min)) - (unless url-current-mime-headers - (set (make-local-variable 'url-current-mime-headers) - (mail-header-extract))))) - -(provide 'url-util) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-vars.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-vars.el deleted file mode 100644 index 075d0da2..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url-vars.el +++ /dev/null @@ -1,438 +0,0 @@ -;;; url-vars.el --- Variables for Uniform Resource Locator tool -;; Author: $Author: fx $ -;; Created: $Date: 2002/04/22 09:25:02 $ -;; Version: $Revision: 1.14 $ -;; Keywords: comm, data, processes, hypermedia - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996, 97, 98, 99, 2001 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(require 'mm-util) -(eval-when-compile (require 'cl)) - -(defconst url-version (let ((x "$State: Exp $")) - (if (string-match "State: \\([^ \t\n]+\\)" x) - (substring x (match-beginning 1) (match-end 1)) - x)) - "Version number of URL package.") - -(defgroup url nil - "Uniform Resource Locator tool" - :group 'hypermedia) - -(defgroup url-file nil - "URL storage" - :prefix "url-" - :group 'url) - -(defgroup url-cache nil - "URL cache" - :prefix "url-" - :prefix "url-cache-" - :group 'url) - -(defgroup url-mime nil - "MIME options of URL" - :prefix "url-" - :group 'url) - -(defgroup url-hairy nil - "Hairy options of URL" - :prefix "url-" - :group 'url) - - -(defvar url-current-object nil - "A parsed representation of the current url.") - -(defvar url-current-mime-headers nil - "A parsed representation of the MIME headers for the current url.") - -(mapcar 'make-variable-buffer-local - '( - url-current-object - url-current-referer - url-current-mime-headers - )) - -(defcustom url-honor-refresh-requests t - "*Whether to do automatic page reloads. -These are done at the request of the document author or the server via -the `Refresh' header in an HTTP response. If nil, no refresh -requests will be honored. If t, all refresh requests will be honored. -If non-nil and not t, the user will be asked for each refresh -request." - :type '(choice (const :tag "off" nil) - (const :tag "on" t) - (const :tag "ask" 'ask)) - :group 'url-hairy) - -(defcustom url-automatic-caching nil - "*If non-nil, all documents will be automatically cached to the local disk." - :type 'boolean - :group 'url-cache) - -;; Fixme: sanitize this. -(defcustom url-cache-expired - (lambda (t1 t2) (>= (- (car t2) (car t1)) 5)) - "*A function determining if a cached item has expired. -It takes two times (numbers) as its arguments, and returns non-nil if -the second time is 'too old' when compared to the first time." - :type 'function - :group 'url-cache) - -(defvar url-bug-address "w3-bugs@xemacs.org" - "Where to send bug reports.") - -(defcustom url-personal-mail-address nil - "*Your full email address. -This is what is sent to HTTP servers as the FROM field in an HTTP -request." - :type '(choice (const :tag "Unspecified" nil) string) - :group 'url) - -(defcustom url-directory-index-file "index.html" - "*The filename to look for when indexing a directory. -If this file exists, and is readable, then it will be viewed instead of -using `dired' to view the directory." - :type 'string - :group 'url-file) - -;; Fixme: this should have a setter which calls url-setup-privacy-info. -(defcustom url-privacy-level '(email) - "*How private you want your requests to be. -HTTP has header fields for various information about the user, including -operating system information, email addresses, the last page you visited, etc. -This variable controls how much of this information is sent. - -This should a symbol or a list. -Valid values if a symbol are: -none -- Send all information -low -- Don't send the last location -high -- Don't send the email address or last location -paranoid -- Don't send anything - -If a list, this should be a list of symbols of what NOT to send. -Valid symbols are: -email -- the email address -os -- the operating system info -lastloc -- the last location -agent -- Do not send the User-Agent string -cookie -- never accept HTTP cookies - -Samples: - - (setq url-privacy-level 'high) - (setq url-privacy-level '(email lastloc)) ;; equivalent to 'high - (setq url-privacy-level '(os)) - -::NOTE:: -This variable controls several other variables and is _NOT_ automatically -updated. Call the function `url-setup-privacy-info' after modifying this -variable." - :type '(radio (const :tag "None (you believe in the basic goodness of humanity)" - :value none) - (const :tag "Low (do not reveal last location)" - :value low) - (const :tag "High (no email address or last location)" - :value high) - (const :tag "Paranoid (reveal nothing!)" - :value paranoid) - (checklist :tag "Custom" - (const :tag "Email address" :value email) - (const :tag "Operating system" :value os) - (const :tag "Last location" :value lastloc) - (const :tag "Browser identification" :value agent) - (const :tag "No cookies" :value cookie))) - :group 'url) - -(defvar url-inhibit-uncompression nil "Do not do decompression if non-nil.") - -(defcustom url-uncompressor-alist '((".z" . "x-gzip") - (".gz" . "x-gzip") - (".uue" . "x-uuencoded") - (".hqx" . "x-hqx") - (".Z" . "x-compress") - (".bz2" . "x-bzip2")) - "*An alist of file extensions and appropriate content-transfer-encodings." - :type '(repeat (cons :format "%v" - (string :tag "Extension") - (string :tag "Encoding"))) - :group 'url-mime) - -(defcustom url-mail-command (if (fboundp 'compose-mail) - 'compose-mail - 'url-mail) - "*This function will be called whenever url needs to send mail. -It should enter a mail-mode-like buffer in the current window. -The commands `mail-to' and `mail-subject' should still work in this -buffer, and it should use `mail-header-separator' if possible." - :type 'function - :group 'url) - -(defcustom url-proxy-services nil - "*An alist of schemes and proxy servers that gateway them. -Looks like ((\"http\" . \"hostname:portnumber\") ...). This is set up -from the ACCESS_proxy environment variables." - :type '(repeat (cons :format "%v" - (string :tag "Protocol") - (string :tag "Proxy"))) - :group 'url) - -(defcustom url-passwd-entry-func nil - "*Symbol indicating which function to call to read in a password. -It will be set up depending on whether you are running EFS or ange-ftp -at startup if it is nil. This function should accept the prompt -string as its first argument, and the default value as its second -argument." - :type '(choice (const :tag "Guess" :value nil) - (const :tag "Use Ange-FTP" :value ange-ftp-read-passwd) - (const :tag "Use EFS" :value efs-read-passwd) - (const :tag "Use Password Package" :value read-passwd) - (function :tag "Other")) - :group 'url-hairy) - -(defcustom url-standalone-mode nil - "*Rely solely on the cache?" - :type 'boolean - :group 'url-cache) - -(defvar url-mime-separator-chars (mapcar 'identity - (concat "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz" - "0123456789'()+_,-./=?")) - "Characters allowable in a MIME multipart separator.") - -(defcustom url-bad-port-list - '("25" "119" "19") - "*List of ports to warn the user about connecting to. -Defaults to just the mail, chargen, and NNTP ports so you cannot be -tricked into sending fake mail or forging messages by a malicious HTML -document." - :type '(repeat (string :tag "Port")) - :group 'url-hairy) - -(defvar url-mime-content-type-charset-regexp - ";[ \t]*charset=\"?\\([^\"]+\\)\"?" - "Regexp used in parsing `Content-Type' for a charset indication.") - -(defvar url-request-data nil "Any data to send with the next request.") - -(defvar url-request-extra-headers nil - "A list of extra headers to send with the next request. -Should be an assoc list of headers/contents.") - -(defvar url-request-method nil "The method to use for the next request.") - -;; FIXME!! (RFC 2616 gives examples like `compress, gzip'.) -(defvar url-mime-encoding-string nil - "*String to send in the Accept-encoding: field in HTTP requests.") - -;; `mm-mime-mule-charset-alist' in Gnus 5.8/9 contains elements whose -;; cars aren't valid MIME charsets/coding systems, at least in Emacs. -;; This gets it correct by construction in Emacs. Fixme: DTRT for -;; XEmacs -- its `coding-system-list' doesn't have the BASE-ONLY arg. -(when (and (not (featurep 'xemacs)) - (fboundp 'coding-system-list)) - (setq mm-mime-mule-charset-alist - (apply - 'nconc - (mapcar - (lambda (cs) - (when (and (coding-system-get cs 'mime-charset) - (not (eq t (coding-system-get cs 'safe-charsets)))) - (list (cons (coding-system-get cs 'mime-charset) - (delq 'ascii - (coding-system-get cs 'safe-charsets)))))) - (coding-system-list 'base-only))))) - -;; Perhaps the first few should actually be given decreasing `q's and -;; the list should be trimmed significantly. -;; Fixme: do something sane if we don't have `sort-coding-systems' -;; (Emacs 20, XEmacs). -(defun url-mime-charset-string () - "Generate a list of preferred MIME charsets for HTTP requests. -Generated according to current coding system priorities." - (if (fboundp 'sort-coding-systems) - (let ((ordered (sort-coding-systems - (let (accum) - (dolist (elt mm-mime-mule-charset-alist) - (if (mm-coding-system-p (car elt)) - (push (car elt) accum))) - (nreverse accum))))) - (concat (format "%s;q=1, " (pop ordered)) - (mapconcat 'symbol-name ordered ";q=0.5, ") - ";q=0.5")))) - -(defvar url-mime-charset-string (url-mime-charset-string) - "*String to send in the Accept-charset: field in HTTP requests. -The MIME charset corresponding to the most preferred coding system is -given priority 1 and the rest are given priority 0.5.") - -(defun url-set-mime-charset-string () - (setq url-mime-charset-string (url-mime-charset-string))) -;; Regenerate if the language environment changes. -(add-hook 'set-language-environment-hook 'url-set-mime-charset-string) - -;; Fixme: set from the locale. -(defcustom url-mime-language-string nil - "*String to send in the Accept-language: field in HTTP requests. - -Specifies the preferred language when servers can serve documents in -several languages. Use RFC 1766 abbreviations, e.g.@: `en' for -English, `de' for German. A comma-separated specifies descending -order of preference. The ordering can be made explicit using `q' -factors defined by HTTP, e.g. `de,en-gb;q=0.8,en;q=0.7'. `*' means -get the first available language (as opposed to the default)." - :type '(radio - (const :tag "None (get default language version)" :value nil) - (const :tag "Any (get first available language version)" :value "*") - (string :tag "Other")) - :group 'url-mime - :group 'i18n) - -(defvar url-mime-accept-string nil - "String to send to the server in the Accept: field in HTTP requests.") - -(defvar url-package-version nil - "Version number of package using URL.") - -(defvar url-package-name nil "Version number of package using URL.") - -(defvar url-system-type nil - "What type of system we are on.") -(defvar url-os-type nil - "What OS we are on.") - -(defcustom url-max-password-attempts 5 - "*Maximum number of times a password will be prompted for. -Applies when a protected document is denied by the server." - :type 'integer - :group 'url) - -(defcustom url-temporary-directory (or (getenv "TMPDIR") "/tmp") - "*Where temporary files go." - :type 'directory - :group 'url-file) - -(defcustom url-show-status t - "*Whether to show a running total of bytes transferred. -Can cause a large hit if using a remote X display over a slow link, or -a terminal with a slow modem." - :type 'boolean - :group 'url) - -(defvar url-using-proxy nil - "Either nil or the fully qualified proxy URL in use, e.g. -http://www.domain.com/") - -(defvar url-slow-proxy-requires-waiting-for nil - "Either nil or a number of seconds to wait before authentication or redirection") - -(defcustom url-news-server nil - "*The default news server from which to get newsgroups/articles. -Applies if no server is specified in the URL. Defaults to the -environment variable NNTPSERVER or \"news\" if NNTPSERVER is -undefined." - :type '(choice (const :tag "None" :value nil) string) - :group 'url) - -(defvar url-nonrelative-link - "\\`\\([-a-zA-Z0-9+.]+:\\)" - "A regular expression that will match an absolute URL.") - -(defcustom url-confirmation-func 'y-or-n-p - "*What function to use for asking yes or no functions. -Possible values are `yes-or-no-p' or `y-or-n-p', or any function that -takes a single argument (the prompt), and returns t only if a positive -answer is given." - :type '(choice (const :tag "Short (y or n)" :value y-or-n-p) - (const :tag "Long (yes or no)" :value yes-or-no-p) - (function :tag "Other")) - :group 'url-hairy) - -(defcustom url-gateway-method 'native - "*The type of gateway support to use. -Should be a symbol specifying how to get a connection from the local machine. - -Currently supported methods: -`telnet': Run telnet in a subprocess to connect; -`rlogin': Rlogin to another machine to connect; -`socks': Connect through a socks server; -`ssl': Connect with SSL; -`native': Connect directy." - :type '(radio (const :tag "Telnet to gateway host" :value telnet) - (const :tag "Rlogin to gateway host" :value rlogin) - (const :tag "Use SOCKS proxy" :value socks) - (const :tag "Use SSL for all connections" :value ssl) - (const :tag "Direct connection" :value native)) - :group 'url-hairy) - -(defvar url-setup-done nil "Has setup configuration been done?") - -(defconst weekday-alist - '(("Sunday" . 0) ("Monday" . 1) ("Tuesday" . 2) ("Wednesday" . 3) - ("Thursday" . 4) ("Friday" . 5) ("Saturday" . 6) - ("Tues" . 2) ("Thurs" . 4) - ("Sun" . 0) ("Mon" . 1) ("Tue" . 2) ("Wed" . 3) - ("Thu" . 4) ("Fri" . 5) ("Sat" . 6))) - -(defconst monthabbrev-alist - '(("Jan" . 1) ("Feb" . 2) ("Mar" . 3) ("Apr" . 4) ("May" . 5) ("Jun" . 6) - ("Jul" . 7) ("Aug" . 8) ("Sep" . 9) ("Oct" . 10) ("Nov" . 11) - ("Dec" . 12))) - -(defvar url-lazy-message-time 0) - -;; Fixme: We may not be able to run SSL. -(defvar url-extensions-header "Security/Digest Security/SSL") - -(defvar url-parse-syntax-table - (copy-syntax-table emacs-lisp-mode-syntax-table) - "*A syntax table for parsing URLs.") - -(modify-syntax-entry ?' "\"" url-parse-syntax-table) -(modify-syntax-entry ?` "\"" url-parse-syntax-table) -(modify-syntax-entry ?< "(>" url-parse-syntax-table) -(modify-syntax-entry ?> ")<" url-parse-syntax-table) -(modify-syntax-entry ?/ " " url-parse-syntax-table) - -(defvar url-load-hook nil - "*Hooks to be run after initalizing the URL library.") - -;;; Make OS/2 happy - yeeks -;; (defvar tcp-binary-process-input-services nil -;; "*Make OS/2 happy with our CRLF pairs...") - -(defconst url-working-buffer " *url-work") - -(defvar url-gateway-unplugged nil - "Non-nil means don't open new network connexions. -This should be set, e.g. by mail user agents rendering HTML to avoid -`bugs' which call home.") - -(defun url-vars-unload-hook () - (remove-hook 'set-language-environment-hook 'url-set-mime-charset-string)) - -(provide 'url-vars) - -;;; url-vars.el ends here diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url.el deleted file mode 100644 index 5264ee5d..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/url.el +++ /dev/null @@ -1,273 +0,0 @@ -;;; url.el --- Uniform Resource Locator retrieval tool -;; Author: Bill Perry -;; Version: $Revision: 1.15 $ -;; Keywords: comm, data, processes, hypermedia - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Copyright (c) 1993 - 1996 by William M. Perry -;;; Copyright (c) 1996, 97, 98, 99, 2001 Free Software Foundation, Inc. -;;; -;;; This file is part of GNU Emacs. -;;; -;;; GNU Emacs is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 2, or (at your option) -;;; any later version. -;;; -;;; GNU Emacs is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Emacs; see the file COPYING. If not, write to the -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;;; Boston, MA 02111-1307, USA. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; Registered URI schemes: http://www.iana.org/assignments/uri-schemes - -(eval-when-compile (require 'cl)) -;; Don't require CL at runtime if we can avoid it (Emacs 21). -;; Otherwise we need it for hashing functions. `puthash' was never -;; defined in the Emacs 20 cl.el for some reason. -(if (fboundp 'puthash) - nil ; internal or CL is loaded - (defalias 'puthash 'cl-puthash) - (autoload 'cl-puthash "cl") - (autoload 'gethash "cl") - (autoload 'maphash "cl") - (autoload 'make-hash-table "cl")) - -(eval-when-compile - (require 'mm-decode) - (require 'mm-view)) - -(require 'mailcap) -(require 'url-vars) -(require 'url-cookie) -(require 'url-history) -(require 'url-expand) -(require 'url-privacy) -(require 'url-methods) -(require 'url-proxy) -(require 'url-parse) -(require 'url-util) - -;; Fixme: customize? convert-standard-filename? -;;;###autoload -(defvar url-configuration-directory "~/.url") - -(defun url-do-setup () - "Setup the url package. -This is to avoid conflict with user settings if URL is dumped with -Emacs." - (unless url-setup-done - - ;; Make OS/2 happy - ;;(push '("http" "80") tcp-binary-process-input-services) - - (mailcap-parse-mailcaps) - (mailcap-parse-mimetypes) - - ;; Register all the authentication schemes we can handle - (url-register-auth-scheme "basic" nil 4) - (url-register-auth-scheme "digest" nil 7) - - (setq url-cookie-file - (or url-cookie-file - (expand-file-name "cookies" url-configuration-directory))) - - (setq url-history-file - (or url-history-file - (expand-file-name "history" url-configuration-directory))) - - ;; Parse the global history file if it exists, so that it can be used - ;; for URL completion, etc. - (url-history-parse-history) - (url-history-setup-save-timer) - - ;; Ditto for cookies - (url-cookie-setup-save-timer) - (url-cookie-parse-file url-cookie-file) - - ;; Read in proxy gateways - (let ((noproxy (and (not (assoc "no_proxy" url-proxy-services)) - (or (getenv "NO_PROXY") - (getenv "no_PROXY") - (getenv "no_proxy"))))) - (if noproxy - (setq url-proxy-services - (cons (cons "no_proxy" - (concat "\\(" - (mapconcat - (lambda (x) - (cond - ((= x ?,) "\\|") - ((= x ? ) "") - ((= x ?.) (regexp-quote ".")) - ((= x ?*) ".*") - ((= x ??) ".") - (t (char-to-string x)))) - noproxy "") "\\)")) - url-proxy-services)))) - - ;; Set the password entry funtion based on user defaults or guess - ;; based on which remote-file-access package they are using. - (cond - (url-passwd-entry-func nil) ; Already been set - ((fboundp 'read-passwd) ; Use secure password if available - (setq url-passwd-entry-func 'read-passwd)) - ((or (featurep 'efs) ; Using EFS - (featurep 'efs-auto)) ; or autoloading efs - (if (not (fboundp 'read-passwd)) - (autoload 'read-passwd "passwd" "Read in a password" nil)) - (setq url-passwd-entry-func 'read-passwd)) - ((or (featurep 'ange-ftp) ; Using ange-ftp - (and (boundp 'file-name-handler-alist) - (not (featurep 'xemacs)))) ; ?? - (setq url-passwd-entry-func 'ange-ftp-read-passwd)) - (t - (url-warn - 'security - "(url-setup): Can't determine how to read passwords, winging it."))) - - (url-setup-privacy-info) - (run-hooks 'url-load-hook) - (setq url-setup-done t))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Retrieval functions -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun url-retrieve (url callback &optional cbargs) - "Retrieve URL asynchronously and call CALLBACK with CBARGS when finished. -The callback is called when the object has been completely retrieved, with -the current buffer containing the object, and any MIME headers associated -with it. URL is either a string or a parsed URL. - -Return the buffer URL will load into, or nil if the process has -already completed." - (url-do-setup) - (url-gc-dead-buffers) - (if (stringp url) - (set-text-properties 0 (length url) nil url)) - (if (not (vectorp url)) - (setq url (url-generic-parse-url url))) - (if (not (functionp callback)) - (error "Must provide a callback function to url-retrieve")) - (unless (url-type url) - (error "Bad url: %s" (url-recreate-url url))) - (let ((loader (url-scheme-get-property (url-type url) 'loader)) - (url-using-proxy (if (url-host url) - (url-find-proxy-for-url url (url-host url)))) - (buffer nil) - (asynch (url-scheme-get-property (url-type url) 'asynchronous-p))) - (if url-using-proxy - (setq asynch t - loader 'url-proxy)) - (if asynch - (setq buffer (funcall loader url callback cbargs)) - (setq buffer (funcall loader url)) - (if buffer - (save-excursion - (set-buffer buffer) - (apply callback cbargs)))) - (url-history-update-url url (current-time)) - buffer)) - -(defun url-retrieve-synchronously (url) - "Retrieve URL synchronously. -Return the buffer containing the data, or nil if there are no data -associated with it (the case for dired, info, or mailto URLs that need -no further processing). URL is either a string or a parsed URL." - (url-do-setup) - - (lexical-let ((retrieval-done nil) - (asynch-buffer nil)) - (setq asynch-buffer - (url-retrieve url (lambda (&rest ignored) - (url-debug 'retrieval "Synchronous fetching done (%S)" (current-buffer)) - (setq retrieval-done t - asynch-buffer (current-buffer))))) - (let ((proc (and asynch-buffer (get-buffer-process asynch-buffer)))) - (if (null proc) - ;; We do not need to do anything, it was a mailto or something - ;; similar that takes processing completely outside of the URL - ;; package. - nil - (while (not retrieval-done) - (if (memq (process-status proc) '(closed exit signal failed)) - ;; FIXME: It's not clear whether url-retrieve's callback is - ;; guaranteed to be called or not. It seems that url-http - ;; decides sometimes consciously not to call it, so it's not - ;; clear that it's a bug, but even if we need to decide how - ;; url-http can then warn us that the download has completed. - ;; In the mean time, we use this here workaround. - (setq retrieval-done t) - ;; We used to use `sit-for' here, but in some cases it wouldn't - ;; work because apparently pending keyboard input would always - ;; interrupt it before it got a chance to handle process input. - ;; `sleep-for' was tried but it lead to other forms of - ;; hanging. --Stef - (unless (accept-process-output proc) - ;; accept-process-output returned nil, maybe because the process - ;; exited (and may have been replaced with another). - (setq proc (get-buffer-process asynch-buffer)))))) - asynch-buffer))) - -(defun url-mm-callback (&rest ignored) - (let ((handle (mm-dissect-buffer t))) - (save-excursion - (url-mark-buffer-as-dead (current-buffer)) - (set-buffer (generate-new-buffer (url-recreate-url url-current-object))) - (if (eq (mm-display-part handle) 'external) - (progn - (set-process-sentinel - ;; Fixme: this shouldn't have to know the form of the - ;; undisplayer produced by `mm-display-part'. - (get-buffer-process (cdr (mm-handle-undisplayer handle))) - `(lambda (proc event) - (mm-destroy-parts (quote ,handle)))) - (message "Viewing externally") - (kill-buffer (current-buffer))) - (display-buffer (current-buffer)) - (mm-destroy-parts handle))))) - -(defun url-mm-url (url) - "Retrieve URL and pass to the appropriate viewing application." - (require 'mm-decode) - (require 'mm-view) - (url-retrieve url 'url-mm-callback nil)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Miscellaneous -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar url-dead-buffer-list nil) - -(defun url-mark-buffer-as-dead (buff) - (push buff url-dead-buffer-list)) - -(defun url-gc-dead-buffers () - (let ((buff)) - (while (setq buff (pop url-dead-buffer-list)) - (if (buffer-live-p buff) - (kill-buffer buff))))) - -(cond - ((fboundp 'display-warning) - (defalias 'url-warn 'display-warning)) - ((fboundp 'warn) - (defun url-warn (class message &optional level) - (warn "(%s/%s) %s" class (or level 'warning) message))) - (t - (defun url-warn (class message &optional level) - (save-excursion - (set-buffer (get-buffer-create "*URL-WARNINGS*")) - (goto-char (point-max)) - (save-excursion - (insert (format "(%s/%s) %s\n" class (or level 'warning) message))) - (display-buffer (current-buffer)))))) - -(provide 'url) - -;;; url.el ends here diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/vc-dav.el b/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/vc-dav.el deleted file mode 100644 index dc03361d..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/url-emacs21/vc-dav.el +++ /dev/null @@ -1,177 +0,0 @@ -;;; vc-dav.el --- vc.el support for WebDAV - -;; Copyright (C) 2001 Free Software Foundation, Inc. - -;; Author: Bill Perry -;; Maintainer: Bill Perry -;; Version: $Revision: 1.3 $ -;; Keywords: url, vc - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -(require 'url) -(require 'url-dav) - -;;; Required functions for a vc backend -(defun vc-dav-registered (url) - "Return t iff URL is registered with a DAV aware server." - (url-dav-vc-registered url)) - -(defun vc-dav-state (url) - "Return the current version control state of URL. -For a list of possible values, see `vc-state'." - ;; Things we can support for WebDAV - ;; - ;; up-to-date - use lockdiscovery - ;; edited - check for an active lock by us - ;; USER - use lockdiscovery + owner - ;; - ;; These don't make sense for WebDAV - ;; needs-patch - ;; needs-merge - ;; unlocked-changes - (let ((locks (url-dav-active-locks url))) - (cond - ((null locks) 'up-to-date) - ((assoc url locks) - ;; SOMEBODY has a lock... let's find out who. - (setq locks (cdr (assoc url locks))) - (if (rassoc url-dav-lock-identifier locks) - ;; _WE_ have a lock - 'edited - (cdr (car locks))))))) - -(defun vc-dav-checkout-model (url) - "Indicate whether URL needs to be \"checked out\" before it can be edited. -See `vc-checkout-model' for a list of possible values." - ;; The only thing we can support with webdav is 'locking - 'locking) - -;; This should figure out the version # of the file somehow. What is -;; the most appropriate property in WebDAV to look at for this? -(defun vc-dav-workfile-version (url) - "Return the current workfile version of URL." - "Unknown") - -(defun vc-dav-register (url &optional rev comment) - "Register URL in the DAV backend." - ;; Do we need to do anything here? FIXME? - ) - -(defun vc-dav-checkin (url rev comment) - "Commit changes in URL to WebDAV. -If REV is non-nil, that should become the new revision number. -COMMENT is used as a check-in comment." - ;; This should PUT the resource and release any locks that we hold. - ) - -(defun vc-dav-checkout (url &optional editable rev destfile) - "Check out revision REV of URL into the working area. - -If EDITABLE is non-nil URL should be writable by the user and if -locking is used for URL, a lock should also be set. - -If REV is non-nil, that is the revision to check out. If REV is the -empty string, that means to check ou tht ehead of the trunk. - -If optional arg DESTFILE is given, it is an alternate filename to -write the contents to. -" - ;; This should LOCK the resource. - ) - -(defun vc-dav-revert (url &optional contents-done) - "Revert URL back to the current workfile version. - -If optional arg CONTENTS-DONE is non-nil, then the contents of FILE -have already been reverted from a version backup, and this function -only needs to update the status of URL within the backend. -" - ;; Should do a GET if !contents_done - ;; Should UNLOCK the file. - ) - -(defun vc-dav-print-log (url) - "Insert the revision log of URL into the *vc* buffer." - ) - -(defun vc-dav-diff (url &optional rev1 rev2) - "Insert the diff for URL into the *vc-diff* buffer. -If REV1 and REV2 are non-nil report differences from REV1 to REV2. -If REV1 is nil, use the current workfile version as the older version. -If REV2 is nil, use the current workfile contents as the nwer version. - -It should return a status of either 0 (no differences found), or -1 (either non-empty diff or the diff is run asynchronously). -" - ;; We should do this asynchronously... - ;; How would we do it at all, that is the question! - ) - - - -;;; Optional functions -;; Should be faster than vc-dav-state - but how? -(defun vc-dav-state-heuristic (url) - "Estimate the version control state of URL at visiting time." - (vc-dav-state url)) - -;; This should use url-dav-get-properties with a depth of `1' to get -;; all the properties. -(defun vc-dav-dir-state (url) - "find the version control state of all files in DIR in a fast way." - ) - -(defun vc-dav-workfile-unchanged-p (url) - "Return non-nil if URL is unchanged from its current workfile version." - ;; Probably impossible with webdav - ) - -(defun vc-dav-responsible-p (url) - "Return non-nil if DAV considers itself `responsible' for URL." - ;; Check for DAV support on the web server. - t) - -(defun vc-dav-could-register (url) - "Return non-nil if URL could be registered under this backend." - ;; Check for DAV support on the web server. - t) - -;;; Unimplemented functions -;; -;; vc-dav-latest-on-branch-p(URL) -;; Return non-nil if the current workfile version of FILE is the -;; latest on its branch. There are no branches in webdav yet. -;; -;; vc-dav-mode-line-string(url) -;; Return a dav-specific mode line string for URL. Are there any -;; specific states that we want exposed? -;; -;; vc-dav-dired-state-info(url) -;; Translate the `vc-state' property of URL into a string that can -;; be used in a vc-dired buffer. Are there any extra states that -;; we want exposed? -;; -;; vc-dav-receive-file(url rev) -;; Let this backend `receive' a file that is already registered -;; under another backend. The default just calls `register', which -;; should be sufficient for WebDAV. -;; -;; vc-dav-unregister(url) -;; Unregister URL. Not possible with WebDAV, other than by -;; deleting the resource. - -(provide 'vc-dav) diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/.nosearch b/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/.nosearch deleted file mode 100644 index e69de29b..00000000 diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/README_j.txt b/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/README_j.txt deleted file mode 100644 index 519793d2..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/README_j.txt +++ /dev/null @@ -1,58 +0,0 @@ -cURL + OpenSSL for Windows ƒ}ƒjƒ…ƒAƒ‹ - Since: 27-Feb-2002 - Version: 1.1 - Author: MURAOKA Taro (KoRoN) - Last Change: 04-Nov-2003. -à–¾ - cURL‚̓Rƒ}ƒ“ƒhƒ‰ƒCƒ“‚Å URI/URL ‚ðŽw’肵‚āAƒtƒ@ƒCƒ‹‚ðƒ_ƒEƒ“ƒ[ƒh‚·‚éƒ\ƒtƒg - ƒEƒFƒA‚Å‚·BƒA[ƒJƒCƒu‚ÉŽû˜^‚³‚ê‚Ä‚¢‚éŽÀsƒtƒ@ƒCƒ‹(curl.exe)‚́Aƒ\[ƒXƒR[ƒh - ‚©‚ç SSL ‚ð—LŒø‚É‚µ‚Ä Visual C++ 6.0 ‚ð—p‚¢‚ăRƒ“ƒpƒCƒ‹‚µ‚½‚à‚̂ł·B SSL ‚Í - OpenSSL‚Ì‚à‚Ì‚ðVC6‚ÆNASM 0.98‚ð—p‚¢‚ÄDLL‚Æ‚µ‚ăRƒ“ƒpƒCƒ‹‚µ‚Ü‚µ‚½B - - Žg‚¢•ûA‹y‚у‰ƒCƒZƒ“ƒX‚ɂ‚¢‚Ă̏ڍׂ͈ȉº‚ÌURI‚Æ”z•zƒA[ƒJƒCƒu“à‚Ìdocs/*‚ð - ŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B - - - cURL (7.10.8) - http://curl.haxx.se/ - - OpenSSL (0.9.7c) - http://www.openssl.org/ - - –{ƒA[ƒJƒCƒu‚͈ȉº‚ÌURI‚ɂĔz•z‚³‚ê‚Ü‚µ‚½B - - - ‚艮 - http://www.kaoriya.net/ - - ”z•zŽÒƒ[ƒ‹ƒAƒhƒŒƒX - koron@tka.att.ne.jp - - -‹Œ”Å‚ð‚¨Žg‚¢‚Ì•û‚Ö - ¡”Å‚æ‚èDLL‚ðŽg—p‚¹‚¸’P‘Ì‚ÌEXE‚Æ‚µ‚ărƒ‹ƒh‚·‚邿‚¤‚É‚µ‚Ü‚µ‚½B‚»‚Ì‚½‚ß‹Œ”Å‚É - ŠÜ‚Ü‚ê‚Ä‚¢‚½ libcurl.dll, libeay32.dll, ssleay32.dll‚Ì3‚‚̃tƒ@ƒCƒ‹‚Í•s—v‚É - ‚È‚è‚Ü‚µ‚½B‚±‚ê‚ç‚̃tƒ@ƒCƒ‹‚Í‘¶Ý‚µ‚Ä‚¢‚Ä‚à‰½‚ÌŠQ‚É‚à‚È‚è‚Ü‚¹‚ñ‚ª“¾‚É‚à‚È‚ç - ‚¸A‚Ü‚½–³‚­‚Ä‚àcURL‚Ì“®ì‚ÉŽxá‚ð‚«‚½‚·Ž–‚Í‚ ‚è‚Ü‚¹‚ñB‚æ‚Á‚ÄŠeŽ©‚Ì”»’f‚ŏÁ - ‚µ‚Ä‚¢‚½‚¾‚¢‚č\‚¢‚Ü‚¹‚ñB - - -XV—š—ð - 04-Nov-2003 - curl‚ð7.10.8‚ɃAƒbƒvƒf[ƒg - OpenSSH‚ð0.9.7c‚ɃAƒbƒvƒf[ƒg - CA‚ð”z•z•¨‚ɒljÁ - 08-Apr-2003 - curl‚ð7.10.4‚ɃAƒbƒvƒf[ƒg - OpenSSH‚ð0.9.6i‚ɃAƒbƒvƒf[ƒg - 23-Jan-2003 - curl‚ð7.10.3‚ɃAƒbƒvƒf[ƒg - OpenSSH‚ð0.9.6h‚ɃAƒbƒvƒf[ƒg - DLL‚ł͂Ȃ­’P‘Ì‚ÌEXE‚Æ‚µ‚ÄƒŠƒrƒ‹ƒh - ”z•zƒA[ƒJƒCƒu“à‚Édocs/FAQ‚ð’ljÁ - 05-Oct-2002 - curl‚ð7.10‚ɃAƒbƒvƒf[ƒg - OpenSSH‚ð0.9.6g‚ɕύX - 06-Aug-2002 - OpenSSH‚ð0.9.6e‚ɕύX - ------------------------------------------------------------------------------- - ¶‚«‚鎖‚Ö‚Ì‹­‚¢ˆÓŽu‚ª“¯Žž‚ÉŽ©•ª‚ƈقȂ鐶–½‚ð‚à‘¸‚ԐS‚ƂȂé - MURAOKA Taro/KoRoN - vim:set ts=8 sts=2 sw=2 tw=78 et ft=memo: diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/curl-ca-bundle.crt b/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/curl-ca-bundle.crt deleted file mode 100644 index 512229b8..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/curl-ca-bundle.crt +++ /dev/null @@ -1,4393 +0,0 @@ -## -## $Id: ca-bundle.crt,v 1.2 2003/03/24 11:06:57 bagder Exp $ -## -## ca-bundle.crt -- Bundle of CA Root Certificates -## Last Modified: Thu Mar 2 09:32:46 CET 2000 -## -## This is a bundle of X.509 certificates of public -## Certificate Authorities (CA). These were automatically -## extracted from Netscape Communicator 4.72's certificate database -## (the file `cert7.db'). It contains the certificates in both -## plain text and PEM format and therefore can be directly used -## with an Apache+mod_ssl webserver for SSL client authentication. -## Just configure this file as the SSLCACertificateFile. -## -## (SKIPME) -## - -ABAecom (sub., Am. Bankers Assn.) Root CA -========================================= -MD5 Fingerprint: 82:12:F7:89:E1:0B:91:60:A4:B6:22:9F:94:68:11:92 -PEM Data: ------BEGIN CERTIFICATE----- -MIID+DCCAuCgAwIBAgIRANAeQJAAACdLAAAAAQAAAAQwDQYJKoZIhvcNAQEFBQAw -gYwxCzAJBgNVBAYTAlVTMQ0wCwYDVQQIEwRVdGFoMRcwFQYDVQQHEw5TYWx0IExh -a2UgQ2l0eTEYMBYGA1UEChMPWGNlcnQgRVogYnkgRFNUMRgwFgYDVQQDEw9YY2Vy -dCBFWiBieSBEU1QxITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAe -Fw05OTA3MTQxNjE0MThaFw0wOTA3MTExNjE0MThaMIGMMQswCQYDVQQGEwJVUzEN -MAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxGDAWBgNVBAoT -D1hjZXJ0IEVaIGJ5IERTVDEYMBYGA1UEAxMPWGNlcnQgRVogYnkgRFNUMSEwHwYJ -KoZIhvcNAQkBFhJjYUBkaWdzaWd0cnVzdC5jb20wggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQCtVBjetL/3reh0qu2LfI/C1HUa1YS5tmL8ie/kl2GS+x24 -4VpHNJ6eBiL70+o4y7iLB/caoBd3B1owHNQpOCDXJ0DYUJNDv9IYoil2BXKqa7Zp -mKt5Hhxl9WqL/MUWqqJy2mDtTm4ZJXoKHTDjUJtCPETrobAgHtsCfv49H7/QAIrb -QHamGKUVp1e2UsIBF5h3j4qBxhq0airmr6nWAKzP2BVJfNsbof6B+of505DBAsD5 -0ELpkWglX8a/hznplQBgKL+DLMDnXrbXNhbnYId26OcnsiUNi3rlqh3lWc3OCw5v -xsic4xDZhTnTt5v6xrp8dNJddVardKSiUb9SfO5xAgMBAAGjUzBRMA8GA1UdEwEB -/wQFMAMBAf8wHwYDVR0jBBgwFoAUCCBsZuuBCmxc1bWmPEHdHJaRJ3cwHQYDVR0O -BBYEFAggbGbrgQpsXNW1pjxB3RyWkSd3MA0GCSqGSIb3DQEBBQUAA4IBAQBah1iP -Lat2IWtUDNnxQfZOzSue4x+boy1/2St9WMhnpCn16ezVvZY/o3P4xFs2fNBjLDQ5 -m0i4PW/2FMWeY+anNG7T6DOzxzwYbiOuQ5KZP5jFaTDxNjutuTCC1rZZFpYCCykS -YbQRifcML5SQhZgonFNsfmPdc/QZ/0qB0bJSI/08SjTOWhvgUIrtT4GV2GDn5MQN -u1g+WPdOaG8+Z8nLepcWJ+xCYRR2uwDF6wg9FX9LtiJdhzuQ9PPA/jez6dliDMDD -Wa9gvR8N26E0HzDEPYutsB0Ek+1f1eS/IDAE9EjpMwHRLpAnUrOb3jocq6mXf5vr -wo3CbezcE9NGxXl8 ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: - d0:1e:40:90:00:00:27:4b:00:00:00:01:00:00:00:04 - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, ST=Utah, L=Salt Lake City, O=Xcert EZ by DST, CN=Xcert EZ by DST/Email=ca@digsigtrust.com - Validity - Not Before: Jul 14 16:14:18 1999 GMT - Not After : Jul 11 16:14:18 2009 GMT - Subject: C=US, ST=Utah, L=Salt Lake City, O=Xcert EZ by DST, CN=Xcert EZ by DST/Email=ca@digsigtrust.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:ad:54:18:de:b4:bf:f7:ad:e8:74:aa:ed:8b:7c: - 8f:c2:d4:75:1a:d5:84:b9:b6:62:fc:89:ef:e4:97: - 61:92:fb:1d:b8:e1:5a:47:34:9e:9e:06:22:fb:d3: - ea:38:cb:b8:8b:07:f7:1a:a0:17:77:07:5a:30:1c: - d4:29:38:20:d7:27:40:d8:50:93:43:bf:d2:18:a2: - 29:76:05:72:aa:6b:b6:69:98:ab:79:1e:1c:65:f5: - 6a:8b:fc:c5:16:aa:a2:72:da:60:ed:4e:6e:19:25: - 7a:0a:1d:30:e3:50:9b:42:3c:44:eb:a1:b0:20:1e: - db:02:7e:fe:3d:1f:bf:d0:00:8a:db:40:76:a6:18: - a5:15:a7:57:b6:52:c2:01:17:98:77:8f:8a:81:c6: - 1a:b4:6a:2a:e6:af:a9:d6:00:ac:cf:d8:15:49:7c: - db:1b:a1:fe:81:fa:87:f9:d3:90:c1:02:c0:f9:d0: - 42:e9:91:68:25:5f:c6:bf:87:39:e9:95:00:60:28: - bf:83:2c:c0:e7:5e:b6:d7:36:16:e7:60:87:76:e8: - e7:27:b2:25:0d:8b:7a:e5:aa:1d:e5:59:cd:ce:0b: - 0e:6f:c6:c8:9c:e3:10:d9:85:39:d3:b7:9b:fa:c6: - ba:7c:74:d2:5d:75:56:ab:74:a4:a2:51:bf:52:7c: - ee:71 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE - X509v3 Authority Key Identifier: - keyid:08:20:6C:66:EB:81:0A:6C:5C:D5:B5:A6:3C:41:DD:1C:96:91:27:77 - - X509v3 Subject Key Identifier: - 08:20:6C:66:EB:81:0A:6C:5C:D5:B5:A6:3C:41:DD:1C:96:91:27:77 - Signature Algorithm: sha1WithRSAEncryption - 5a:87:58:8f:2d:ab:76:21:6b:54:0c:d9:f1:41:f6:4e:cd:2b: - 9e:e3:1f:9b:a3:2d:7f:d9:2b:7d:58:c8:67:a4:29:f5:e9:ec: - d5:bd:96:3f:a3:73:f8:c4:5b:36:7c:d0:63:2c:34:39:9b:48: - b8:3d:6f:f6:14:c5:9e:63:e6:a7:34:6e:d3:e8:33:b3:c7:3c: - 18:6e:23:ae:43:92:99:3f:98:c5:69:30:f1:36:3b:ad:b9:30: - 82:d6:b6:59:16:96:02:0b:29:12:61:b4:11:89:f7:0c:2f:94: - 90:85:98:28:9c:53:6c:7e:63:dd:73:f4:19:ff:4a:81:d1:b2: - 52:23:fd:3c:4a:34:ce:5a:1b:e0:50:8a:ed:4f:81:95:d8:60: - e7:e4:c4:0d:bb:58:3e:58:f7:4e:68:6f:3e:67:c9:cb:7a:97: - 16:27:ec:42:61:14:76:bb:00:c5:eb:08:3d:15:7f:4b:b6:22: - 5d:87:3b:90:f4:f3:c0:fe:37:b3:e9:d9:62:0c:c0:c3:59:af: - 60:bd:1f:0d:db:a1:34:1f:30:c4:3d:8b:ad:b0:1d:04:93:ed: - 5f:d5:e4:bf:20:30:04:f4:48:e9:33:01:d1:2e:90:27:52:b3: - 9b:de:3a:1c:ab:a9:97:7f:9b:eb:c2:8d:c2:6d:ec:dc:13:d3: - 46:c5:79:7c - -ANX Network CA by DST -===================== -MD5 Fingerprint: A8:ED:DE:EB:93:88:66:D8:2F:C3:BD:1D:BE:45:BE:4D -PEM Data: ------BEGIN CERTIFICATE----- -MIIDTTCCAragAwIBAgIENm6ibzANBgkqhkiG9w0BAQUFADBSMQswCQYDVQQGEwJV -UzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMR0wGwYDVQQL -ExREU1QgKEFOWCBOZXR3b3JrKSBDQTAeFw05ODEyMDkxNTQ2NDhaFw0xODEyMDkx -NjE2NDhaMFIxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVy -ZSBUcnVzdCBDby4xHTAbBgNVBAsTFERTVCAoQU5YIE5ldHdvcmspIENBMIGdMA0G -CSqGSIb3DQEBAQUAA4GLADCBhwKBgQC0SBGAWKDVpZkP9jcsRLZu0XzzKmueEbaI -IwRccSWeahJ3EW6/aDllqPay9qIYsokVoGe3eowiSGv2hDQftsr3G3LL8ltI04ce -InYTBLSsbJZ/5w4IyTJRMC3VgOghZ7rzXggkLAdZnZAa7kbJtaQelrRBkdR/0o04 -JrBvQ24JfQIBA6OCATAwggEsMBEGCWCGSAGG+EIBAQQEAwIABzB0BgNVHR8EbTBr -MGmgZ6BlpGMwYTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 -dXJlIFRydXN0IENvLjEdMBsGA1UECxMURFNUIChBTlggTmV0d29yaykgQ0ExDTAL -BgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkxNTQ2NDhagQ8yMDE4MTIw -OTE1NDY0OFowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFIwWVXDMFgpTZMKlhKqz -ZBdDP4I2MB0GA1UdDgQWBBSMFlVwzBYKU2TCpYSqs2QXQz+CNjAMBgNVHRMEBTAD -AQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB -AEklyWCxDF+pORDTxTRVfc95wynr3vnCQPnoVsXwL+z02exIUbhjOF6TbhiWhbnK -UJykuOpmJmiThW9vTHHQvnoLPDG5975pnhDX0UDorBZxq66rOOFwscqSFuBdhaYY -gAYAnOGmGEJRp2hoWe8mlF+tMQz+KR4XAYQ3W+gSMqNd ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 913220207 (0x366ea26f) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=Digital Signature Trust Co., OU=DST (ANX Network) CA - Validity - Not Before: Dec 9 15:46:48 1998 GMT - Not After : Dec 9 16:16:48 2018 GMT - Subject: C=US, O=Digital Signature Trust Co., OU=DST (ANX Network) CA - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:b4:48:11:80:58:a0:d5:a5:99:0f:f6:37:2c:44: - b6:6e:d1:7c:f3:2a:6b:9e:11:b6:88:23:04:5c:71: - 25:9e:6a:12:77:11:6e:bf:68:39:65:a8:f6:b2:f6: - a2:18:b2:89:15:a0:67:b7:7a:8c:22:48:6b:f6:84: - 34:1f:b6:ca:f7:1b:72:cb:f2:5b:48:d3:87:1e:22: - 76:13:04:b4:ac:6c:96:7f:e7:0e:08:c9:32:51:30: - 2d:d5:80:e8:21:67:ba:f3:5e:08:24:2c:07:59:9d: - 90:1a:ee:46:c9:b5:a4:1e:96:b4:41:91:d4:7f:d2: - 8d:38:26:b0:6f:43:6e:09:7d - Exponent: 3 (0x3) - X509v3 extensions: - Netscape Cert Type: - SSL CA, S/MIME CA, Object Signing CA - X509v3 CRL Distribution Points: - DirName:/C=US/O=Digital Signature Trust Co./OU=DST (ANX Network) CA/CN=CRL1 - - X509v3 Private Key Usage Period: - Not Before: Dec 9 15:46:48 1998 GMT, Not After: Dec 9 15:46:48 2018 GMT - X509v3 Key Usage: - Certificate Sign, CRL Sign - X509v3 Authority Key Identifier: - keyid:8C:16:55:70:CC:16:0A:53:64:C2:A5:84:AA:B3:64:17:43:3F:82:36 - - X509v3 Subject Key Identifier: - 8C:16:55:70:CC:16:0A:53:64:C2:A5:84:AA:B3:64:17:43:3F:82:36 - X509v3 Basic Constraints: - CA:TRUE - 1.2.840.113533.7.65.0: - 0 -..V4.0.... - Signature Algorithm: sha1WithRSAEncryption - 49:25:c9:60:b1:0c:5f:a9:39:10:d3:c5:34:55:7d:cf:79:c3: - 29:eb:de:f9:c2:40:f9:e8:56:c5:f0:2f:ec:f4:d9:ec:48:51: - b8:63:38:5e:93:6e:18:96:85:b9:ca:50:9c:a4:b8:ea:66:26: - 68:93:85:6f:6f:4c:71:d0:be:7a:0b:3c:31:b9:f7:be:69:9e: - 10:d7:d1:40:e8:ac:16:71:ab:ae:ab:38:e1:70:b1:ca:92:16: - e0:5d:85:a6:18:80:06:00:9c:e1:a6:18:42:51:a7:68:68:59: - ef:26:94:5f:ad:31:0c:fe:29:1e:17:01:84:37:5b:e8:12:32: - a3:5d - -American Express CA -=================== -MD5 Fingerprint: 1C:D5:8E:82:BE:70:55:8E:39:61:DF:AD:51:DB:6B:A0 -PEM Data: ------BEGIN CERTIFICATE----- -MIICkDCCAfkCAgCNMA0GCSqGSIb3DQEBBAUAMIGPMQswCQYDVQQGEwJVUzEnMCUG -A1UEChMeQW1lcmljYW4gRXhwcmVzcyBDb21wYW55LCBJbmMuMSYwJAYDVQQLEx1B -bWVyaWNhbiBFeHByZXNzIFRlY2hub2xvZ2llczEvMC0GA1UEAxMmQW1lcmljYW4g -RXhwcmVzcyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNOTgwODE0MjIwMTAwWhcN -MDYwODE0MjM1OTAwWjCBjzELMAkGA1UEBhMCVVMxJzAlBgNVBAoTHkFtZXJpY2Fu -IEV4cHJlc3MgQ29tcGFueSwgSW5jLjEmMCQGA1UECxMdQW1lcmljYW4gRXhwcmVz -cyBUZWNobm9sb2dpZXMxLzAtBgNVBAMTJkFtZXJpY2FuIEV4cHJlc3MgQ2VydGlm -aWNhdGUgQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJ8kmS -hcr9FSm1BrZE7PyIo/KGzv8UTyQckvnCI8HOQ99dNMi4FOzVKnCRSZXXVs2U8amT -0Ggi3E19oApyKkfqJfCFAF82VGHPC/k3Wmed6R/pZD9wlWGn0DAC3iYopGYDBOkw -+48zB/lvYYeictvzaHhjZlmpybdm4RWySDYs+QIDAQABMA0GCSqGSIb3DQEBBAUA -A4GBAGgXYrhzi0xs60qlPqvlnS7SzYoHV/PGWZd2Fxf4Uo4nk9hY2Chs9KIEeorC -diSxArTfKPL386infiNIYYj0EWiuJl32oUtTJWrYKhQCDuCHIG6eGVxzkAsj4jGX -Iz/VIqLTBnvaN/XXtUFEF3pFAtmFRWbWjsfwegyZYiJpW+3S ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: 141 (0x8d) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Certificate Authority - Validity - Not Before: Aug 14 22:01:00 1998 GMT - Not After : Aug 14 23:59:00 2006 GMT - Subject: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Certificate Authority - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:c9:f2:49:92:85:ca:fd:15:29:b5:06:b6:44:ec: - fc:88:a3:f2:86:ce:ff:14:4f:24:1c:92:f9:c2:23: - c1:ce:43:df:5d:34:c8:b8:14:ec:d5:2a:70:91:49: - 95:d7:56:cd:94:f1:a9:93:d0:68:22:dc:4d:7d:a0: - 0a:72:2a:47:ea:25:f0:85:00:5f:36:54:61:cf:0b: - f9:37:5a:67:9d:e9:1f:e9:64:3f:70:95:61:a7:d0: - 30:02:de:26:28:a4:66:03:04:e9:30:fb:8f:33:07: - f9:6f:61:87:a2:72:db:f3:68:78:63:66:59:a9:c9: - b7:66:e1:15:b2:48:36:2c:f9 - Exponent: 65537 (0x10001) - Signature Algorithm: md5WithRSAEncryption - 68:17:62:b8:73:8b:4c:6c:eb:4a:a5:3e:ab:e5:9d:2e:d2:cd: - 8a:07:57:f3:c6:59:97:76:17:17:f8:52:8e:27:93:d8:58:d8: - 28:6c:f4:a2:04:7a:8a:c2:76:24:b1:02:b4:df:28:f2:f7:f3: - a8:a7:7e:23:48:61:88:f4:11:68:ae:26:5d:f6:a1:4b:53:25: - 6a:d8:2a:14:02:0e:e0:87:20:6e:9e:19:5c:73:90:0b:23:e2: - 31:97:23:3f:d5:22:a2:d3:06:7b:da:37:f5:d7:b5:41:44:17: - 7a:45:02:d9:85:45:66:d6:8e:c7:f0:7a:0c:99:62:22:69:5b: - ed:d2 - -American Express Global CA -========================== -MD5 Fingerprint: 63:1B:66:93:8C:F3:66:CB:3C:79:57:DC:05:49:EA:DB -PEM Data: ------BEGIN CERTIFICATE----- -MIIEBDCCAuygAwIBAgICAIUwDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNVBAYTAlVT -MScwJQYDVQQKEx5BbWVyaWNhbiBFeHByZXNzIENvbXBhbnksIEluYy4xJjAkBgNV -BAsTHUFtZXJpY2FuIEV4cHJlc3MgVGVjaG5vbG9naWVzMTYwNAYDVQQDEy1BbWVy -aWNhbiBFeHByZXNzIEdsb2JhbCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNOTgw -ODE0MTkwNjAwWhcNMTMwODE0MjM1OTAwWjCBljELMAkGA1UEBhMCVVMxJzAlBgNV -BAoTHkFtZXJpY2FuIEV4cHJlc3MgQ29tcGFueSwgSW5jLjEmMCQGA1UECxMdQW1l -cmljYW4gRXhwcmVzcyBUZWNobm9sb2dpZXMxNjA0BgNVBAMTLUFtZXJpY2FuIEV4 -cHJlc3MgR2xvYmFsIENlcnRpZmljYXRlIEF1dGhvcml0eTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAPAkJmYu++tKc3FTiUfLJjxTkpRMysKFtQ34w1e9 -Lyofahi3V68MABb6oLaQpvcaoS5mJsdoo4qTaWa1RlYtHYLqkAwKIsKJUI0F89Sr -c0HwzxKsKLRvFJSWWUuekHWG3+JH6+HpT0N+h8onGGaetcFAZX38YW+tm3LPqV7Y -8/nabpEQ+ky16n4g3qk5L/WI5IpvNcYgnCuGRjMK/DFVpWusFkDpzTVZbzIEw3u1 -D3t3cPNIuypSgs6vKW3xEW9t5gcAAe+a8yYNpnkTZ6/4qxx1rJG1a75AsN6cDLFp -hRlxkRNFyt/R/eayypaDedvFuKpbepALeFY+xteflEgR9a0CAwEAAaNaMFgwEgYD -VR0TAQH/BAgwBgEB/wIBBTAOBgNVHQ8BAf8EBAMCAQYwFwYDVR0gBBAwDjAMBgoq -hkiG+Q8KAQUBMBkGA1UdDgQSBBBXRzV7NicRqAj8L0Yl6yRpMA0GCSqGSIb3DQEB -BQUAA4IBAQDHYUWoinG5vjTpIXshzVYTmNUwY+kYqkuSFb8LHbvskmnFLsNhi+gw -RcsQRsFzOFyLGdIr80DrfHKzLh4n43WVihybLsSVBYZy0FX0oZJSeVzb9Pjc5dcS -sUDHPIbkMWVKyjfG3nZXGWlMRmn8Kq0WN3qTrPchSy3766lQy8HRQAjaA2mHpzde -VcHF7cTjjgwml5tcV0ty4/IDBdACOyYDQJCevgtbSQx48dVMVSng9v1MA6lUAjLR -V1qFrEPtWzsWX6C/NdtLnnvo/+cNPDuom0lBRvVzTv+SZSGDE1Vx60k8f4gawhIo -JaFGS0E3l3/sjvHUoZbCILZerakcHhGg ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 133 (0x85) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Global Certificate Authority - Validity - Not Before: Aug 14 19:06:00 1998 GMT - Not After : Aug 14 23:59:00 2013 GMT - Subject: C=US, O=American Express Company, Inc., OU=American Express Technologies, CN=American Express Global Certificate Authority - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:f0:24:26:66:2e:fb:eb:4a:73:71:53:89:47:cb: - 26:3c:53:92:94:4c:ca:c2:85:b5:0d:f8:c3:57:bd: - 2f:2a:1f:6a:18:b7:57:af:0c:00:16:fa:a0:b6:90: - a6:f7:1a:a1:2e:66:26:c7:68:a3:8a:93:69:66:b5: - 46:56:2d:1d:82:ea:90:0c:0a:22:c2:89:50:8d:05: - f3:d4:ab:73:41:f0:cf:12:ac:28:b4:6f:14:94:96: - 59:4b:9e:90:75:86:df:e2:47:eb:e1:e9:4f:43:7e: - 87:ca:27:18:66:9e:b5:c1:40:65:7d:fc:61:6f:ad: - 9b:72:cf:a9:5e:d8:f3:f9:da:6e:91:10:fa:4c:b5: - ea:7e:20:de:a9:39:2f:f5:88:e4:8a:6f:35:c6:20: - 9c:2b:86:46:33:0a:fc:31:55:a5:6b:ac:16:40:e9: - cd:35:59:6f:32:04:c3:7b:b5:0f:7b:77:70:f3:48: - bb:2a:52:82:ce:af:29:6d:f1:11:6f:6d:e6:07:00: - 01:ef:9a:f3:26:0d:a6:79:13:67:af:f8:ab:1c:75: - ac:91:b5:6b:be:40:b0:de:9c:0c:b1:69:85:19:71: - 91:13:45:ca:df:d1:fd:e6:b2:ca:96:83:79:db:c5: - b8:aa:5b:7a:90:0b:78:56:3e:c6:d7:9f:94:48:11: - f5:ad - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE, pathlen:5 - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Certificate Policies: - Policy: 1.2.840.113807.10.1.5.1 - - X509v3 Subject Key Identifier: - 57:47:35:7B:36:27:11:A8:08:FC:2F:46:25:EB:24:69 - Signature Algorithm: sha1WithRSAEncryption - c7:61:45:a8:8a:71:b9:be:34:e9:21:7b:21:cd:56:13:98:d5: - 30:63:e9:18:aa:4b:92:15:bf:0b:1d:bb:ec:92:69:c5:2e:c3: - 61:8b:e8:30:45:cb:10:46:c1:73:38:5c:8b:19:d2:2b:f3:40: - eb:7c:72:b3:2e:1e:27:e3:75:95:8a:1c:9b:2e:c4:95:05:86: - 72:d0:55:f4:a1:92:52:79:5c:db:f4:f8:dc:e5:d7:12:b1:40: - c7:3c:86:e4:31:65:4a:ca:37:c6:de:76:57:19:69:4c:46:69: - fc:2a:ad:16:37:7a:93:ac:f7:21:4b:2d:fb:eb:a9:50:cb:c1: - d1:40:08:da:03:69:87:a7:37:5e:55:c1:c5:ed:c4:e3:8e:0c: - 26:97:9b:5c:57:4b:72:e3:f2:03:05:d0:02:3b:26:03:40:90: - 9e:be:0b:5b:49:0c:78:f1:d5:4c:55:29:e0:f6:fd:4c:03:a9: - 54:02:32:d1:57:5a:85:ac:43:ed:5b:3b:16:5f:a0:bf:35:db: - 4b:9e:7b:e8:ff:e7:0d:3c:3b:a8:9b:49:41:46:f5:73:4e:ff: - 92:65:21:83:13:55:71:eb:49:3c:7f:88:1a:c2:12:28:25:a1: - 46:4b:41:37:97:7f:ec:8e:f1:d4:a1:96:c2:20:b6:5e:ad:a9: - 1c:1e:11:a0 - -BelSign Object Publishing CA -============================ -MD5 Fingerprint: 8A:02:F8:DF:B8:E1:84:9F:5A:C2:60:24:65:D1:73:FB -PEM Data: ------BEGIN CERTIFICATE----- -MIIDAzCCAmygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBuzELMAkGA1UEBhMCQkUx -ETAPBgNVBAcTCEJydXNzZWxzMRMwEQYDVQQKEwpCZWxTaWduIE5WMTgwNgYDVQQL -Ey9CZWxTaWduIE9iamVjdCBQdWJsaXNoaW5nIENlcnRpZmljYXRlIEF1dGhvcml0 -eTElMCMGA1UEAxMcQmVsU2lnbiBPYmplY3QgUHVibGlzaGluZyBDQTEjMCEGCSqG -SIb3DQEJARYUd2VibWFzdGVyQGJlbHNpZ24uYmUwHhcNOTcwOTE5MjIwMzAwWhcN -MDcwOTE5MjIwMzAwWjCBuzELMAkGA1UEBhMCQkUxETAPBgNVBAcTCEJydXNzZWxz -MRMwEQYDVQQKEwpCZWxTaWduIE5WMTgwNgYDVQQLEy9CZWxTaWduIE9iamVjdCBQ -dWJsaXNoaW5nIENlcnRpZmljYXRlIEF1dGhvcml0eTElMCMGA1UEAxMcQmVsU2ln -biBPYmplY3QgUHVibGlzaGluZyBDQTEjMCEGCSqGSIb3DQEJARYUd2VibWFzdGVy -QGJlbHNpZ24uYmUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMQuH7a/7oJA -3fm3LkHVngWxWtAmfGJVA5v8y2HeS+/+6Jn+h7mIz5DaDwk8dt8Xl7bLPyVF/bS8 -WAC+sFq2FIeP7mdkrR2Ig7tnn2VhAFgIgFCfgMkx9iqQHC33SmwQ9iNDXTgJYIhX -As0WbBj8zfuSKnfQnpOjXYhk0Mj4XVRRAgMBAAGjFTATMBEGCWCGSAGG+EIBAQQE -AwIABzANBgkqhkiG9w0BAQQFAAOBgQBjdhd8lvBTpV0BHFPOKcJ+daxMDaIIc7Rq -Mf0CBhSZ3FQEpL/IloafMUMyJVf2hfYluze+oXkjyVcGJXFrRU/49AJAFoIir1Tq -Mij2De6ZuksIUQ9uhiMhTC0liIHELg7xEyw4ipUCJMM6lWPkk45IuwhHcl+u5jpa -R9Zxxp6aUg== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 1 (0x1) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=BE, L=Brussels, O=BelSign NV, OU=BelSign Object Publishing Certificate Authority, CN=BelSign Object Publishing CA/Email=webmaster@belsign.be - Validity - Not Before: Sep 19 22:03:00 1997 GMT - Not After : Sep 19 22:03:00 2007 GMT - Subject: C=BE, L=Brussels, O=BelSign NV, OU=BelSign Object Publishing Certificate Authority, CN=BelSign Object Publishing CA/Email=webmaster@belsign.be - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:c4:2e:1f:b6:bf:ee:82:40:dd:f9:b7:2e:41:d5: - 9e:05:b1:5a:d0:26:7c:62:55:03:9b:fc:cb:61:de: - 4b:ef:fe:e8:99:fe:87:b9:88:cf:90:da:0f:09:3c: - 76:df:17:97:b6:cb:3f:25:45:fd:b4:bc:58:00:be: - b0:5a:b6:14:87:8f:ee:67:64:ad:1d:88:83:bb:67: - 9f:65:61:00:58:08:80:50:9f:80:c9:31:f6:2a:90: - 1c:2d:f7:4a:6c:10:f6:23:43:5d:38:09:60:88:57: - 02:cd:16:6c:18:fc:cd:fb:92:2a:77:d0:9e:93:a3: - 5d:88:64:d0:c8:f8:5d:54:51 - Exponent: 65537 (0x10001) - X509v3 extensions: - Netscape Cert Type: - SSL CA, S/MIME CA, Object Signing CA - Signature Algorithm: md5WithRSAEncryption - 63:76:17:7c:96:f0:53:a5:5d:01:1c:53:ce:29:c2:7e:75:ac: - 4c:0d:a2:08:73:b4:6a:31:fd:02:06:14:99:dc:54:04:a4:bf: - c8:96:86:9f:31:43:32:25:57:f6:85:f6:25:bb:37:be:a1:79: - 23:c9:57:06:25:71:6b:45:4f:f8:f4:02:40:16:82:22:af:54: - ea:32:28:f6:0d:ee:99:ba:4b:08:51:0f:6e:86:23:21:4c:2d: - 25:88:81:c4:2e:0e:f1:13:2c:38:8a:95:02:24:c3:3a:95:63: - e4:93:8e:48:bb:08:47:72:5f:ae:e6:3a:5a:47:d6:71:c6:9e: - 9a:52 - -BelSign Secure Server CA -======================== -MD5 Fingerprint: 3D:5E:82:C6:D9:AD:D9:8B:93:6B:0C:10:B9:49:0A:B1 -PEM Data: ------BEGIN CERTIFICATE----- -MIIC8zCCAlygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBszELMAkGA1UEBhMCQkUx -ETAPBgNVBAcTCEJydXNzZWxzMRMwEQYDVQQKEwpCZWxTaWduIE5WMTQwMgYDVQQL -EytCZWxTaWduIFNlY3VyZSBTZXJ2ZXIgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSEw -HwYDVQQDExhCZWxTaWduIFNlY3VyZSBTZXJ2ZXIgQ0ExIzAhBgkqhkiG9w0BCQEW -FHdlYm1hc3RlckBiZWxzaWduLmJlMB4XDTk3MDcxNjIyMDA1NFoXDTA3MDcxNjIy -MDA1NFowgbMxCzAJBgNVBAYTAkJFMREwDwYDVQQHEwhCcnVzc2VsczETMBEGA1UE -ChMKQmVsU2lnbiBOVjE0MDIGA1UECxMrQmVsU2lnbiBTZWN1cmUgU2VydmVyIENl -cnRpZmljYXRlIEF1dGhvcml0eTEhMB8GA1UEAxMYQmVsU2lnbiBTZWN1cmUgU2Vy -dmVyIENBMSMwIQYJKoZIhvcNAQkBFhR3ZWJtYXN0ZXJAYmVsc2lnbi5iZTCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1gESeJL4BEJ/yccig/x8R3AwK0kLPjZA -kCjaIXODU/LE0RZAwFP/rqbGJLMnbaWzPTl3XagG9ubpvGMRTgZlcAqdk/miQIt/ -SoQOjRax1swIZBIM4ChLyKWEkBf7EUYu1qeFGMsYrmOasFgG9ADP+MQJGjUMofnu -Sv1t3v4mpTsCAwEAAaMVMBMwEQYJYIZIAYb4QgEBBAQDAgCgMA0GCSqGSIb3DQEB -BAUAA4GBAGw9mcMF4h3K5S2qaIWLQDEgZhNo5lg6idCNdbLFYth9go/32TKBd/Y1 -W4UpzmeyubwrGXjP84f9RvGVdbIJVwMwwXrNckdxgMp9ncllPEcRIn36BwsoeKGT -6AVFSOIyMko96FMcELfHc4wHUOH5yStTQfWDjeUJOUqOA2KqQGOL ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 1 (0x1) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=BE, L=Brussels, O=BelSign NV, OU=BelSign Secure Server Certificate Authority, CN=BelSign Secure Server CA/Email=webmaster@belsign.be - Validity - Not Before: Jul 16 22:00:54 1997 GMT - Not After : Jul 16 22:00:54 2007 GMT - Subject: C=BE, L=Brussels, O=BelSign NV, OU=BelSign Secure Server Certificate Authority, CN=BelSign Secure Server CA/Email=webmaster@belsign.be - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:d6:01:12:78:92:f8:04:42:7f:c9:c7:22:83:fc: - 7c:47:70:30:2b:49:0b:3e:36:40:90:28:da:21:73: - 83:53:f2:c4:d1:16:40:c0:53:ff:ae:a6:c6:24:b3: - 27:6d:a5:b3:3d:39:77:5d:a8:06:f6:e6:e9:bc:63: - 11:4e:06:65:70:0a:9d:93:f9:a2:40:8b:7f:4a:84: - 0e:8d:16:b1:d6:cc:08:64:12:0c:e0:28:4b:c8:a5: - 84:90:17:fb:11:46:2e:d6:a7:85:18:cb:18:ae:63: - 9a:b0:58:06:f4:00:cf:f8:c4:09:1a:35:0c:a1:f9: - ee:4a:fd:6d:de:fe:26:a5:3b - Exponent: 65537 (0x10001) - X509v3 extensions: - Netscape Cert Type: - SSL Client, S/MIME - Signature Algorithm: md5WithRSAEncryption - 6c:3d:99:c3:05:e2:1d:ca:e5:2d:aa:68:85:8b:40:31:20:66: - 13:68:e6:58:3a:89:d0:8d:75:b2:c5:62:d8:7d:82:8f:f7:d9: - 32:81:77:f6:35:5b:85:29:ce:67:b2:b9:bc:2b:19:78:cf:f3: - 87:fd:46:f1:95:75:b2:09:57:03:30:c1:7a:cd:72:47:71:80: - ca:7d:9d:c9:65:3c:47:11:22:7d:fa:07:0b:28:78:a1:93:e8: - 05:45:48:e2:32:32:4a:3d:e8:53:1c:10:b7:c7:73:8c:07:50: - e1:f9:c9:2b:53:41:f5:83:8d:e5:09:39:4a:8e:03:62:aa:40: - 63:8b - -Deutsche Telekom AG Root CA -=========================== -MD5 Fingerprint: 77:DE:04:94:77:D0:0C:5F:A7:B1:F4:30:18:87:FB:55 -PEM Data: ------BEGIN CERTIFICATE----- -MIICjjCCAfegAwIBAgIBBjANBgkqhkiG9w0BAQQFADBtMQswCQYDVQQGEwJERTEc -MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEdMBsGA1UECxMUVGVsZVNlYyBU -cnVzdCBDZW50ZXIxITAfBgNVBAMTGERldXRzY2hlIFRlbGVrb20gUm9vdCBDQTAe -Fw05ODEyMDkwOTExMDBaFw0wNDEyMDkyMzU5MDBaMG0xCzAJBgNVBAYTAkRFMRww -GgYDVQQKExNEZXV0c2NoZSBUZWxla29tIEFHMR0wGwYDVQQLExRUZWxlU2VjIFRy -dXN0IENlbnRlcjEhMB8GA1UEAxMYRGV1dHNjaGUgVGVsZWtvbSBSb290IENBMIGf -MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdBSz5BbO5EtdpcffqVjAIVxRDe7sa -nG0vV2HX4vVEa+42QZb2ZM7hwbK5pBQEmFDocPiONZp9ScFhHVmu2gYYlX2tzuyp -vtEYD0CRdiqj5f3+iRX0V/fgVdp1rQD0LME1zLRDJlViRC4BJZyKW/DB0AA1eP41 -3pRAZHiDocw5iQIDAQABoz4wPDAPBgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQE -AwIBBjAZBgNVHQ4EEgQQLIdZH4sTgLL5hp0+En5YljANBgkqhkiG9w0BAQQFAAOB -gQAP/nO1B4hvoAuJ6spQH5TelCsLJ15P9RyVJtqMllStGZE3Q12ryYuzzW+YOT3t -3TXjcbftE5OD6IblKTMTE7w1e/0oL3BZ1dO0jSgTWTvI1XT5RcIHYKq4GFT5pWj/ -1wXVj7YFMS5BSvQQH2BHGguLGU2SVyDS71AZ6M3QcLy8Ng== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 6 (0x6) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=DE, O=Deutsche Telekom AG, OU=TeleSec Trust Center, CN=Deutsche Telekom Root CA - Validity - Not Before: Dec 9 09:11:00 1998 GMT - Not After : Dec 9 23:59:00 2004 GMT - Subject: C=DE, O=Deutsche Telekom AG, OU=TeleSec Trust Center, CN=Deutsche Telekom Root CA - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:dd:05:2c:f9:05:b3:b9:12:d7:69:71:f7:ea:56: - 30:08:57:14:43:7b:bb:1a:9c:6d:2f:57:61:d7:e2: - f5:44:6b:ee:36:41:96:f6:64:ce:e1:c1:b2:b9:a4: - 14:04:98:50:e8:70:f8:8e:35:9a:7d:49:c1:61:1d: - 59:ae:da:06:18:95:7d:ad:ce:ec:a9:be:d1:18:0f: - 40:91:76:2a:a3:e5:fd:fe:89:15:f4:57:f7:e0:55: - da:75:ad:00:f4:2c:c1:35:cc:b4:43:26:55:62:44: - 2e:01:25:9c:8a:5b:f0:c1:d0:00:35:78:fe:35:de: - 94:40:64:78:83:a1:cc:39:89 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:TRUE, pathlen:5 - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Subject Key Identifier: - 2C:87:59:1F:8B:13:80:B2:F9:86:9D:3E:12:7E:58:96 - Signature Algorithm: md5WithRSAEncryption - 0f:fe:73:b5:07:88:6f:a0:0b:89:ea:ca:50:1f:94:de:94:2b: - 0b:27:5e:4f:f5:1c:95:26:da:8c:96:54:ad:19:91:37:43:5d: - ab:c9:8b:b3:cd:6f:98:39:3d:ed:dd:35:e3:71:b7:ed:13:93: - 83:e8:86:e5:29:33:13:13:bc:35:7b:fd:28:2f:70:59:d5:d3: - b4:8d:28:13:59:3b:c8:d5:74:f9:45:c2:07:60:aa:b8:18:54: - f9:a5:68:ff:d7:05:d5:8f:b6:05:31:2e:41:4a:f4:10:1f:60: - 47:1a:0b:8b:19:4d:92:57:20:d2:ef:50:19:e8:cd:d0:70:bc: - bc:36 - -Digital Signature Trust Co. Global CA 1 -======================================= -MD5 Fingerprint: 25:7A:BA:83:2E:B6:A2:0B:DA:FE:F5:02:0F:08:D7:AD -PEM Data: ------BEGIN CERTIFICATE----- -MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJV -UzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQL -EwhEU1RDQSBFMTAeFw05ODEyMTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJ -BgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4x -ETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQCg -bIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJENySZ -j9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlV -Sn5JTe2io74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCG -SAGG+EIBAQQEAwIABzBoBgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMx -JDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMI -RFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMTAxODEw -MjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFGp5 -fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i -+DAMBgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqG -SIb3DQEBBQUAA4GBACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lN -QseSJqBcNJo4cvj9axY+IO6CizEqkzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+ -gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4RbyhkwS7hp86W0N6w4pl ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 913315222 (0x36701596) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=Digital Signature Trust Co., OU=DSTCA E1 - Validity - Not Before: Dec 10 18:10:23 1998 GMT - Not After : Dec 10 18:40:23 2018 GMT - Subject: C=US, O=Digital Signature Trust Co., OU=DSTCA E1 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:a0:6c:81:a9:cf:34:1e:24:dd:fe:86:28:cc:de: - 83:2f:f9:5e:d4:42:d2:e8:74:60:66:13:98:06:1c: - a9:51:12:69:6f:31:55:b9:49:72:00:08:7e:d3:a5: - 62:44:37:24:99:8f:d9:83:48:8f:99:6d:95:13:bb: - 43:3b:2e:49:4e:88:37:c1:bb:58:7f:fe:e1:bd:f8: - bb:61:cd:f3:47:c0:99:a6:f1:f3:91:e8:78:7c:00: - cb:61:c9:44:27:71:69:55:4a:7e:49:4d:ed:a2:a3: - be:02:4c:00:ca:02:a8:ee:01:02:31:64:0f:52:2d: - 13:74:76:36:b5:7a:b4:2d:71 - Exponent: 3 (0x3) - X509v3 extensions: - Netscape Cert Type: - SSL CA, S/MIME CA, Object Signing CA - X509v3 CRL Distribution Points: - DirName:/C=US/O=Digital Signature Trust Co./OU=DSTCA E1/CN=CRL1 - - X509v3 Private Key Usage Period: - Not Before: Dec 10 18:10:23 1998 GMT, Not After: Dec 10 18:10:23 2018 GMT - X509v3 Key Usage: - Certificate Sign, CRL Sign - X509v3 Authority Key Identifier: - keyid:6A:79:7E:91:69:46:18:13:0A:02:77:A5:59:5B:60:98:25:0E:A2:F8 - - X509v3 Subject Key Identifier: - 6A:79:7E:91:69:46:18:13:0A:02:77:A5:59:5B:60:98:25:0E:A2:F8 - X509v3 Basic Constraints: - CA:TRUE - 1.2.840.113533.7.65.0: - 0 -..V4.0.... - Signature Algorithm: sha1WithRSAEncryption - 22:12:d8:7a:1d:dc:81:06:b6:09:65:b2:87:c8:1f:5e:b4:2f: - e9:c4:1e:f2:3c:c1:bb:04:90:11:4a:83:4e:7e:93:b9:4d:42: - c7:92:26:a0:5c:34:9a:38:72:f8:fd:6b:16:3e:20:ee:82:8b: - 31:2a:93:36:85:23:88:8a:3c:03:68:d3:c9:09:0f:4d:fc:6c: - a4:da:28:72:93:0e:89:80:b0:7d:fe:80:6f:65:6d:18:33:97: - 8b:c2:6b:89:ee:60:3d:c8:9b:ef:7f:2b:32:62:73:93:cb:3c: - e3:7b:e2:76:78:45:bc:a1:93:04:bb:86:9f:3a:5b:43:7a:c3: - 8a:65 - -Digital Signature Trust Co. Global CA 2 -======================================= -MD5 Fingerprint: 6C:C9:A7:6E:47:F1:0C:E3:53:3B:78:4C:4D:C2:6A:C5 -PEM Data: ------BEGIN CERTIFICATE----- -MIID2DCCAsACEQDQHkCLAAACfAAAAAIAAAABMA0GCSqGSIb3DQEBBQUAMIGpMQsw -CQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp -dHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UE -CxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBSb290Q0EgWDExITAfBgkqhkiG9w0B -CQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODEyMDExODE4NTVaFw0wODExMjgx -ODE4NTVaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMO -U2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0 -IENvLjERMA8GA1UECxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBSb290Q0EgWDEx -ITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBANLGJrbnpT3BxGjVUG9TxW9JEwm4ryxIjRRqoxdf -WvnTLnUv2Chi0ZMv/E3Uq4flCMeZ55I/db3rJbQVwZsZPdJEjdd0IG03Ao9pk1uK -xBmd9LIO/BZsubEFkoPRhSxglD5FVaDZqwgh5mDoO3TymVBRaNADLbGAvqPYUrBE -zUNKcI5YhZXhTizWLUFv1oTnyJhEykfbLCSlaSbPa7gnYsP0yXqSI+0TZ4KuRS5F -5X5yP4WdlGIQ5jyRoa13AOAV7POEgHJ6jm5gl8ckWRA0g1vhpaRptlc1HHhZxtMv -OnNn7pTKBBMFYgZwI7P0fO5F2WQLW0mqpEPOJsREEmy43XkCAwEAATANBgkqhkiG -9w0BAQUFAAOCAQEAojeyP2n714Z5VEkxlTMr89EJFEliYIalsBHiUMIdBlc+Legz -ZL6bqq1fG03UmZWii5rJYnK1aerZWKs17RWiQ9a2vAd5ZWRzfdd5ynvVWlHG4VME -lo04z6MXrDlxawHDi1M8Y+nuecDkvpIyZHqzH5eUYr3qsiAVlfuX8ngvYzZAOONG -Dx3drJXK50uQe7FLqdTF65raqtWjlBRGjS0f8zrWkzr2Pnn86Oawde3uPclwx12q -gUtGJRzHbBXjlU4PqjI3lAoXJJIThFjSY28r9+ZbYgsTF7ANUkz+/m9c4pFuHf2k -Ytdo+o56T9II2pPc8JIRetDccpMMc5NihWjQ9A== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - d0:1e:40:8b:00:00:02:7c:00:00:00:02:00:00:00:01 - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=DSTCA X1, CN=DST RootCA X1/Email=ca@digsigtrust.com - Validity - Not Before: Dec 1 18:18:55 1998 GMT - Not After : Nov 28 18:18:55 2008 GMT - Subject: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=DSTCA X1, CN=DST RootCA X1/Email=ca@digsigtrust.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:d2:c6:26:b6:e7:a5:3d:c1:c4:68:d5:50:6f:53: - c5:6f:49:13:09:b8:af:2c:48:8d:14:6a:a3:17:5f: - 5a:f9:d3:2e:75:2f:d8:28:62:d1:93:2f:fc:4d:d4: - ab:87:e5:08:c7:99:e7:92:3f:75:bd:eb:25:b4:15: - c1:9b:19:3d:d2:44:8d:d7:74:20:6d:37:02:8f:69: - 93:5b:8a:c4:19:9d:f4:b2:0e:fc:16:6c:b9:b1:05: - 92:83:d1:85:2c:60:94:3e:45:55:a0:d9:ab:08:21: - e6:60:e8:3b:74:f2:99:50:51:68:d0:03:2d:b1:80: - be:a3:d8:52:b0:44:cd:43:4a:70:8e:58:85:95:e1: - 4e:2c:d6:2d:41:6f:d6:84:e7:c8:98:44:ca:47:db: - 2c:24:a5:69:26:cf:6b:b8:27:62:c3:f4:c9:7a:92: - 23:ed:13:67:82:ae:45:2e:45:e5:7e:72:3f:85:9d: - 94:62:10:e6:3c:91:a1:ad:77:00:e0:15:ec:f3:84: - 80:72:7a:8e:6e:60:97:c7:24:59:10:34:83:5b:e1: - a5:a4:69:b6:57:35:1c:78:59:c6:d3:2f:3a:73:67: - ee:94:ca:04:13:05:62:06:70:23:b3:f4:7c:ee:45: - d9:64:0b:5b:49:aa:a4:43:ce:26:c4:44:12:6c:b8: - dd:79 - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - a2:37:b2:3f:69:fb:d7:86:79:54:49:31:95:33:2b:f3:d1:09: - 14:49:62:60:86:a5:b0:11:e2:50:c2:1d:06:57:3e:2d:e8:33: - 64:be:9b:aa:ad:5f:1b:4d:d4:99:95:a2:8b:9a:c9:62:72:b5: - 69:ea:d9:58:ab:35:ed:15:a2:43:d6:b6:bc:07:79:65:64:73: - 7d:d7:79:ca:7b:d5:5a:51:c6:e1:53:04:96:8d:38:cf:a3:17: - ac:39:71:6b:01:c3:8b:53:3c:63:e9:ee:79:c0:e4:be:92:32: - 64:7a:b3:1f:97:94:62:bd:ea:b2:20:15:95:fb:97:f2:78:2f: - 63:36:40:38:e3:46:0f:1d:dd:ac:95:ca:e7:4b:90:7b:b1:4b: - a9:d4:c5:eb:9a:da:aa:d5:a3:94:14:46:8d:2d:1f:f3:3a:d6: - 93:3a:f6:3e:79:fc:e8:e6:b0:75:ed:ee:3d:c9:70:c7:5d:aa: - 81:4b:46:25:1c:c7:6c:15:e3:95:4e:0f:aa:32:37:94:0a:17: - 24:92:13:84:58:d2:63:6f:2b:f7:e6:5b:62:0b:13:17:b0:0d: - 52:4c:fe:fe:6f:5c:e2:91:6e:1d:fd:a4:62:d7:68:fa:8e:7a: - 4f:d2:08:da:93:dc:f0:92:11:7a:d0:dc:72:93:0c:73:93:62: - 85:68:d0:f4 - -Digital Signature Trust Co. Global CA 3 -======================================= -MD5 Fingerprint: 93:C2:8E:11:7B:D4:F3:03:19:BD:28:75:13:4A:45:4A -PEM Data: ------BEGIN CERTIFICATE----- -MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJV -UzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQL -EwhEU1RDQSBFMjAeFw05ODEyMDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJ -BgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4x -ETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQC/ -k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGODVvso -LeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3o -TQPMx7JSxhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCG -SAGG+EIBAQQEAwIABzBoBgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMx -JDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMI -RFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkxOTE3 -MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFB6C -TShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5 -WzAMBgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqG -SIb3DQEBBQUAA4GBAEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHR -xdf0CiUPPXiBng+xZ8SQTGPdXqfiup/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVL -B3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1mPnHfxsb1gYgAlihw6ID ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 913232846 (0x366ed3ce) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=Digital Signature Trust Co., OU=DSTCA E2 - Validity - Not Before: Dec 9 19:17:26 1998 GMT - Not After : Dec 9 19:47:26 2018 GMT - Subject: C=US, O=Digital Signature Trust Co., OU=DSTCA E2 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:bf:93:8f:17:92:ef:33:13:18:eb:10:7f:4e:16: - bf:ff:06:8f:2a:85:bc:5e:f9:24:a6:24:88:b6:03: - b7:c1:c3:5f:03:5b:d1:6f:ae:7e:42:ea:66:23:b8: - 63:83:56:fb:28:2d:e1:38:8b:b4:ee:a8:01:e1:ce: - 1c:b6:88:2a:22:46:85:fb:9f:a7:70:a9:47:14:3f: - ce:de:65:f0:a8:71:f7:4f:26:6c:8c:bc:c6:b5:ef: - de:49:27:ff:48:2a:7d:e8:4d:03:cc:c7:b2:52:c6: - 17:31:13:3b:b5:4d:db:c8:c4:f6:c3:0f:24:2a:da: - 0c:9d:e7:91:5b:80:cd:94:9d - Exponent: 3 (0x3) - X509v3 extensions: - Netscape Cert Type: - SSL CA, S/MIME CA, Object Signing CA - X509v3 CRL Distribution Points: - DirName:/C=US/O=Digital Signature Trust Co./OU=DSTCA E2/CN=CRL1 - - X509v3 Private Key Usage Period: - Not Before: Dec 9 19:17:26 1998 GMT, Not After: Dec 9 19:17:26 2018 GMT - X509v3 Key Usage: - Certificate Sign, CRL Sign - X509v3 Authority Key Identifier: - keyid:1E:82:4D:28:65:80:3C:C9:41:6E:AC:35:2E:5A:CB:DE:EE:F8:39:5B - - X509v3 Subject Key Identifier: - 1E:82:4D:28:65:80:3C:C9:41:6E:AC:35:2E:5A:CB:DE:EE:F8:39:5B - X509v3 Basic Constraints: - CA:TRUE - 1.2.840.113533.7.65.0: - 0 -..V4.0.... - Signature Algorithm: sha1WithRSAEncryption - 47:8d:83:ad:62:f2:db:b0:9e:45:22:05:b9:a2:d6:03:0e:38: - 72:e7:9e:fc:7b:e6:93:b6:9a:a5:a2:94:c8:34:1d:91:d1:c5: - d7:f4:0a:25:0f:3d:78:81:9e:0f:b1:67:c4:90:4c:63:dd:5e: - a7:e2:ba:9f:f5:f7:4d:a5:31:7b:9c:29:2d:4c:fe:64:3e:ec: - b6:53:fe:ea:9b:ed:82:db:74:75:4b:07:79:6e:1e:d8:19:83: - 73:de:f5:3e:d0:b5:de:e7:4b:68:7d:43:2e:2a:20:e1:7e:a0: - 78:44:9e:08:f5:98:f9:c7:7f:1b:1b:d6:06:20:02:58:a1:c3: - a2:03 - -Digital Signature Trust Co. Global CA 4 -======================================= -MD5 Fingerprint: CD:3B:3D:62:5B:09:B8:09:36:87:9E:12:2F:71:64:BA -PEM Data: ------BEGIN CERTIFICATE----- -MIID2DCCAsACEQDQHkCLAAB3bQAAAAEAAAAEMA0GCSqGSIb3DQEBBQUAMIGpMQsw -CQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp -dHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UE -CxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBSb290Q0EgWDIxITAfBgkqhkiG9w0B -CQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODExMzAyMjQ2MTZaFw0wODExMjcy -MjQ2MTZaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMO -U2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0 -IENvLjERMA8GA1UECxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBSb290Q0EgWDIx -ITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBANx18IzAdZaawGIfJvfE4Zrq4FZzW5nNAUSoCLbV -p9oaBBg5kkp4o4HC9Xd6ULRw/5qrxsfKboNPQpj7Jgva3G3WqZlVUmfpKAOS3OWw -BZoPFflrWXJW8vo5/Kpo7g8fEIMv/J36F5bdguPmRX3AS4BEH+0s4IT9kVySVGkl -5WJp3OXuAFK9MwutdQKFp2RQLcUZGTDAJtvJ0/0uma1ZtQtN1EGuhUhDWdy3qOKi -3sOP17ihYqZoUFLkzzGnlIXan0YyF1bl8utmPRL/Q9uY73fPy4GNNLHGUEom0eQ+ -QVCvbK4iNC7Va26Dunm4dmVI2gkpZGMiuftHdoWMhkTLCdsCAwEAATANBgkqhkiG -9w0BAQUFAAOCAQEAtTYOXeFhKFoRZcA/gwN5Tb4opgsHAlKFzfiR0BBstWogWxyQ -2TA8xkieil5k+aFxd+8EJx8H6+Qm93N0yUQYGmbT4EOvkTvRyyzYdFQ6HE3K1GjN -I3wdEJ5F6fYAbqbNGf9PLCmPV03Ed5K+4EwJ+11EhmYhqLkyolbV6YyDfFk/xPEL -553snr2cGA4+wjl5KLcDDQjLxufZATdQEOzMYRZA1K8xdHv8PzGn0EdzMzkbzE5q -10mDEQb+64JYMzJM8FasHpwvVpp7wUocpf1VNs78lk30sPDst2yC7S8xmUJMqbIN -uBVd8d+6ybVK1GSYsyapMMj9puyrliGtf8J4tg== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - d0:1e:40:8b:00:00:77:6d:00:00:00:01:00:00:00:04 - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=DSTCA X2, CN=DST RootCA X2/Email=ca@digsigtrust.com - Validity - Not Before: Nov 30 22:46:16 1998 GMT - Not After : Nov 27 22:46:16 2008 GMT - Subject: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=DSTCA X2, CN=DST RootCA X2/Email=ca@digsigtrust.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:dc:75:f0:8c:c0:75:96:9a:c0:62:1f:26:f7:c4: - e1:9a:ea:e0:56:73:5b:99:cd:01:44:a8:08:b6:d5: - a7:da:1a:04:18:39:92:4a:78:a3:81:c2:f5:77:7a: - 50:b4:70:ff:9a:ab:c6:c7:ca:6e:83:4f:42:98:fb: - 26:0b:da:dc:6d:d6:a9:99:55:52:67:e9:28:03:92: - dc:e5:b0:05:9a:0f:15:f9:6b:59:72:56:f2:fa:39: - fc:aa:68:ee:0f:1f:10:83:2f:fc:9d:fa:17:96:dd: - 82:e3:e6:45:7d:c0:4b:80:44:1f:ed:2c:e0:84:fd: - 91:5c:92:54:69:25:e5:62:69:dc:e5:ee:00:52:bd: - 33:0b:ad:75:02:85:a7:64:50:2d:c5:19:19:30:c0: - 26:db:c9:d3:fd:2e:99:ad:59:b5:0b:4d:d4:41:ae: - 85:48:43:59:dc:b7:a8:e2:a2:de:c3:8f:d7:b8:a1: - 62:a6:68:50:52:e4:cf:31:a7:94:85:da:9f:46:32: - 17:56:e5:f2:eb:66:3d:12:ff:43:db:98:ef:77:cf: - cb:81:8d:34:b1:c6:50:4a:26:d1:e4:3e:41:50:af: - 6c:ae:22:34:2e:d5:6b:6e:83:ba:79:b8:76:65:48: - da:09:29:64:63:22:b9:fb:47:76:85:8c:86:44:cb: - 09:db - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - b5:36:0e:5d:e1:61:28:5a:11:65:c0:3f:83:03:79:4d:be:28: - a6:0b:07:02:52:85:cd:f8:91:d0:10:6c:b5:6a:20:5b:1c:90: - d9:30:3c:c6:48:9e:8a:5e:64:f9:a1:71:77:ef:04:27:1f:07: - eb:e4:26:f7:73:74:c9:44:18:1a:66:d3:e0:43:af:91:3b:d1: - cb:2c:d8:74:54:3a:1c:4d:ca:d4:68:cd:23:7c:1d:10:9e:45: - e9:f6:00:6e:a6:cd:19:ff:4f:2c:29:8f:57:4d:c4:77:92:be: - e0:4c:09:fb:5d:44:86:66:21:a8:b9:32:a2:56:d5:e9:8c:83: - 7c:59:3f:c4:f1:0b:e7:9d:ec:9e:bd:9c:18:0e:3e:c2:39:79: - 28:b7:03:0d:08:cb:c6:e7:d9:01:37:50:10:ec:cc:61:16:40: - d4:af:31:74:7b:fc:3f:31:a7:d0:47:73:33:39:1b:cc:4e:6a: - d7:49:83:11:06:fe:eb:82:58:33:32:4c:f0:56:ac:1e:9c:2f: - 56:9a:7b:c1:4a:1c:a5:fd:55:36:ce:fc:96:4d:f4:b0:f0:ec: - b7:6c:82:ed:2f:31:99:42:4c:a9:b2:0d:b8:15:5d:f1:df:ba: - c9:b5:4a:d4:64:98:b3:26:a9:30:c8:fd:a6:ec:ab:96:21:ad: - 7f:c2:78:b6 - -Entrust Worldwide by DST -======================== -MD5 Fingerprint: B4:65:22:0A:7C:AD:DF:41:B7:D5:44:D5:AD:FA:9A:75 -PEM Data: ------BEGIN CERTIFICATE----- -MIIDRzCCArCgAwIBAgIENm3FGDANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJV -UzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRswGQYDVQQL -ExJEU1QtRW50cnVzdCBHVEkgQ0EwHhcNOTgxMjA5MDAwMjI0WhcNMTgxMjA5MDAz -MjI0WjBQMQswCQYDVQQGEwJVUzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUg -VHJ1c3QgQ28uMRswGQYDVQQLExJEU1QtRW50cnVzdCBHVEkgQ0EwgZ0wDQYJKoZI -hvcNAQEBBQADgYsAMIGHAoGBALYd90uNDxPjEvUJ/gYyDq9MQfV91Ec9KgrfgwXe -3n3mAxb2UTrLRxpKrX7E/R20vnSKeN0Lg460hBPE+/htKa6h4Q8PQ+O1XmBp+oOU -/Hnm3Hbt0UQrjv0Su/4XdxcMie2n71F9xO04wzujevviTaBgtfL9E2XTxuw/vjWc -PSLvAgEDo4IBLjCCASowEQYJYIZIAYb4QgEBBAQDAgAHMHIGA1UdHwRrMGkwZ6Bl -oGOkYTBfMQswCQYDVQQGEwJVUzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUg -VHJ1c3QgQ28uMRswGQYDVQQLExJEU1QtRW50cnVzdCBHVEkgQ0ExDTALBgNVBAMT -BENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkwMDAyMjRagQ8yMDE4MTIwOTAwMDIy -NFowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFJOaRMrQeFOAKUkE38evMz+ZdV+u -MB0GA1UdDgQWBBSTmkTK0HhTgClJBN/HrzM/mXVfrjAMBgNVHRMEBTADAQH/MBkG -CSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GBAGSJzAOn -3AryWCDn/RegKHLNh7DNmLUkR2MzMRAQsu+KV3KuTAPgZ5+sYEOEIsGpo+Wxp94J -1M8NeEYjW49Je/4TIpeU6nJI4SwgeJbpZkUZywllY2E/0UmYsXYQVdVjSmZLpAdr -3nt/ueaTWxoCW4AO3Y0Y1Iqjwmjxo+AY0U5M ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 913163544 (0x366dc518) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=Digital Signature Trust Co., OU=DST-Entrust GTI CA - Validity - Not Before: Dec 9 00:02:24 1998 GMT - Not After : Dec 9 00:32:24 2018 GMT - Subject: C=US, O=Digital Signature Trust Co., OU=DST-Entrust GTI CA - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:b6:1d:f7:4b:8d:0f:13:e3:12:f5:09:fe:06:32: - 0e:af:4c:41:f5:7d:d4:47:3d:2a:0a:df:83:05:de: - de:7d:e6:03:16:f6:51:3a:cb:47:1a:4a:ad:7e:c4: - fd:1d:b4:be:74:8a:78:dd:0b:83:8e:b4:84:13:c4: - fb:f8:6d:29:ae:a1:e1:0f:0f:43:e3:b5:5e:60:69: - fa:83:94:fc:79:e6:dc:76:ed:d1:44:2b:8e:fd:12: - bb:fe:17:77:17:0c:89:ed:a7:ef:51:7d:c4:ed:38: - c3:3b:a3:7a:fb:e2:4d:a0:60:b5:f2:fd:13:65:d3: - c6:ec:3f:be:35:9c:3d:22:ef - Exponent: 3 (0x3) - X509v3 extensions: - Netscape Cert Type: - SSL CA, S/MIME CA, Object Signing CA - X509v3 CRL Distribution Points: - DirName:/C=US/O=Digital Signature Trust Co./OU=DST-Entrust GTI CA/CN=CRL1 - - X509v3 Private Key Usage Period: - Not Before: Dec 9 00:02:24 1998 GMT, Not After: Dec 9 00:02:24 2018 GMT - X509v3 Key Usage: - Certificate Sign, CRL Sign - X509v3 Authority Key Identifier: - keyid:93:9A:44:CA:D0:78:53:80:29:49:04:DF:C7:AF:33:3F:99:75:5F:AE - - X509v3 Subject Key Identifier: - 93:9A:44:CA:D0:78:53:80:29:49:04:DF:C7:AF:33:3F:99:75:5F:AE - X509v3 Basic Constraints: - CA:TRUE - 1.2.840.113533.7.65.0: - 0 -..V4.0.... - Signature Algorithm: sha1WithRSAEncryption - 64:89:cc:03:a7:dc:0a:f2:58:20:e7:fd:17:a0:28:72:cd:87: - b0:cd:98:b5:24:47:63:33:31:10:10:b2:ef:8a:57:72:ae:4c: - 03:e0:67:9f:ac:60:43:84:22:c1:a9:a3:e5:b1:a7:de:09:d4: - cf:0d:78:46:23:5b:8f:49:7b:fe:13:22:97:94:ea:72:48:e1: - 2c:20:78:96:e9:66:45:19:cb:09:65:63:61:3f:d1:49:98:b1: - 76:10:55:d5:63:4a:66:4b:a4:07:6b:de:7b:7f:b9:e6:93:5b: - 1a:02:5b:80:0e:dd:8d:18:d4:8a:a3:c2:68:f1:a3:e0:18:d1: - 4e:4c - -Entrust.net Premium 2048 Secure Server CA -========================================= -MD5 Fingerprint: BA:21:EA:20:D6:DD:DB:8F:C1:57:8B:40:AD:A1:FC:FC -PEM Data: ------BEGIN CERTIFICATE----- -MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy -MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq -K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe -sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX -MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT -XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ -HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH -4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA -vtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G -CSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA -WUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo -oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ -h7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18 -f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN -B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy -vUxFnmG6v4SBkgPR0ml8xQ== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 946059622 (0x3863b966) - Signature Algorithm: sha1WithRSAEncryption - Issuer: O=Entrust.net, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Certification Authority (2048) - Validity - Not Before: Dec 24 17:50:51 1999 GMT - Not After : Dec 24 18:20:51 2019 GMT - Subject: O=Entrust.net, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Certification Authority (2048) - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:ad:4d:4b:a9:12:86:b2:ea:a3:20:07:15:16:64: - 2a:2b:4b:d1:bf:0b:4a:4d:8e:ed:80:76:a5:67:b7: - 78:40:c0:73:42:c8:68:c0:db:53:2b:dd:5e:b8:76: - 98:35:93:8b:1a:9d:7c:13:3a:0e:1f:5b:b7:1e:cf: - e5:24:14:1e:b1:81:a9:8d:7d:b8:cc:6b:4b:03:f1: - 02:0c:dc:ab:a5:40:24:00:7f:74:94:a1:9d:08:29: - b3:88:0b:f5:87:77:9d:55:cd:e4:c3:7e:d7:6a:64: - ab:85:14:86:95:5b:97:32:50:6f:3d:c8:ba:66:0c: - e3:fc:bd:b8:49:c1:76:89:49:19:fd:c0:a8:bd:89: - a3:67:2f:c6:9f:bc:71:19:60:b8:2d:e9:2c:c9:90: - 76:66:7b:94:e2:af:78:d6:65:53:5d:3c:d6:9c:b2: - cf:29:03:f9:2f:a4:50:b2:d4:48:ce:05:32:55:8a: - fd:b2:64:4c:0e:e4:98:07:75:db:7f:df:b9:08:55: - 60:85:30:29:f9:7b:48:a4:69:86:e3:35:3f:1e:86: - 5d:7a:7a:15:bd:ef:00:8e:15:22:54:17:00:90:26: - 93:bc:0e:49:68:91:bf:f8:47:d3:9d:95:42:c1:0e: - 4d:df:6f:26:cf:c3:18:21:62:66:43:70:d6:d5:c0: - 07:e1 - Exponent: 65537 (0x10001) - X509v3 extensions: - Netscape Cert Type: - SSL CA, S/MIME CA, Object Signing CA - X509v3 Authority Key Identifier: - keyid:55:E4:81:D1:11:80:BE:D8:89:B9:08:A3:31:F9:A1:24:09:16:B9:70 - - X509v3 Subject Key Identifier: - 55:E4:81:D1:11:80:BE:D8:89:B9:08:A3:31:F9:A1:24:09:16:B9:70 - 1.2.840.113533.7.65.0: - 0...V5.0:4.0.... - Signature Algorithm: sha1WithRSAEncryption - 59:47:ac:21:84:8a:17:c9:9c:89:53:1e:ba:80:85:1a:c6:3c: - 4e:3e:b1:9c:b6:7c:c6:92:5d:18:64:02:e3:d3:06:08:11:61: - 7c:63:e3:2b:9d:31:03:70:76:d2:a3:28:a0:f4:bb:9a:63:73: - ed:6d:e5:2a:db:ed:14:a9:2b:c6:36:11:d0:2b:eb:07:8b:a5: - da:9e:5c:19:9d:56:12:f5:54:29:c8:05:ed:b2:12:2a:8d:f4: - 03:1b:ff:e7:92:10:87:b0:3a:b5:c3:9d:05:37:12:a3:c7:f4: - 15:b9:d5:a4:39:16:9b:53:3a:23:91:f1:a8:82:a2:6a:88:68: - c1:79:02:22:bc:aa:a6:d6:ae:df:b0:14:5f:b8:87:d0:dd:7c: - 7f:7b:ff:af:1c:cf:e6:db:07:ad:5e:db:85:9d:d0:2b:0d:33: - db:04:d1:e6:49:40:13:2b:76:fb:3e:e9:9c:89:0f:15:ce:18: - b0:85:78:21:4f:6b:4f:0e:fa:36:67:cd:07:f2:ff:08:d0:e2: - de:d9:bf:2a:af:b8:87:86:21:3c:04:ca:b7:94:68:7f:cf:3c: - e9:98:d7:38:ff:ec:c0:d9:50:f0:2e:4b:58:ae:46:6f:d0:2e: - c3:60:da:72:55:72:bd:4c:45:9e:61:ba:bf:84:81:92:03:d1: - d2:69:7c:c5 - -Entrust.net Secure Personal CA -============================== -MD5 Fingerprint: 0C:41:2F:13:5B:A0:54:F5:96:66:2D:7E:CD:0E:03:F4 -PEM Data: ------BEGIN CERTIFICATE----- -MIIE7TCCBFagAwIBAgIEOAOR7jANBgkqhkiG9w0BAQQFADCByTELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUgwRgYDVQQLFD93d3cuZW50cnVzdC5u -ZXQvQ2xpZW50X0NBX0luZm8vQ1BTIGluY29ycC4gYnkgcmVmLiBsaW1pdHMgbGlh -Yi4xJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV -BAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw05OTEwMTIxOTI0MzBaFw0xOTEwMTIxOTU0MzBaMIHJMQswCQYDVQQGEwJVUzEU -MBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9D -bGllbnRfQ0FfSW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjEl -MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMq -RW50cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0G -CSqGSIb3DQEBAQUAA4GLADCBhwKBgQDIOpleMRffrCdvkHvkGf9FozTC28GoT/Bo -6oT9n3V5z8GKUZSvx1cDR2SerYIbWtp/N3hHuzeYEpbOxhN979IMMFGpOZ5V+Pux -5zDeg7K6PvHViTs7hbqqdCz+PzFur5GVbgbUB01LLFZHGARS2g4Qk79jkJvh34zm -AqTmT173iwIBA6OCAeAwggHcMBEGCWCGSAGG+EIBAQQEAwIABzCCASIGA1UdHwSC -ARkwggEVMIHkoIHhoIHepIHbMIHYMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50 -cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0FfSW5m -by9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UECxMcKGMp -IDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQg -Q2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCyg -KqAohiZodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9DbGllbnQxLmNybDArBgNV -HRAEJDAigA8xOTk5MTAxMjE5MjQzMFqBDzIwMTkxMDEyMTkyNDMwWjALBgNVHQ8E -BAMCAQYwHwYDVR0jBBgwFoAUxPucKXuXzUyW/O5bs8qZdIuV6kwwHQYDVR0OBBYE -FMT7nCl7l81MlvzuW7PKmXSLlepMMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA -BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEEBQADgYEAP66K8ddmAwWePvrqHEa7 -pFuPeJoSSJn59DXeDDYHAmsQOokUgZwxpnyyQbJq5wcBoUv5nyU7lsqZwz6hURzz -wy5E97BnRqqS5TvaHBkUODDV4qIxJS7x7EU47fgGWANzYrAQMY9Av2TgXD7FTx/a -EkP/TOYGJqibGapEPHayXOw= ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 939758062 (0x380391ee) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=US, O=Entrust.net, OU=www.entrust.net/Client_CA_Info/CPS incorp. by ref. limits liab., OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Client Certification Authority - Validity - Not Before: Oct 12 19:24:30 1999 GMT - Not After : Oct 12 19:54:30 2019 GMT - Subject: C=US, O=Entrust.net, OU=www.entrust.net/Client_CA_Info/CPS incorp. by ref. limits liab., OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Client Certification Authority - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:c8:3a:99:5e:31:17:df:ac:27:6f:90:7b:e4:19: - ff:45:a3:34:c2:db:c1:a8:4f:f0:68:ea:84:fd:9f: - 75:79:cf:c1:8a:51:94:af:c7:57:03:47:64:9e:ad: - 82:1b:5a:da:7f:37:78:47:bb:37:98:12:96:ce:c6: - 13:7d:ef:d2:0c:30:51:a9:39:9e:55:f8:fb:b1:e7: - 30:de:83:b2:ba:3e:f1:d5:89:3b:3b:85:ba:aa:74: - 2c:fe:3f:31:6e:af:91:95:6e:06:d4:07:4d:4b:2c: - 56:47:18:04:52:da:0e:10:93:bf:63:90:9b:e1:df: - 8c:e6:02:a4:e6:4f:5e:f7:8b - Exponent: 3 (0x3) - X509v3 extensions: - Netscape Cert Type: - SSL CA, S/MIME CA, Object Signing CA - X509v3 CRL Distribution Points: - DirName:/C=US/O=Entrust.net/OU=www.entrust.net/Client_CA_Info/CPS incorp. by ref. limits liab./OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Client Certification Authority/CN=CRL1 - URI:http://www.entrust.net/CRL/Client1.crl - - X509v3 Private Key Usage Period: - Not Before: Oct 12 19:24:30 1999 GMT, Not After: Oct 12 19:24:30 2019 GMT - X509v3 Key Usage: - Certificate Sign, CRL Sign - X509v3 Authority Key Identifier: - keyid:C4:FB:9C:29:7B:97:CD:4C:96:FC:EE:5B:B3:CA:99:74:8B:95:EA:4C - - X509v3 Subject Key Identifier: - C4:FB:9C:29:7B:97:CD:4C:96:FC:EE:5B:B3:CA:99:74:8B:95:EA:4C - X509v3 Basic Constraints: - CA:TRUE - 1.2.840.113533.7.65.0: - 0 -..V4.0.... - Signature Algorithm: md5WithRSAEncryption - 3f:ae:8a:f1:d7:66:03:05:9e:3e:fa:ea:1c:46:bb:a4:5b:8f: - 78:9a:12:48:99:f9:f4:35:de:0c:36:07:02:6b:10:3a:89:14: - 81:9c:31:a6:7c:b2:41:b2:6a:e7:07:01:a1:4b:f9:9f:25:3b: - 96:ca:99:c3:3e:a1:51:1c:f3:c3:2e:44:f7:b0:67:46:aa:92: - e5:3b:da:1c:19:14:38:30:d5:e2:a2:31:25:2e:f1:ec:45:38: - ed:f8:06:58:03:73:62:b0:10:31:8f:40:bf:64:e0:5c:3e:c5: - 4f:1f:da:12:43:ff:4c:e6:06:26:a8:9b:19:aa:44:3c:76:b2: - 5c:ec - -Entrust.net Secure Server CA -============================ -MD5 Fingerprint: DF:F2:80:73:CC:F1:E6:61:73:FC:F5:42:E9:C5:7C:EE -PEM Data: ------BEGIN CERTIFICATE----- -MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u -ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc -KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u -ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 -MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE -ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j -b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF -bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg -U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA -A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ -I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 -wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC -AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb -oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 -BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu -dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 -MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi -E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa -MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI -hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN -95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd -2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 927650371 (0x374ad243) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority - Validity - Not Before: May 25 16:09:40 1999 GMT - Not After : May 25 16:39:40 2019 GMT - Subject: C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:cd:28:83:34:54:1b:89:f3:0f:af:37:91:31:ff: - af:31:60:c9:a8:e8:b2:10:68:ed:9f:e7:93:36:f1: - 0a:64:bb:47:f5:04:17:3f:23:47:4d:c5:27:19:81: - 26:0c:54:72:0d:88:2d:d9:1f:9a:12:9f:bc:b3:71: - d3:80:19:3f:47:66:7b:8c:35:28:d2:b9:0a:df:24: - da:9c:d6:50:79:81:7a:5a:d3:37:f7:c2:4a:d8:29: - 92:26:64:d1:e4:98:6c:3a:00:8a:f5:34:9b:65:f8: - ed:e3:10:ff:fd:b8:49:58:dc:a0:de:82:39:6b:81: - b1:16:19:61:b9:54:b6:e6:43 - Exponent: 3 (0x3) - X509v3 extensions: - Netscape Cert Type: - SSL CA, S/MIME CA, Object Signing CA - X509v3 CRL Distribution Points: - DirName:/C=US/O=Entrust.net/OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Secure Server Certification Authority/CN=CRL1 - URI:http://www.entrust.net/CRL/net1.crl - - X509v3 Private Key Usage Period: - Not Before: May 25 16:09:40 1999 GMT, Not After: May 25 16:09:40 2019 GMT - X509v3 Key Usage: - Certificate Sign, CRL Sign - X509v3 Authority Key Identifier: - keyid:F0:17:62:13:55:3D:B3:FF:0A:00:6B:FB:50:84:97:F3:ED:62:D0:1A - - X509v3 Subject Key Identifier: - F0:17:62:13:55:3D:B3:FF:0A:00:6B:FB:50:84:97:F3:ED:62:D0:1A - X509v3 Basic Constraints: - CA:TRUE - 1.2.840.113533.7.65.0: - 0 -..V4.0.... - Signature Algorithm: sha1WithRSAEncryption - 90:dc:30:02:fa:64:74:c2:a7:0a:a5:7c:21:8d:34:17:a8:fb: - 47:0e:ff:25:7c:8d:13:0a:fb:e4:98:b5:ef:8c:f8:c5:10:0d: - f7:92:be:f1:c3:d5:d5:95:6a:04:bb:2c:ce:26:36:65:c8:31: - c6:e7:ee:3f:e3:57:75:84:7a:11:ef:46:4f:18:f4:d3:98:bb: - a8:87:32:ba:72:f6:3c:e2:3d:9f:d7:1d:d9:c3:60:43:8c:58: - 0e:22:96:2f:62:a3:2c:1f:ba:ad:05:ef:ab:32:78:87:a0:54: - 73:19:b5:5c:05:f9:52:3e:6d:2d:45:0b:f7:0a:93:ea:ed:06: - f9:b2 - -Equifax Premium CA -================== -MD5 Fingerprint: A9:E9:A8:9D:0E:73:E3:B1:2F:37:0D:E8:48:3F:86:ED -PEM Data: ------BEGIN CERTIFICATE----- -MIIDIzCCAoygAwIBAgIENeHvHjANBgkqhkiG9w0BAQUFADBPMQswCQYDVQQGEwJV -UzEQMA4GA1UEChMHRXF1aWZheDEuMCwGA1UECxMlRXF1aWZheCBQcmVtaXVtIENl -cnRpZmljYXRlIEF1dGhvcml0eTAeFw05ODA4MjQyMjU0MjNaFw0xODA4MjQyMjU0 -MjNaME8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFcXVpZmF4MS4wLAYDVQQLEyVF -cXVpZmF4IFByZW1pdW0gQ2VydGlmaWNhdGUgQXV0aG9yaXR5MIGfMA0GCSqGSIb3 -DQEBAQUAA4GNADCBiQKBgQDOoQaOBswIC8GGqN4g1Q0O0Q3En+pq2bPCMkdAb4qI -pAm9OCwd5svmpPM269rrvPxkswf2Lbyqzp8ZSGhK/PWiRX4JEPWPs0lcIwY56hOL -uAvNkR12X9k3oUT7X5DyZ7PNGJlDH3YSawLylYM4Q8L2YjTKyXhdX9LYupr/vhBg -WwIDAQABo4IBCjCCAQYwcQYDVR0fBGowaDBmoGSgYqRgMF4xCzAJBgNVBAYTAlVT -MRAwDgYDVQQKEwdFcXVpZmF4MS4wLAYDVQQLEyVFcXVpZmF4IFByZW1pdW0gQ2Vy -dGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIw -MTgwODI0MjI1NDIzWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUFe6yKFmrbuX4 -z4uB9CThrj91G5gwHQYDVR0OBBYEFBXusihZq27l+M+LgfQk4a4/dRuYMAwGA1Ud -EwQFMAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEB -BQUAA4GBAL0LnCepA9so3JipS9DRjqeoGlqR4Jzx9xh8LiKeNh/JqLXNRkpu+jUH -G4YI65/iqPmdQS06rlxctl80BOv8KmCw+3TkhellOJbuFcfGd2MSvYpoH6tsfdrK -XBPO6snrCVzFc+cSAdXZUwee4A+W8Iu0u0VIn4bFGVWgy5bFA/xI ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 903999262 (0x35e1ef1e) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=Equifax, OU=Equifax Premium Certificate Authority - Validity - Not Before: Aug 24 22:54:23 1998 GMT - Not After : Aug 24 22:54:23 2018 GMT - Subject: C=US, O=Equifax, OU=Equifax Premium Certificate Authority - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:ce:a1:06:8e:06:cc:08:0b:c1:86:a8:de:20:d5: - 0d:0e:d1:0d:c4:9f:ea:6a:d9:b3:c2:32:47:40:6f: - 8a:88:a4:09:bd:38:2c:1d:e6:cb:e6:a4:f3:36:eb: - da:eb:bc:fc:64:b3:07:f6:2d:bc:aa:ce:9f:19:48: - 68:4a:fc:f5:a2:45:7e:09:10:f5:8f:b3:49:5c:23: - 06:39:ea:13:8b:b8:0b:cd:91:1d:76:5f:d9:37:a1: - 44:fb:5f:90:f2:67:b3:cd:18:99:43:1f:76:12:6b: - 02:f2:95:83:38:43:c2:f6:62:34:ca:c9:78:5d:5f: - d2:d8:ba:9a:ff:be:10:60:5b - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 CRL Distribution Points: - DirName:/C=US/O=Equifax/OU=Equifax Premium Certificate Authority/CN=CRL1 - - X509v3 Private Key Usage Period: - Not After: Aug 24 22:54:23 2018 GMT - X509v3 Key Usage: - Certificate Sign, CRL Sign - X509v3 Authority Key Identifier: - keyid:15:EE:B2:28:59:AB:6E:E5:F8:CF:8B:81:F4:24:E1:AE:3F:75:1B:98 - - X509v3 Subject Key Identifier: - 15:EE:B2:28:59:AB:6E:E5:F8:CF:8B:81:F4:24:E1:AE:3F:75:1B:98 - X509v3 Basic Constraints: - CA:TRUE - 1.2.840.113533.7.65.0: - 0...V3.0c.... - Signature Algorithm: sha1WithRSAEncryption - bd:0b:9c:27:a9:03:db:28:dc:98:a9:4b:d0:d1:8e:a7:a8:1a: - 5a:91:e0:9c:f1:f7:18:7c:2e:22:9e:36:1f:c9:a8:b5:cd:46: - 4a:6e:fa:35:07:1b:86:08:eb:9f:e2:a8:f9:9d:41:2d:3a:ae: - 5c:5c:b6:5f:34:04:eb:fc:2a:60:b0:fb:74:e4:85:e9:65:38: - 96:ee:15:c7:c6:77:63:12:bd:8a:68:1f:ab:6c:7d:da:ca:5c: - 13:ce:ea:c9:eb:09:5c:c5:73:e7:12:01:d5:d9:53:07:9e:e0: - 0f:96:f0:8b:b4:bb:45:48:9f:86:c5:19:55:a0:cb:96:c5:03: - fc:48 - -Equifax Secure CA -================= -MD5 Fingerprint: 67:CB:9D:C0:13:24:8A:82:9B:B2:17:1E:D1:1B:EC:D4 -PEM Data: ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy -dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 -MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx -dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f -BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A -cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ -MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm -aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw -ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj -IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y -7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh -1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 903804111 (0x35def4cf) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=Equifax, OU=Equifax Secure Certificate Authority - Validity - Not Before: Aug 22 16:41:51 1998 GMT - Not After : Aug 22 16:41:51 2018 GMT - Subject: C=US, O=Equifax, OU=Equifax Secure Certificate Authority - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:c1:5d:b1:58:67:08:62:ee:a0:9a:2d:1f:08:6d: - 91:14:68:98:0a:1e:fe:da:04:6f:13:84:62:21:c3: - d1:7c:ce:9f:05:e0:b8:01:f0:4e:34:ec:e2:8a:95: - 04:64:ac:f1:6b:53:5f:05:b3:cb:67:80:bf:42:02: - 8e:fe:dd:01:09:ec:e1:00:14:4f:fc:fb:f0:0c:dd: - 43:ba:5b:2b:e1:1f:80:70:99:15:57:93:16:f1:0f: - 97:6a:b7:c2:68:23:1c:cc:4d:59:30:ac:51:1e:3b: - af:2b:d6:ee:63:45:7b:c5:d9:5f:50:d2:e3:50:0f: - 3a:88:e7:bf:14:fd:e0:c7:b9 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 CRL Distribution Points: - DirName:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority/CN=CRL1 - - X509v3 Private Key Usage Period: - Not After: Aug 22 16:41:51 2018 GMT - X509v3 Key Usage: - Certificate Sign, CRL Sign - X509v3 Authority Key Identifier: - keyid:48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:98:90:9F:D4 - - X509v3 Subject Key Identifier: - 48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:98:90:9F:D4 - X509v3 Basic Constraints: - CA:TRUE - 1.2.840.113533.7.65.0: - 0...V3.0c.... - Signature Algorithm: sha1WithRSAEncryption - 58:ce:29:ea:fc:f7:de:b5:ce:02:b9:17:b5:85:d1:b9:e3:e0: - 95:cc:25:31:0d:00:a6:92:6e:7f:b6:92:63:9e:50:95:d1:9a: - 6f:e4:11:de:63:85:6e:98:ee:a8:ff:5a:c8:d3:55:b2:66:71: - 57:de:c0:21:eb:3d:2a:a7:23:49:01:04:86:42:7b:fc:ee:7f: - a2:16:52:b5:67:67:d3:40:db:3b:26:58:b2:28:77:3d:ae:14: - 77:61:d6:fa:2a:66:27:a0:0d:fa:a7:73:5c:ea:70:f1:94:21: - 65:44:5f:fa:fc:ef:29:68:a9:a2:87:79:ef:79:ef:4f:ac:07: - 77:38 - -GTE CyberTrust Global Root -========================== -MD5 Fingerprint: CA:3D:D3:68:F1:03:5C:D0:32:FA:B8:2B:59:E8:5A:DB -PEM Data: ------BEGIN CERTIFICATE----- -MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv -bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv -b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds -b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH -iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS -r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 -04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r -GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 -3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P -lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: 421 (0x1a5) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Global Root - Validity - Not Before: Aug 13 00:29:00 1998 GMT - Not After : Aug 13 23:59:00 2018 GMT - Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Global Root - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:95:0f:a0:b6:f0:50:9c:e8:7a:c7:88:cd:dd:17: - 0e:2e:b0:94:d0:1b:3d:0e:f6:94:c0:8a:94:c7:06: - c8:90:97:c8:b8:64:1a:7a:7e:6c:3c:53:e1:37:28: - 73:60:7f:b2:97:53:07:9f:53:f9:6d:58:94:d2:af: - 8d:6d:88:67:80:e6:ed:b2:95:cf:72:31:ca:a5:1c: - 72:ba:5c:02:e7:64:42:e7:f9:a9:2c:d6:3a:0d:ac: - 8d:42:aa:24:01:39:e6:9c:3f:01:85:57:0d:58:87: - 45:f8:d3:85:aa:93:69:26:85:70:48:80:3f:12:15: - c7:79:b4:1f:05:2f:3b:62:99 - Exponent: 65537 (0x10001) - Signature Algorithm: md5WithRSAEncryption - 6d:eb:1b:09:e9:5e:d9:51:db:67:22:61:a4:2a:3c:48:77:e3: - a0:7c:a6:de:73:a2:14:03:85:3d:fb:ab:0e:30:c5:83:16:33: - 81:13:08:9e:7b:34:4e:df:40:c8:74:d7:b9:7d:dc:f4:76:55: - 7d:9b:63:54:18:e9:f0:ea:f3:5c:b1:d9:8b:42:1e:b9:c0:95: - 4e:ba:fa:d5:e2:7c:f5:68:61:bf:8e:ec:05:97:5f:5b:b0:d7: - a3:85:34:c4:24:a7:0d:0f:95:93:ef:cb:94:d8:9e:1f:9d:5c: - 85:6d:c7:aa:ae:4f:1f:22:b5:cd:95:ad:ba:a7:cc:f9:ab:0b: - 7a:7f - -GTE CyberTrust Japan Root CA -============================ -MD5 Fingerprint: DE:AB:FF:43:2A:65:37:06:9B:28:B5:7A:E8:84:D3:8E -PEM Data: ------BEGIN CERTIFICATE----- -MIICETCCAXoCAU4wDQYJKoZIhvcNAQEEBQAwUTELMAkGA1UEBhMCSlAxHzAdBgNV -BAoTFkN5YmVyVHJ1c3QgSmFwYW4sIEluYy4xITAfBgNVBAMTGEN5YmVyVHJ1c3Qg -SkFQQU4gUm9vdCBDQTAeFw05ODA4MDQwNzU3MDBaFw0wMzA4MDQyMzU5MDBaMFEx -CzAJBgNVBAYTAkpQMR8wHQYDVQQKExZDeWJlclRydXN0IEphcGFuLCBJbmMuMSEw -HwYDVQQDExhDeWJlclRydXN0IEpBUEFOIFJvb3QgQ0EwgZ8wDQYJKoZIhvcNAQEB -BQADgY0AMIGJAoGBALet/MpHEHaJ/Wes5HMGfIFLHda1fA5Hr+ymVHWoxP1lr+fI -sbFsNDWN97lkVygLIVredP7ceC6GRhJMfxEf3JO9X75mmIa4t+xtSdOQ2eF5AFZo -uq1sHyw7H8ksjEOwBELqgXOmzjN1RQ2KRXIvqldV5AfDQ+J1Og+8PNCEzrrvAgMB -AAEwDQYJKoZIhvcNAQEEBQADgYEAt6ZkowyAPBzE2O5BO+WGpJ5gXdYBMqhqZC0g -cEC6ck5m+gdlTgOOC/1W4K07IKcy+rISHoDfHuN6GMxX2+bJNGDvdesQFtCkLnDY -JCO4pXdzQvkHOt0BbAiTBzUmECVgKf8J5WSfabkWSfNc3SRjRpMNsFM2dbxIILsZ -to/QIv0= ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: 78 (0x4e) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=JP, O=CyberTrust Japan, Inc., CN=CyberTrust JAPAN Root CA - Validity - Not Before: Aug 4 07:57:00 1998 GMT - Not After : Aug 4 23:59:00 2003 GMT - Subject: C=JP, O=CyberTrust Japan, Inc., CN=CyberTrust JAPAN Root CA - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:b7:ad:fc:ca:47:10:76:89:fd:67:ac:e4:73:06: - 7c:81:4b:1d:d6:b5:7c:0e:47:af:ec:a6:54:75:a8: - c4:fd:65:af:e7:c8:b1:b1:6c:34:35:8d:f7:b9:64: - 57:28:0b:21:5a:de:74:fe:dc:78:2e:86:46:12:4c: - 7f:11:1f:dc:93:bd:5f:be:66:98:86:b8:b7:ec:6d: - 49:d3:90:d9:e1:79:00:56:68:ba:ad:6c:1f:2c:3b: - 1f:c9:2c:8c:43:b0:04:42:ea:81:73:a6:ce:33:75: - 45:0d:8a:45:72:2f:aa:57:55:e4:07:c3:43:e2:75: - 3a:0f:bc:3c:d0:84:ce:ba:ef - Exponent: 65537 (0x10001) - Signature Algorithm: md5WithRSAEncryption - b7:a6:64:a3:0c:80:3c:1c:c4:d8:ee:41:3b:e5:86:a4:9e:60: - 5d:d6:01:32:a8:6a:64:2d:20:70:40:ba:72:4e:66:fa:07:65: - 4e:03:8e:0b:fd:56:e0:ad:3b:20:a7:32:fa:b2:12:1e:80:df: - 1e:e3:7a:18:cc:57:db:e6:c9:34:60:ef:75:eb:10:16:d0:a4: - 2e:70:d8:24:23:b8:a5:77:73:42:f9:07:3a:dd:01:6c:08:93: - 07:35:26:10:25:60:29:ff:09:e5:64:9f:69:b9:16:49:f3:5c: - dd:24:63:46:93:0d:b0:53:36:75:bc:48:20:bb:19:b6:8f:d0: - 22:fd - -GTE CyberTrust Japan Secure Server CA -===================================== -MD5 Fingerprint: DD:0D:0D:B4:78:4B:7D:CE:30:0A:A6:35:C6:AB:4C:88 -PEM Data: ------BEGIN CERTIFICATE----- -MIICIzCCAYwCAU8wDQYJKoZIhvcNAQEEBQAwWjELMAkGA1UEBhMCSlAxHzAdBgNV -BAoTFkN5YmVyVHJ1c3QgSmFwYW4sIEluYy4xKjAoBgNVBAMTIUN5YmVyVHJ1c3Qg -SkFQQU4gU2VjdXJlIFNlcnZlciBDQTAeFw05ODA4MDQwODA2MzJaFw0wMzA4MDQy -MzU5MDBaMFoxCzAJBgNVBAYTAkpQMR8wHQYDVQQKExZDeWJlclRydXN0IEphcGFu -LCBJbmMuMSowKAYDVQQDEyFDeWJlclRydXN0IEpBUEFOIFNlY3VyZSBTZXJ2ZXIg -Q0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKwmo6G4b2rALBL52zEFkuf9 -+tSBtLjVKtWQ+vBDZfwSFcrs27lh3jNjN0+vADx/kjcbGHPlnzyI8RoTRP558sMm -lQ8L8J4UByFsV8Jdw+JRsM2LX81fhjj4eZc57Oi/Ui6xXqqprozt7tfIty4xi7Q5 -kjt8gScHGgFEL0lzILbJAgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAaB17Eu5aeSkx -ygGsi1CpJ5ksAPw4Ghz/wtXwE/4bpzn1gBTrUfrAjXuEG1musTVRbqE+1xvsoJ7f -4KWCluOxP9io8ct5gI738ESZfhT1I6MR42hLBTZuiOOrhqo4UwNCO9O5+eC/BenT -X8NKp7b9t12QSfiasq1mpoIAk65g/yA= ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: 79 (0x4f) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=JP, O=CyberTrust Japan, Inc., CN=CyberTrust JAPAN Secure Server CA - Validity - Not Before: Aug 4 08:06:32 1998 GMT - Not After : Aug 4 23:59:00 2003 GMT - Subject: C=JP, O=CyberTrust Japan, Inc., CN=CyberTrust JAPAN Secure Server CA - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:ac:26:a3:a1:b8:6f:6a:c0:2c:12:f9:db:31:05: - 92:e7:fd:fa:d4:81:b4:b8:d5:2a:d5:90:fa:f0:43: - 65:fc:12:15:ca:ec:db:b9:61:de:33:63:37:4f:af: - 00:3c:7f:92:37:1b:18:73:e5:9f:3c:88:f1:1a:13: - 44:fe:79:f2:c3:26:95:0f:0b:f0:9e:14:07:21:6c: - 57:c2:5d:c3:e2:51:b0:cd:8b:5f:cd:5f:86:38:f8: - 79:97:39:ec:e8:bf:52:2e:b1:5e:aa:a9:ae:8c:ed: - ee:d7:c8:b7:2e:31:8b:b4:39:92:3b:7c:81:27:07: - 1a:01:44:2f:49:73:20:b6:c9 - Exponent: 65537 (0x10001) - Signature Algorithm: md5WithRSAEncryption - 68:1d:7b:12:ee:5a:79:29:31:ca:01:ac:8b:50:a9:27:99:2c: - 00:fc:38:1a:1c:ff:c2:d5:f0:13:fe:1b:a7:39:f5:80:14:eb: - 51:fa:c0:8d:7b:84:1b:59:ae:b1:35:51:6e:a1:3e:d7:1b:ec: - a0:9e:df:e0:a5:82:96:e3:b1:3f:d8:a8:f1:cb:79:80:8e:f7: - f0:44:99:7e:14:f5:23:a3:11:e3:68:4b:05:36:6e:88:e3:ab: - 86:aa:38:53:03:42:3b:d3:b9:f9:e0:bf:05:e9:d3:5f:c3:4a: - a7:b6:fd:b7:5d:90:49:f8:9a:b2:ad:66:a6:82:00:93:ae:60: - ff:20 - -GTE CyberTrust Root 2 -===================== -MD5 Fingerprint: BA:ED:17:57:9A:4B:FF:7C:F9:C9:1F:A2:CD:1A:D6:87 -PEM Data: ------BEGIN CERTIFICATE----- -MIICUDCCAbkCAgGbMA0GCSqGSIb3DQEBBAUAMHAxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv -bHV0aW9ucywgSW5jLjEeMBwGA1UEAxMVR1RFIEN5YmVyVHJ1c3QgUm9vdCAyMB4X -DTk4MDgxMTExMzUwN1oXDTA4MDgxMTExMjIxNlowcDELMAkGA1UEBhMCVVMxGDAW -BgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1c3Qg -U29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290IDIw -gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANksTE4vaRoj41a6886EwAnAefFE -XzMfFZF/iogouCRFzI8YzR900bWPcUzWMfZzloSUQMWpg2Akfa9vNLdLTMIJgDtF -BJ7EPMQndXsADKFkR7UUXYJLUTpYu0RMPdPlBjjoYVyYeLuAs5zacoJioN+cX+v5 -T3fCzGAYAGs0giWzAgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAo2SRbxDt526iQkCU -eM74FAjR+kOF60bNkhTQ7y4tNjkY2brJJ4gp6UgXb/jBqshhbS39QC11QzCXOfgU -ZL1v72OoK0LfsloNJex7N9jOkSmCFvnoYqLhdsQCfd0li5jh9g1gjPZZkEBRRNHC -+xkkHhc5a3QhFTPWVdeCHnAsJ6g= ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: 411 (0x19b) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 2 - Validity - Not Before: Aug 11 11:35:07 1998 GMT - Not After : Aug 11 11:22:16 2008 GMT - Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 2 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:d9:2c:4c:4e:2f:69:1a:23:e3:56:ba:f3:ce:84: - c0:09:c0:79:f1:44:5f:33:1f:15:91:7f:8a:88:28: - b8:24:45:cc:8f:18:cd:1f:74:d1:b5:8f:71:4c:d6: - 31:f6:73:96:84:94:40:c5:a9:83:60:24:7d:af:6f: - 34:b7:4b:4c:c2:09:80:3b:45:04:9e:c4:3c:c4:27: - 75:7b:00:0c:a1:64:47:b5:14:5d:82:4b:51:3a:58: - bb:44:4c:3d:d3:e5:06:38:e8:61:5c:98:78:bb:80: - b3:9c:da:72:82:62:a0:df:9c:5f:eb:f9:4f:77:c2: - cc:60:18:00:6b:34:82:25:b3 - Exponent: 65537 (0x10001) - Signature Algorithm: md5WithRSAEncryption - a3:64:91:6f:10:ed:e7:6e:a2:42:40:94:78:ce:f8:14:08:d1: - fa:43:85:eb:46:cd:92:14:d0:ef:2e:2d:36:39:18:d9:ba:c9: - 27:88:29:e9:48:17:6f:f8:c1:aa:c8:61:6d:2d:fd:40:2d:75: - 43:30:97:39:f8:14:64:bd:6f:ef:63:a8:2b:42:df:b2:5a:0d: - 25:ec:7b:37:d8:ce:91:29:82:16:f9:e8:62:a2:e1:76:c4:02: - 7d:dd:25:8b:98:e1:f6:0d:60:8c:f6:59:90:40:51:44:d1:c2: - fb:19:24:1e:17:39:6b:74:21:15:33:d6:55:d7:82:1e:70:2c: - 27:a8 - -GTE CyberTrust Root 3 -===================== -MD5 Fingerprint: DB:81:96:57:AE:64:61:EF:77:A7:83:C4:51:24:3C:87 -PEM Data: ------BEGIN CERTIFICATE----- -MIICUDCCAbkCAgGXMA0GCSqGSIb3DQEBBQUAMHAxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv -bHV0aW9ucywgSW5jLjEeMBwGA1UEAxMVR1RFIEN5YmVyVHJ1c3QgUm9vdCAzMB4X -DTk4MDgxMDE5NTkwOFoXDTA4MDgxMDE5MzYzOVowcDELMAkGA1UEBhMCVVMxGDAW -BgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1c3Qg -U29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290IDMw -gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOHzsSsLztwU2TSXYlASVmOETFP6 -wIXP+sHdD955E39T+6oOYN3iYr/G7k6ZNKpoQzWZ+KP982O9AVRqnrI6lix7eCjG -WrWNGhUY/eOMLqJQCVtx1g21GB8ZjgQpk5N4q18U53NC8gMMV6IbUDsLu1ngoDoD -7icbWky5sAjKuRqJAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAheutlCAG6bKiazvy -ZuvjS7gSJgXl9JGo3IfcmPSUwfRhvdWcbFFzlV7QvdfmRdw8z0aE1ee57ORnY24A -KHdxXUoF6bl8hszCRLveKUja6t29F58dUQGo6BResVf3/9qPzpX+Le0yEnf/fGph -la4xcgYI8PnzDY7i76hTXZEDg94= ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: 407 (0x197) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 3 - Validity - Not Before: Aug 10 19:59:08 1998 GMT - Not After : Aug 10 19:36:39 2008 GMT - Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 3 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:e1:f3:b1:2b:0b:ce:dc:14:d9:34:97:62:50:12: - 56:63:84:4c:53:fa:c0:85:cf:fa:c1:dd:0f:de:79: - 13:7f:53:fb:aa:0e:60:dd:e2:62:bf:c6:ee:4e:99: - 34:aa:68:43:35:99:f8:a3:fd:f3:63:bd:01:54:6a: - 9e:b2:3a:96:2c:7b:78:28:c6:5a:b5:8d:1a:15:18: - fd:e3:8c:2e:a2:50:09:5b:71:d6:0d:b5:18:1f:19: - 8e:04:29:93:93:78:ab:5f:14:e7:73:42:f2:03:0c: - 57:a2:1b:50:3b:0b:bb:59:e0:a0:3a:03:ee:27:1b: - 5a:4c:b9:b0:08:ca:b9:1a:89 - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 85:eb:ad:94:20:06:e9:b2:a2:6b:3b:f2:66:eb:e3:4b:b8:12: - 26:05:e5:f4:91:a8:dc:87:dc:98:f4:94:c1:f4:61:bd:d5:9c: - 6c:51:73:95:5e:d0:bd:d7:e6:45:dc:3c:cf:46:84:d5:e7:b9: - ec:e4:67:63:6e:00:28:77:71:5d:4a:05:e9:b9:7c:86:cc:c2: - 44:bb:de:29:48:da:ea:dd:bd:17:9f:1d:51:01:a8:e8:14:5e: - b1:57:f7:ff:da:8f:ce:95:fe:2d:ed:32:12:77:ff:7c:6a:61: - 95:ae:31:72:06:08:f0:f9:f3:0d:8e:e2:ef:a8:53:5d:91:03: - 83:de - -GTE CyberTrust Root 4 -===================== -MD5 Fingerprint: 33:43:02:B1:B9:E0:73:B1:B1:20:CA:CB:C7:84:03:50 -PEM Data: ------BEGIN CERTIFICATE----- -MIIDVTCCAj0CAgGoMA0GCSqGSIb3DQEBBQUAMHAxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv -bHV0aW9ucywgSW5jLjEeMBwGA1UEAxMVR1RFIEN5YmVyVHJ1c3QgUm9vdCA0MB4X -DTk4MDgxMzEzNTEwMFoXDTEzMDgxMzIzNTkwMFowcDELMAkGA1UEBhMCVVMxGDAW -BgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1c3Qg -U29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290IDQw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6nSJuf9pmPDlCsaMqb9P3 -vK6sMVrXEZBHuZ0ZLvnzGyKgw+GnusT8XgqUS5haSybkH/Tc8/6OiNxsLXx3hyZQ -wF5OqCih6hdpT03GAQ7amg0GViYVtqRdejWvje14Uob5OKuzAdPaBZaxtlCrwKGu -F1P6QzkgcWUj223Etu2YRYPX0vbiqWv7+XXM78WrcZY16N+OkZuoEHUft84Tjmuz -lneXGpEvxyxpmfAPKmgAmHZEG4wo0uuO9IO0f6QlXmw72cZo1WG41F4xB7VbkDVS -V3sXIO0tuB6OiDk+Usvf8FyxZbulErSQY79xnTLB2r9QSpW+BjrEK+vNmHZETQvl -AgMBAAEwDQYJKoZIhvcNAQEFBQADggEBAEOvHIfJSbpliTRJPOoHO0eiedSgO5Bs -3n+oVMPoTEAyvMjsHOXZrEC6/Iw/wnOc9GTq36ntTlvIAWDuOW1DJ/N/qgjS/k5v -FDJNfeQ0gKU1xNZGULQ7oC1lH09lfjQoLcCndn0xyQ0zFvYgGSARULsDzHBtlrfv -TKfaNhXPu03UltyITWyY7blz/ihXoO1k+AqBKXP29pcyhzm0ge/ZTRoHNPe6QjXe -V9xc1vfF6wonDIGmwtBoTv2SW0iD9haKjzZb7TFsP0F6cfeSPzGkCkBM84biYcE8 -SYEtpbjvupcPvCsdm4ny0o4eTYbywqv2LZnAGyoNobZP+SxYTT19Nwo= ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: 424 (0x1a8) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 4 - Validity - Not Before: Aug 13 13:51:00 1998 GMT - Not After : Aug 13 23:59:00 2013 GMT - Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 4 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:ba:9d:22:6e:7f:da:66:3c:39:42:b1:a3:2a:6f: - d3:f7:bc:ae:ac:31:5a:d7:11:90:47:b9:9d:19:2e: - f9:f3:1b:22:a0:c3:e1:a7:ba:c4:fc:5e:0a:94:4b: - 98:5a:4b:26:e4:1f:f4:dc:f3:fe:8e:88:dc:6c:2d: - 7c:77:87:26:50:c0:5e:4e:a8:28:a1:ea:17:69:4f: - 4d:c6:01:0e:da:9a:0d:06:56:26:15:b6:a4:5d:7a: - 35:af:8d:ed:78:52:86:f9:38:ab:b3:01:d3:da:05: - 96:b1:b6:50:ab:c0:a1:ae:17:53:fa:43:39:20:71: - 65:23:db:6d:c4:b6:ed:98:45:83:d7:d2:f6:e2:a9: - 6b:fb:f9:75:cc:ef:c5:ab:71:96:35:e8:df:8e:91: - 9b:a8:10:75:1f:b7:ce:13:8e:6b:b3:96:77:97:1a: - 91:2f:c7:2c:69:99:f0:0f:2a:68:00:98:76:44:1b: - 8c:28:d2:eb:8e:f4:83:b4:7f:a4:25:5e:6c:3b:d9: - c6:68:d5:61:b8:d4:5e:31:07:b5:5b:90:35:52:57: - 7b:17:20:ed:2d:b8:1e:8e:88:39:3e:52:cb:df:f0: - 5c:b1:65:bb:a5:12:b4:90:63:bf:71:9d:32:c1:da: - bf:50:4a:95:be:06:3a:c4:2b:eb:cd:98:76:44:4d: - 0b:e5 - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 43:af:1c:87:c9:49:ba:65:89:34:49:3c:ea:07:3b:47:a2:79: - d4:a0:3b:90:6c:de:7f:a8:54:c3:e8:4c:40:32:bc:c8:ec:1c: - e5:d9:ac:40:ba:fc:8c:3f:c2:73:9c:f4:64:ea:df:a9:ed:4e: - 5b:c8:01:60:ee:39:6d:43:27:f3:7f:aa:08:d2:fe:4e:6f:14: - 32:4d:7d:e4:34:80:a5:35:c4:d6:46:50:b4:3b:a0:2d:65:1f: - 4f:65:7e:34:28:2d:c0:a7:76:7d:31:c9:0d:33:16:f6:20:19: - 20:11:50:bb:03:cc:70:6d:96:b7:ef:4c:a7:da:36:15:cf:bb: - 4d:d4:96:dc:88:4d:6c:98:ed:b9:73:fe:28:57:a0:ed:64:f8: - 0a:81:29:73:f6:f6:97:32:87:39:b4:81:ef:d9:4d:1a:07:34: - f7:ba:42:35:de:57:dc:5c:d6:f7:c5:eb:0a:27:0c:81:a6:c2: - d0:68:4e:fd:92:5b:48:83:f6:16:8a:8f:36:5b:ed:31:6c:3f: - 41:7a:71:f7:92:3f:31:a4:0a:40:4c:f3:86:e2:61:c1:3c:49: - 81:2d:a5:b8:ef:ba:97:0f:bc:2b:1d:9b:89:f2:d2:8e:1e:4d: - 86:f2:c2:ab:f6:2d:99:c0:1b:2a:0d:a1:b6:4f:f9:2c:58:4d: - 3d:7d:37:0a - -GTE CyberTrust Root 5 -===================== -MD5 Fingerprint: 7D:6C:86:E4:FC:4D:D1:0B:00:BA:22:BB:4E:7C:6A:8E -PEM Data: ------BEGIN CERTIFICATE----- -MIIDtjCCAp6gAwIBAgICAbYwDQYJKoZIhvcNAQEFBQAwcDELMAkGA1UEBhMCVVMx -GDAWBgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1 -c3QgU29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290 -IDUwHhcNOTgwODE0MTQ1MDAwWhcNMTMwODE0MjM1OTAwWjBwMQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xHjAcBgNVBAMTFUdURSBDeWJlclRydXN0IFJv -b3QgNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALwSbj+KfHqXAewe -uzlaAvR4RKJIG457SVJ6uHtHs6+Um2+7lvoramVcuByUc76/iQoigO5X/IwFu3Cf -lzkE2qOHXKjlyq/AM5rVN1xLrOSA0KYjYPv9ci6UncfOwgQy73hgXe2thw9FZR48 -mgqavl0dmezn8tHGehfZrZtUln/EfGC/haoVNR1A2hG87FQhKC0joajwzy3N3fx+ -D17hZQdWywe00lboXjHMGGPEhtIthc+Tkqtt/mg5+95zvYb45EZ66p8My/QZ/mO8 -0Sx7iDM29uThnAxTgWAc2i6rlqkWiBNQmbK9Vd8VMH7o5Zj7cH5stQf8/Ea30O03 -ln4y/iECAwEAAaNaMFgwEgYDVR0TAQH/BAgwBgEB/wIBBTAOBgNVHQ8BAf8EBAMC -AQYwFwYDVR0gBBAwDjAMBgoqhkiG+GMBAgEDMBkGA1UdDgQSBBB2CkkhOEyf3vjE -ScdxcZGdMA0GCSqGSIb3DQEBBQUAA4IBAQBBOtQYW9q43iEc4Y4J5fFoNP/elvQH -9ac886xKsZv6kvqb7eYyIapKdsXcTzjl39WG5NXIdn2Y17HNj021kSNsi4rr6nzv -FJTExvAfSi0ycWMrY5EmAgm2gB3t4sy4f9uHY8jh0GwmsTUdQGYQG82VVBgzYewT -T9oT95mvPtDPjqZyorPDBZrJJ32SzH5SjbOrcG2eiZ9N6xp1wpiq1QIW1wyKvyXk -6y28mOlYOBl8uTf+2+KZCHMGx5eDan0QAS8yuRcFSmXmL86+XlOmgumaUwqEdC2D -ysiUFnZflGEo8IWnObvXi9moshMdVAk0JH0ggX1mfqKQdFwQxr3sqxvC ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 438 (0x1b6) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 5 - Validity - Not Before: Aug 14 14:50:00 1998 GMT - Not After : Aug 14 23:59:00 2013 GMT - Subject: C=US, O=GTE Corporation, OU=GTE CyberTrust Solutions, Inc., CN=GTE CyberTrust Root 5 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:bc:12:6e:3f:8a:7c:7a:97:01:ec:1e:bb:39:5a: - 02:f4:78:44:a2:48:1b:8e:7b:49:52:7a:b8:7b:47: - b3:af:94:9b:6f:bb:96:fa:2b:6a:65:5c:b8:1c:94: - 73:be:bf:89:0a:22:80:ee:57:fc:8c:05:bb:70:9f: - 97:39:04:da:a3:87:5c:a8:e5:ca:af:c0:33:9a:d5: - 37:5c:4b:ac:e4:80:d0:a6:23:60:fb:fd:72:2e:94: - 9d:c7:ce:c2:04:32:ef:78:60:5d:ed:ad:87:0f:45: - 65:1e:3c:9a:0a:9a:be:5d:1d:99:ec:e7:f2:d1:c6: - 7a:17:d9:ad:9b:54:96:7f:c4:7c:60:bf:85:aa:15: - 35:1d:40:da:11:bc:ec:54:21:28:2d:23:a1:a8:f0: - cf:2d:cd:dd:fc:7e:0f:5e:e1:65:07:56:cb:07:b4: - d2:56:e8:5e:31:cc:18:63:c4:86:d2:2d:85:cf:93: - 92:ab:6d:fe:68:39:fb:de:73:bd:86:f8:e4:46:7a: - ea:9f:0c:cb:f4:19:fe:63:bc:d1:2c:7b:88:33:36: - f6:e4:e1:9c:0c:53:81:60:1c:da:2e:ab:96:a9:16: - 88:13:50:99:b2:bd:55:df:15:30:7e:e8:e5:98:fb: - 70:7e:6c:b5:07:fc:fc:46:b7:d0:ed:37:96:7e:32: - fe:21 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE, pathlen:5 - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Certificate Policies: - Policy: 1.2.840.113763.1.2.1.3 - - X509v3 Subject Key Identifier: - 76:0A:49:21:38:4C:9F:DE:F8:C4:49:C7:71:71:91:9D - Signature Algorithm: sha1WithRSAEncryption - 41:3a:d4:18:5b:da:b8:de:21:1c:e1:8e:09:e5:f1:68:34:ff: - de:96:f4:07:f5:a7:3c:f3:ac:4a:b1:9b:fa:92:fa:9b:ed:e6: - 32:21:aa:4a:76:c5:dc:4f:38:e5:df:d5:86:e4:d5:c8:76:7d: - 98:d7:b1:cd:8f:4d:b5:91:23:6c:8b:8a:eb:ea:7c:ef:14:94: - c4:c6:f0:1f:4a:2d:32:71:63:2b:63:91:26:02:09:b6:80:1d: - ed:e2:cc:b8:7f:db:87:63:c8:e1:d0:6c:26:b1:35:1d:40:66: - 10:1b:cd:95:54:18:33:61:ec:13:4f:da:13:f7:99:af:3e:d0: - cf:8e:a6:72:a2:b3:c3:05:9a:c9:27:7d:92:cc:7e:52:8d:b3: - ab:70:6d:9e:89:9f:4d:eb:1a:75:c2:98:aa:d5:02:16:d7:0c: - 8a:bf:25:e4:eb:2d:bc:98:e9:58:38:19:7c:b9:37:fe:db:e2: - 99:08:73:06:c7:97:83:6a:7d:10:01:2f:32:b9:17:05:4a:65: - e6:2f:ce:be:5e:53:a6:82:e9:9a:53:0a:84:74:2d:83:ca:c8: - 94:16:76:5f:94:61:28:f0:85:a7:39:bb:d7:8b:d9:a8:b2:13: - 1d:54:09:34:24:7d:20:81:7d:66:7e:a2:90:74:5c:10:c6:bd: - ec:ab:1b:c2 - -GTE CyberTrust Root CA -====================== -MD5 Fingerprint: C4:D7:F0:B2:A3:C5:7D:61:67:F0:04:CD:43:D3:BA:58 -PEM Data: ------BEGIN CERTIFICATE----- -MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJv -b3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQDExNHVEUgQ3liZXJU -cnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC45k+625h8cXyv -RLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH6X4M -ypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/5 -1KiOQswkwB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKz -dcZfHeFhVYAA1IFLezEPI2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWl -IjeaY8JIILTbcuPI9tl8vrGvU9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9Apy -bW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: 419 (0x1a3) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=US, O=GTE Corporation, CN=GTE CyberTrust Root - Validity - Not Before: Feb 23 23:01:00 1996 GMT - Not After : Feb 23 23:59:00 2006 GMT - Subject: C=US, O=GTE Corporation, CN=GTE CyberTrust Root - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:b8:e6:4f:ba:db:98:7c:71:7c:af:44:b7:d3:0f: - 46:d9:64:e5:93:c1:42:8e:c7:ba:49:8d:35:2d:7a: - e7:8b:bd:e5:05:31:59:c6:b1:2f:0a:0c:fb:9f:a7: - 3f:a2:09:66:84:56:1e:37:29:1b:87:e9:7e:0c:ca: - 9a:9f:a5:7f:f5:15:94:a3:d5:a2:46:82:d8:68:4c: - d1:37:15:06:68:af:bd:f8:b0:b3:f0:29:f5:95:5a: - 09:16:61:77:0a:22:25:d4:4f:45:aa:c7:bd:e5:96: - df:f9:d4:a8:8e:42:cc:24:c0:1e:91:27:4a:b5:6d: - 06:80:63:39:c4:a2:5e:38:03 - Exponent: 65537 (0x10001) - Signature Algorithm: md5WithRSAEncryption - 12:b3:75:c6:5f:1d:e1:61:55:80:00:d4:81:4b:7b:31:0f:23: - 63:e7:3d:f3:03:f9:f4:36:a8:bb:d9:e3:a5:97:4d:ea:2b:29: - e0:d6:6a:73:81:e6:c0:89:a3:d3:f1:e0:a5:a5:22:37:9a:63: - c2:48:20:b4:db:72:e3:c8:f6:d9:7c:be:b1:af:53:da:14:b4: - 21:b8:d6:d5:96:e3:fe:4e:0c:59:62:b6:9a:4a:f9:42:dd:8c: - 6f:81:a9:71:ff:f4:0a:72:6d:6d:44:0e:9d:f3:74:74:a8:d5: - 34:49:e9:5e:9e:e9:b4:7a:e1:e5:5a:1f:84:30:9c:d3:9f:a5: - 25:d8 - -GlobalSign Partners CA -====================== -MD5 Fingerprint: 3C:75:CD:4C:BD:A9:D0:8A:79:4F:50:16:37:84:F4:2B -PEM Data: ------BEGIN CERTIFICATE----- -MIIDnjCCAoagAwIBAgILAgAAAAAA1ni50a8wDQYJKoZIhvcNAQEEBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05OTAxMjgxMjAw -MDBaFw0wOTAxMjgxMjAwMDBaMF8xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRQwEgYDVQQLEwtQYXJ0bmVycyBDQTEfMB0GA1UEAxMWR2xv -YmFsU2lnbiBQYXJ0bmVycyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBANIs+DKsShJ6N8gpkaWujG4eDsA0M4jlM3EWHHiEaMMYNFAuFj6xlIJPsZqf -APjGETXGaXuYAq0ABohs50wzKACIJ0Yfh7NxdWO8MruI3mYYDlAGk7T2vBQ3MD0i -3z3/dX7ZChrFn7P80KyzCHqJ0wHoAFznSgs9TXsmordiBovaRt2TFz8/WwJLC7aI -IBGSAK27xy7U40Wu9YlafI2krYVkMsAnjMbyioCShiRWWY10aKKDQrOePVBBhm8g -bvb9ztMZ4zLMj+2aXm0fKPVSrG4YXvg90ZLlumwBiEsK8i3eZTMFQqBMqjF2vv2/ -gXj5cRxGXi0VlS0wWY5MQdFiqz0CAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgAGMB0G -A1UdDgQWBBRDJI1wFQhiVZxPDEAXXYZeD6JM+zAfBgNVHSMEGDAWgBRge2YaRQ2X -yolQL30EzTSo//z9SzAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IB -AQBm7bSIaRGZgiGDrKFti5uErQ8tyB6Mynt+rarUjt4H1p5Fx6W4nAc5YCVVGsBP -GeXPFylJiRg1ZuXrKEBOV8mvs+S4IAWjO5VQkUmUKX0s5YhBpUWIXp2CJ/fS71u1 -T5++/jVlLFVkn+FR2iJhd7pYTo/GeVlZbjCAok+QbiELrdBoOZAQm+0iZW8eETjm -f4zS8zltR9Uh6Op1OkHRrfYWnV0LIb3zH2MGJR3BHzVxLOsgGdXBsOw95W/tAgc/ -E3tmktZEwZj3X1CLelvCb22w0fjldKBAN6MlD+Q9ymQxk5BcMHu5OTGaXkzNuUFP -UOQ9OK7IZtnHO11RR6ybq/Kt ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: - 02:00:00:00:00:00:d6:78:b9:d1:af - Signature Algorithm: md5WithRSAEncryption - Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA - Validity - Not Before: Jan 28 12:00:00 1999 GMT - Not After : Jan 28 12:00:00 2009 GMT - Subject: C=BE, O=GlobalSign nv-sa, OU=Partners CA, CN=GlobalSign Partners CA - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:d2:2c:f8:32:ac:4a:12:7a:37:c8:29:91:a5:ae: - 8c:6e:1e:0e:c0:34:33:88:e5:33:71:16:1c:78:84: - 68:c3:18:34:50:2e:16:3e:b1:94:82:4f:b1:9a:9f: - 00:f8:c6:11:35:c6:69:7b:98:02:ad:00:06:88:6c: - e7:4c:33:28:00:88:27:46:1f:87:b3:71:75:63:bc: - 32:bb:88:de:66:18:0e:50:06:93:b4:f6:bc:14:37: - 30:3d:22:df:3d:ff:75:7e:d9:0a:1a:c5:9f:b3:fc: - d0:ac:b3:08:7a:89:d3:01:e8:00:5c:e7:4a:0b:3d: - 4d:7b:26:a2:b7:62:06:8b:da:46:dd:93:17:3f:3f: - 5b:02:4b:0b:b6:88:20:11:92:00:ad:bb:c7:2e:d4: - e3:45:ae:f5:89:5a:7c:8d:a4:ad:85:64:32:c0:27: - 8c:c6:f2:8a:80:92:86:24:56:59:8d:74:68:a2:83: - 42:b3:9e:3d:50:41:86:6f:20:6e:f6:fd:ce:d3:19: - e3:32:cc:8f:ed:9a:5e:6d:1f:28:f5:52:ac:6e:18: - 5e:f8:3d:d1:92:e5:ba:6c:01:88:4b:0a:f2:2d:de: - 65:33:05:42:a0:4c:aa:31:76:be:fd:bf:81:78:f9: - 71:1c:46:5e:2d:15:95:2d:30:59:8e:4c:41:d1:62: - ab:3d - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Subject Key Identifier: - 43:24:8D:70:15:08:62:55:9C:4F:0C:40:17:5D:86:5E:0F:A2:4C:FB - X509v3 Authority Key Identifier: - keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B - - X509v3 Basic Constraints: critical - CA:TRUE - Signature Algorithm: md5WithRSAEncryption - 66:ed:b4:88:69:11:99:82:21:83:ac:a1:6d:8b:9b:84:ad:0f: - 2d:c8:1e:8c:ca:7b:7e:ad:aa:d4:8e:de:07:d6:9e:45:c7:a5: - b8:9c:07:39:60:25:55:1a:c0:4f:19:e5:cf:17:29:49:89:18: - 35:66:e5:eb:28:40:4e:57:c9:af:b3:e4:b8:20:05:a3:3b:95: - 50:91:49:94:29:7d:2c:e5:88:41:a5:45:88:5e:9d:82:27:f7: - d2:ef:5b:b5:4f:9f:be:fe:35:65:2c:55:64:9f:e1:51:da:22: - 61:77:ba:58:4e:8f:c6:79:59:59:6e:30:80:a2:4f:90:6e:21: - 0b:ad:d0:68:39:90:10:9b:ed:22:65:6f:1e:11:38:e6:7f:8c: - d2:f3:39:6d:47:d5:21:e8:ea:75:3a:41:d1:ad:f6:16:9d:5d: - 0b:21:bd:f3:1f:63:06:25:1d:c1:1f:35:71:2c:eb:20:19:d5: - c1:b0:ec:3d:e5:6f:ed:02:07:3f:13:7b:66:92:d6:44:c1:98: - f7:5f:50:8b:7a:5b:c2:6f:6d:b0:d1:f8:e5:74:a0:40:37:a3: - 25:0f:e4:3d:ca:64:31:93:90:5c:30:7b:b9:39:31:9a:5e:4c: - cd:b9:41:4f:50:e4:3d:38:ae:c8:66:d9:c7:3b:5d:51:47:ac: - 9b:ab:f2:ad - -GlobalSign Primary Class 1 CA -============================= -MD5 Fingerprint: 5C:AC:59:01:A4:86:53:CB:10:66:B5:D6:D6:71:FF:01 -PEM Data: ------BEGIN CERTIFICATE----- -MIIDrDCCApSgAwIBAgILAgAAAAAA1ni4N88wDQYJKoZIhvcNAQEEBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MTUxMjAw -MDBaFw0wOTAxMjgxMjAwMDBaMG0xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRswGQYDVQQLExJQcmltYXJ5IENsYXNzIDEgQ0ExJjAkBgNV -BAMTHUdsb2JhbFNpZ24gUHJpbWFyeSBDbGFzcyAxIENBMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEAvSA1R9Eo1gijEjkjRw29cCFSDlcxlaY0V2vsfkN5 -wwZSSM28taGZvdgfMrzP125ybS53IpCCTkuPmgwBQprZcFm2nR/mY9EMrR1O+IWB -+a7vn6ZSYUR5GnVF4GFWRW1CjD1yy6akErea9dZg0GBQs46mpuy09BLNf6jO77Ph -hTD+csTm53eznlhB1lGDiAfGtmlPNt7RC0g/vdafIXRkbycGPkv9Dqabv6RIV4yQ -7okYCwKBGL5n/lNgiCe6o3M0S1pWtN5zBe2Yll3sSudA/EsJYuvQ4zFPhdF6q1ln -K/uID+uqg701/WEn7GYOQlf3acIM7/xqwm5J2o9BOK5IqQIDAQABo2MwYTAOBgNV -HQ8BAf8EBAMCAAYwHQYDVR0OBBYEFPzgZvZaNZnrQB7SuB5DvJiOH4rDMB8GA1Ud -IwQYMBaAFGB7ZhpFDZfKiVAvfQTNNKj//P1LMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEEBQADggEBAJujCETO8pCdcfMyswVqterPKZjeVT6gFn0GekTWr9L6 -E1iM+BzHqx20G+9paJhcCDmP4Pf7SMwh57gz2wWqNCRsSuXpe2Deg7MfCr5BdfzM -MEi3wSYdBDOqtnjtKsu6VpcybvcxlS5G8hTuJ8f3Yom5XFrTOIpk9Te08bM0ctXV -IT1L13iT1zFmNR6j2EdJbxyt4YB/+JgkbHOsDsIadwKjJge3x2tdvILVKkgdY89Q -Mqb7HBhHFQpbDFw4JJoEmKgISF98NIdjqy2NTAB3lBt2uvUWGKMVry+U9ikAdsEV -F9PpN0121MtLKVkkrNpKoOpj3l9Usfrz0UXLxWS0cyE= ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: - 02:00:00:00:00:00:d6:78:b8:37:cf - Signature Algorithm: md5WithRSAEncryption - Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA - Validity - Not Before: Sep 15 12:00:00 1998 GMT - Not After : Jan 28 12:00:00 2009 GMT - Subject: C=BE, O=GlobalSign nv-sa, OU=Primary Class 1 CA, CN=GlobalSign Primary Class 1 CA - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:bd:20:35:47:d1:28:d6:08:a3:12:39:23:47:0d: - bd:70:21:52:0e:57:31:95:a6:34:57:6b:ec:7e:43: - 79:c3:06:52:48:cd:bc:b5:a1:99:bd:d8:1f:32:bc: - cf:d7:6e:72:6d:2e:77:22:90:82:4e:4b:8f:9a:0c: - 01:42:9a:d9:70:59:b6:9d:1f:e6:63:d1:0c:ad:1d: - 4e:f8:85:81:f9:ae:ef:9f:a6:52:61:44:79:1a:75: - 45:e0:61:56:45:6d:42:8c:3d:72:cb:a6:a4:12:b7: - 9a:f5:d6:60:d0:60:50:b3:8e:a6:a6:ec:b4:f4:12: - cd:7f:a8:ce:ef:b3:e1:85:30:fe:72:c4:e6:e7:77: - b3:9e:58:41:d6:51:83:88:07:c6:b6:69:4f:36:de: - d1:0b:48:3f:bd:d6:9f:21:74:64:6f:27:06:3e:4b: - fd:0e:a6:9b:bf:a4:48:57:8c:90:ee:89:18:0b:02: - 81:18:be:67:fe:53:60:88:27:ba:a3:73:34:4b:5a: - 56:b4:de:73:05:ed:98:96:5d:ec:4a:e7:40:fc:4b: - 09:62:eb:d0:e3:31:4f:85:d1:7a:ab:59:67:2b:fb: - 88:0f:eb:aa:83:bd:35:fd:61:27:ec:66:0e:42:57: - f7:69:c2:0c:ef:fc:6a:c2:6e:49:da:8f:41:38:ae: - 48:a9 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Subject Key Identifier: - FC:E0:66:F6:5A:35:99:EB:40:1E:D2:B8:1E:43:BC:98:8E:1F:8A:C3 - X509v3 Authority Key Identifier: - keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B - - X509v3 Basic Constraints: critical - CA:TRUE - Signature Algorithm: md5WithRSAEncryption - 9b:a3:08:44:ce:f2:90:9d:71:f3:32:b3:05:6a:b5:ea:cf:29: - 98:de:55:3e:a0:16:7d:06:7a:44:d6:af:d2:fa:13:58:8c:f8: - 1c:c7:ab:1d:b4:1b:ef:69:68:98:5c:08:39:8f:e0:f7:fb:48: - cc:21:e7:b8:33:db:05:aa:34:24:6c:4a:e5:e9:7b:60:de:83: - b3:1f:0a:be:41:75:fc:cc:30:48:b7:c1:26:1d:04:33:aa:b6: - 78:ed:2a:cb:ba:56:97:32:6e:f7:31:95:2e:46:f2:14:ee:27: - c7:f7:62:89:b9:5c:5a:d3:38:8a:64:f5:37:b4:f1:b3:34:72: - d5:d5:21:3d:4b:d7:78:93:d7:31:66:35:1e:a3:d8:47:49:6f: - 1c:ad:e1:80:7f:f8:98:24:6c:73:ac:0e:c2:1a:77:02:a3:26: - 07:b7:c7:6b:5d:bc:82:d5:2a:48:1d:63:cf:50:32:a6:fb:1c: - 18:47:15:0a:5b:0c:5c:38:24:9a:04:98:a8:08:48:5f:7c:34: - 87:63:ab:2d:8d:4c:00:77:94:1b:76:ba:f5:16:18:a3:15:af: - 2f:94:f6:29:00:76:c1:15:17:d3:e9:37:4d:76:d4:cb:4b:29: - 59:24:ac:da:4a:a0:ea:63:de:5f:54:b1:fa:f3:d1:45:cb:c5: - 64:b4:73:21 - -GlobalSign Primary Class 2 CA -============================= -MD5 Fingerprint: A9:A9:42:59:7E:BE:5A:94:E4:2C:C6:8B:1C:2A:44:B6 -PEM Data: ------BEGIN CERTIFICATE----- -MIIDrDCCApSgAwIBAgILAgAAAAAA1ni4jY0wDQYJKoZIhvcNAQEEBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05OTAxMjgxMjAw -MDBaFw0wOTAxMjgxMjAwMDBaMG0xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRswGQYDVQQLExJQcmltYXJ5IENsYXNzIDIgQ0ExJjAkBgNV -BAMTHUdsb2JhbFNpZ24gUHJpbWFyeSBDbGFzcyAyIENBMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEAkoz+7/RFjhdBbvzYvyFvqwadUsEsAJ0/joW4f0qP -vaBjKspJJ65agvR04lWS/8LRqnmitvrVnYIET8ayxl5jpzq62O7rim+ftrsoQcAi -+05IGgaS17/Xz7nZvThPOw1EblVB/vwJ29i/844h8egStfYTpdPGTJMisAL/7h0M -xKhrT3VoVujcKBJQ96gknS4kOfsJBd7lo2RJIdBofnEwkbFg4Dn0UPh6TZgAa3x5 -uk7OSuK6Nh23xTYVlZxkQupfxLr1QAW+4TpZvYSnGbjeTVNQzgfR0lHT7w2BbObn -bctdfD98zOxPgycl/3BQ9oNZdYQGZlgs3omNAKZJ+aVDdwIDAQABo2MwYTAOBgNV -HQ8BAf8EBAMCAAYwHQYDVR0OBBYEFHznsrEs3rGna+l2DOGj/U5sx7n2MB8GA1Ud -IwQYMBaAFGB7ZhpFDZfKiVAvfQTNNKj//P1LMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEEBQADggEBAGPdWc6KeaqYnU7FiWQ3foqTZy8Q6m8nw413bfJcVpQZ -GmlgMEZdj/JtRTyONZd8L7hR4uiJvYjPJxwINFyIwWgk25GF5M/7+0ON6CUBG8QO -9wBCSIYfJAhYWoyN8mtHLGiRsWlC/Q2NySbmkoamZG6Sxc4+PH1x4yOkq8fVqKnf -gqc76IbVw08Y40TQ4NzzxWgu/qUvBYTIfkdCU2uHSv4y/14+cIy3qBXMF8L/RuzQ -7C20bhIoqflA6evUZpdTqWlVwKmqsi7N0Wn0vvi7fGnuVKbbnvtapj7+mu+UUUt1 -7tjU4ZrxAlYTiQ6nQouWi4UMG4W+Jq6rppm8IvFz30I= ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: - 02:00:00:00:00:00:d6:78:b8:8d:8d - Signature Algorithm: md5WithRSAEncryption - Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA - Validity - Not Before: Jan 28 12:00:00 1999 GMT - Not After : Jan 28 12:00:00 2009 GMT - Subject: C=BE, O=GlobalSign nv-sa, OU=Primary Class 2 CA, CN=GlobalSign Primary Class 2 CA - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:92:8c:fe:ef:f4:45:8e:17:41:6e:fc:d8:bf:21: - 6f:ab:06:9d:52:c1:2c:00:9d:3f:8e:85:b8:7f:4a: - 8f:bd:a0:63:2a:ca:49:27:ae:5a:82:f4:74:e2:55: - 92:ff:c2:d1:aa:79:a2:b6:fa:d5:9d:82:04:4f:c6: - b2:c6:5e:63:a7:3a:ba:d8:ee:eb:8a:6f:9f:b6:bb: - 28:41:c0:22:fb:4e:48:1a:06:92:d7:bf:d7:cf:b9: - d9:bd:38:4f:3b:0d:44:6e:55:41:fe:fc:09:db:d8: - bf:f3:8e:21:f1:e8:12:b5:f6:13:a5:d3:c6:4c:93: - 22:b0:02:ff:ee:1d:0c:c4:a8:6b:4f:75:68:56:e8: - dc:28:12:50:f7:a8:24:9d:2e:24:39:fb:09:05:de: - e5:a3:64:49:21:d0:68:7e:71:30:91:b1:60:e0:39: - f4:50:f8:7a:4d:98:00:6b:7c:79:ba:4e:ce:4a:e2: - ba:36:1d:b7:c5:36:15:95:9c:64:42:ea:5f:c4:ba: - f5:40:05:be:e1:3a:59:bd:84:a7:19:b8:de:4d:53: - 50:ce:07:d1:d2:51:d3:ef:0d:81:6c:e6:e7:6d:cb: - 5d:7c:3f:7c:cc:ec:4f:83:27:25:ff:70:50:f6:83: - 59:75:84:06:66:58:2c:de:89:8d:00:a6:49:f9:a5: - 43:77 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Subject Key Identifier: - 7C:E7:B2:B1:2C:DE:B1:A7:6B:E9:76:0C:E1:A3:FD:4E:6C:C7:B9:F6 - X509v3 Authority Key Identifier: - keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B - - X509v3 Basic Constraints: critical - CA:TRUE - Signature Algorithm: md5WithRSAEncryption - 63:dd:59:ce:8a:79:aa:98:9d:4e:c5:89:64:37:7e:8a:93:67: - 2f:10:ea:6f:27:c3:8d:77:6d:f2:5c:56:94:19:1a:69:60:30: - 46:5d:8f:f2:6d:45:3c:8e:35:97:7c:2f:b8:51:e2:e8:89:bd: - 88:cf:27:1c:08:34:5c:88:c1:68:24:db:91:85:e4:cf:fb:fb: - 43:8d:e8:25:01:1b:c4:0e:f7:00:42:48:86:1f:24:08:58:5a: - 8c:8d:f2:6b:47:2c:68:91:b1:69:42:fd:0d:8d:c9:26:e6:92: - 86:a6:64:6e:92:c5:ce:3e:3c:7d:71:e3:23:a4:ab:c7:d5:a8: - a9:df:82:a7:3b:e8:86:d5:c3:4f:18:e3:44:d0:e0:dc:f3:c5: - 68:2e:fe:a5:2f:05:84:c8:7e:47:42:53:6b:87:4a:fe:32:ff: - 5e:3e:70:8c:b7:a8:15:cc:17:c2:ff:46:ec:d0:ec:2d:b4:6e: - 12:28:a9:f9:40:e9:eb:d4:66:97:53:a9:69:55:c0:a9:aa:b2: - 2e:cd:d1:69:f4:be:f8:bb:7c:69:ee:54:a6:db:9e:fb:5a:a6: - 3e:fe:9a:ef:94:51:4b:75:ee:d8:d4:e1:9a:f1:02:56:13:89: - 0e:a7:42:8b:96:8b:85:0c:1b:85:be:26:ae:ab:a6:99:bc:22: - f1:73:df:42 - -GlobalSign Primary Class 3 CA -============================= -MD5 Fingerprint: 98:12:A3:4B:95:A9:96:64:94:E7:50:8C:3E:E1:83:5A -PEM Data: ------BEGIN CERTIFICATE----- -MIIDrDCCApSgAwIBAgILAgAAAAAA1ni41sMwDQYJKoZIhvcNAQEEBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05OTAxMjgxMjAw -MDBaFw0wOTAxMjgxMjAwMDBaMG0xCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRswGQYDVQQLExJQcmltYXJ5IENsYXNzIDMgQ0ExJjAkBgNV -BAMTHUdsb2JhbFNpZ24gUHJpbWFyeSBDbGFzcyAzIENBMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEAkV5WZdbAwAScv0fEXHt6MQH5WJaZ4xyEL9xWj631 -WYHVQ2ZdWpOMdcqp5xHBURAUYMks1HuvxneGq3onrm+VuQvKtkb7fhr0DRRt0slO -sq7wVPZcQEw2SHToVIxlZhCnvSu3II0FSa14fdIkI1Dj8LR5mwE5/6870y3u4UmN -jS88akFFL5vjPeES5JF1ns+gPjySgW+KLhjc4PKMjP2H2Qf0QJTJTk9D32dWb70D -UHyZZ6S5PJFsAm6E1vxG98xvGD4X8O8LZBZX5qyG8UiqQ8HJJ3hzREXihX26/7Ph -+xsFpEs7mRIlAVAUaq9d6sgM7uTa7EuLXGgTldzDtTA61wIDAQABo2MwYTAOBgNV -HQ8BAf8EBAMCAAYwHQYDVR0OBBYEFMw2zBe0RZEv7c87MEh3+7UUmb7jMB8GA1Ud -IwQYMBaAFGB7ZhpFDZfKiVAvfQTNNKj//P1LMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEEBQADggEBAFeyVMy9lRdkYIm2U5EMRZLDPahsw8yyGPV4QXTYfaMn -r3cNWT6UHWn6idMMvRoB9D/o4Hcagiha5mLXt+M2yQ6feuPC08xZiQzvFovwNnci -yqS2t8FCZwFAY8znOGSHWxSWZnstFO69SW3/d9DiTlvTgMJND8q4nYGXpzRux+Oc -SOW0qkX19mVMSPISwtKTjMIVJPMrUv/jCK64btYsEs85yxIq56l7X5g9o+HMpmOJ -XH0xdfnV1l3y0NQ9355xqA7c5CCXeOZ/U6QNUU+OOwOuow1aTcN55zVYcELJXqFe -tNkio0RTNaTQz3OAxc+fVph2+RRMd4eCydx+XTTVNnU= ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: - 02:00:00:00:00:00:d6:78:b8:d6:c3 - Signature Algorithm: md5WithRSAEncryption - Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA - Validity - Not Before: Jan 28 12:00:00 1999 GMT - Not After : Jan 28 12:00:00 2009 GMT - Subject: C=BE, O=GlobalSign nv-sa, OU=Primary Class 3 CA, CN=GlobalSign Primary Class 3 CA - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:91:5e:56:65:d6:c0:c0:04:9c:bf:47:c4:5c:7b: - 7a:31:01:f9:58:96:99:e3:1c:84:2f:dc:56:8f:ad: - f5:59:81:d5:43:66:5d:5a:93:8c:75:ca:a9:e7:11: - c1:51:10:14:60:c9:2c:d4:7b:af:c6:77:86:ab:7a: - 27:ae:6f:95:b9:0b:ca:b6:46:fb:7e:1a:f4:0d:14: - 6d:d2:c9:4e:b2:ae:f0:54:f6:5c:40:4c:36:48:74: - e8:54:8c:65:66:10:a7:bd:2b:b7:20:8d:05:49:ad: - 78:7d:d2:24:23:50:e3:f0:b4:79:9b:01:39:ff:af: - 3b:d3:2d:ee:e1:49:8d:8d:2f:3c:6a:41:45:2f:9b: - e3:3d:e1:12:e4:91:75:9e:cf:a0:3e:3c:92:81:6f: - 8a:2e:18:dc:e0:f2:8c:8c:fd:87:d9:07:f4:40:94: - c9:4e:4f:43:df:67:56:6f:bd:03:50:7c:99:67:a4: - b9:3c:91:6c:02:6e:84:d6:fc:46:f7:cc:6f:18:3e: - 17:f0:ef:0b:64:16:57:e6:ac:86:f1:48:aa:43:c1: - c9:27:78:73:44:45:e2:85:7d:ba:ff:b3:e1:fb:1b: - 05:a4:4b:3b:99:12:25:01:50:14:6a:af:5d:ea:c8: - 0c:ee:e4:da:ec:4b:8b:5c:68:13:95:dc:c3:b5:30: - 3a:d7 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Subject Key Identifier: - CC:36:CC:17:B4:45:91:2F:ED:CF:3B:30:48:77:FB:B5:14:99:BE:E3 - X509v3 Authority Key Identifier: - keyid:60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B - - X509v3 Basic Constraints: critical - CA:TRUE - Signature Algorithm: md5WithRSAEncryption - 57:b2:54:cc:bd:95:17:64:60:89:b6:53:91:0c:45:92:c3:3d: - a8:6c:c3:cc:b2:18:f5:78:41:74:d8:7d:a3:27:af:77:0d:59: - 3e:94:1d:69:fa:89:d3:0c:bd:1a:01:f4:3f:e8:e0:77:1a:82: - 28:5a:e6:62:d7:b7:e3:36:c9:0e:9f:7a:e3:c2:d3:cc:59:89: - 0c:ef:16:8b:f0:36:77:22:ca:a4:b6:b7:c1:42:67:01:40:63: - cc:e7:38:64:87:5b:14:96:66:7b:2d:14:ee:bd:49:6d:ff:77: - d0:e2:4e:5b:d3:80:c2:4d:0f:ca:b8:9d:81:97:a7:34:6e:c7: - e3:9c:48:e5:b4:aa:45:f5:f6:65:4c:48:f2:12:c2:d2:93:8c: - c2:15:24:f3:2b:52:ff:e3:08:ae:b8:6e:d6:2c:12:cf:39:cb: - 12:2a:e7:a9:7b:5f:98:3d:a3:e1:cc:a6:63:89:5c:7d:31:75: - f9:d5:d6:5d:f2:d0:d4:3d:df:9e:71:a8:0e:dc:e4:20:97:78: - e6:7f:53:a4:0d:51:4f:8e:3b:03:ae:a3:0d:5a:4d:c3:79:e7: - 35:58:70:42:c9:5e:a1:5e:b4:d9:22:a3:44:53:35:a4:d0:cf: - 73:80:c5:cf:9f:56:98:76:f9:14:4c:77:87:82:c9:dc:7e:5d: - 34:d5:36:75 - -GlobalSign Root CA -================== -MD5 Fingerprint: AB:BF:EA:E3:6B:29:A6:CC:A6:78:35:99:EF:AD:2B:80 -PEM Data: ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILAgAAAAAA1ni3lAUwDQYJKoZIhvcNAQEEBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw -MDBaFw0xNDAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT -aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ -jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp -xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp -1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG -snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ -U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 -9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIABjAdBgNVHQ4EFgQU -YHtmGkUNl8qJUC99BM00qP/8/UswDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B -AQQFAAOCAQEArqqf/LfSyx9fOSkoGJ40yWxPbxrwZKJwSk8ThptgKJ7ogUmYfQq7 -5bCdPTbbjwVR/wkxKh/diXeeDy5slQTthsu0AD+EAk2AaioteAuubyuig0SDH81Q -gkwkr733pbTIWg/050deSY43lv6aiAU62cDbKYfmGZZHpzqmjIs8d/5GY6dT2iHR -rH5Jokvmw2dZL7OKDrssvamqQnw1wdh/1acxOk5jQzmvCLBhNIzTmKlDNPYPhyk7 -ncJWWJh3w/cbrPad+D6qp1RF8PX51TFl/mtYnHGzHtdS6jIX/EBgHcl5JLL2bP2o -Zg6C3ZjL2sJETy6ge/L3ayx2EYRGinij4w== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: - 02:00:00:00:00:00:d6:78:b7:94:05 - Signature Algorithm: md5WithRSAEncryption - Issuer: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA - Validity - Not Before: Sep 1 12:00:00 1998 GMT - Not After : Jan 28 12:00:00 2014 GMT - Subject: C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:da:0e:e6:99:8d:ce:a3:e3:4f:8a:7e:fb:f1:8b: - 83:25:6b:ea:48:1f:f1:2a:b0:b9:95:11:04:bd:f0: - 63:d1:e2:67:66:cf:1c:dd:cf:1b:48:2b:ee:8d:89: - 8e:9a:af:29:80:65:ab:e9:c7:2d:12:cb:ab:1c:4c: - 70:07:a1:3d:0a:30:cd:15:8d:4f:f8:dd:d4:8c:50: - 15:1c:ef:50:ee:c4:2e:f7:fc:e9:52:f2:91:7d:e0: - 6d:d5:35:30:8e:5e:43:73:f2:41:e9:d5:6a:e3:b2: - 89:3a:56:39:38:6f:06:3c:88:69:5b:2a:4d:c5:a7: - 54:b8:6c:89:cc:9b:f9:3c:ca:e5:fd:89:f5:12:3c: - 92:78:96:d6:dc:74:6e:93:44:61:d1:8d:c7:46:b2: - 75:0e:86:e8:19:8a:d5:6d:6c:d5:78:16:95:a2:e9: - c8:0a:38:eb:f2:24:13:4f:73:54:93:13:85:3a:1b: - bc:1e:34:b5:8b:05:8c:b9:77:8b:b1:db:1f:20:91: - ab:09:53:6e:90:ce:7b:37:74:b9:70:47:91:22:51: - 63:16:79:ae:b1:ae:41:26:08:c8:19:2b:d1:46:aa: - 48:d6:64:2a:d7:83:34:ff:2c:2a:c1:6c:19:43:4a: - 07:85:e7:d3:7c:f6:21:68:ef:ea:f2:52:9f:7f:93: - 90:cf - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Subject Key Identifier: - 60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B - X509v3 Basic Constraints: critical - CA:TRUE - Signature Algorithm: md5WithRSAEncryption - ae:aa:9f:fc:b7:d2:cb:1f:5f:39:29:28:18:9e:34:c9:6c:4f: - 6f:1a:f0:64:a2:70:4a:4f:13:86:9b:60:28:9e:e8:81:49:98: - 7d:0a:bb:e5:b0:9d:3d:36:db:8f:05:51:ff:09:31:2a:1f:dd: - 89:77:9e:0f:2e:6c:95:04:ed:86:cb:b4:00:3f:84:02:4d:80: - 6a:2a:2d:78:0b:ae:6f:2b:a2:83:44:83:1f:cd:50:82:4c:24: - af:bd:f7:a5:b4:c8:5a:0f:f4:e7:47:5e:49:8e:37:96:fe:9a: - 88:05:3a:d9:c0:db:29:87:e6:19:96:47:a7:3a:a6:8c:8b:3c: - 77:fe:46:63:a7:53:da:21:d1:ac:7e:49:a2:4b:e6:c3:67:59: - 2f:b3:8a:0e:bb:2c:bd:a9:aa:42:7c:35:c1:d8:7f:d5:a7:31: - 3a:4e:63:43:39:af:08:b0:61:34:8c:d3:98:a9:43:34:f6:0f: - 87:29:3b:9d:c2:56:58:98:77:c3:f7:1b:ac:f6:9d:f8:3e:aa: - a7:54:45:f0:f5:f9:d5:31:65:fe:6b:58:9c:71:b3:1e:d7:52: - ea:32:17:fc:40:60:1d:c9:79:24:b2:f6:6c:fd:a8:66:0e:82: - dd:98:cb:da:c2:44:4f:2e:a0:7b:f2:f7:6b:2c:76:11:84:46: - 8a:78:a3:e3 - -National Retail Federation by DST -================================= -MD5 Fingerprint: AD:8E:0F:9E:01:6B:A0:C5:74:D5:0C:D3:68:65:4F:1E -PEM Data: ------BEGIN CERTIFICATE----- -MIIEAjCCAuoCEQDQHkCKAAACfAAAAAMAAAABMA0GCSqGSIb3DQEBBQUAMIG+MQsw -CQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp -dHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjEjMCEGA1UE -CxMaTmF0aW9uYWwgUmV0YWlsIEZlZGVyYXRpb24xGTAXBgNVBAMTEERTVCAoTlJG -KSBSb290Q0ExITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05 -ODEyMTExNjE0MTZaFw0wODEyMDgxNjE0MTZaMIG+MQswCQYDVQQGEwJ1czENMAsG -A1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0Rp -Z2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjEjMCEGA1UECxMaTmF0aW9uYWwgUmV0 -YWlsIEZlZGVyYXRpb24xGTAXBgNVBAMTEERTVCAoTlJGKSBSb290Q0ExITAfBgkq -hkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBANmsm3f6UNPM3LlArLlyagCHI/wPliHQJq/k4rVf+tOmfSEw -LswXgo+YdPxnpKbfiJeiQin1p9sRk/teIzDCqrwi50Eb5e0l3sg/295XRXhARoOy -1Ro93w9FbdVjAnXYL8Zuq5WRdDcNy00JXNHUWzra3Q7Ia5nY1TnM34VVxJJTAqPh -94DJcKPa3DPEf6JHCBw1lh+hAxwwg/TEzP+Yw7BGRKLAv63b0oH2TJgsp14k84bK -Y9W6ffCawErQG1ju7Klnz2kCbCLAYCws0cgg6sgt+92cu8tRTNznVwQ7VJsRpTJ0 -7HQB85AVWy98LJNluWZntIGINeWekRh/gahByMsCAwEAATANBgkqhkiG9w0BAQUF -AAOCAQEAhF4LO+ygjRyb0DwdcWnkGn9kvoFlYcWMatd8AHTgemJV7SR84GHj8t0U -5hFugw7h6qmegK2aIL/gV37V0LWEYy3ZGOS9GzUsXq5hdqpnhTs44TGBHzF/5tf4 -W9K7Y3mGxIzF3gqu19H8AXT/trYNYoFnHLsm+CSA4Fxe2KSKOo99y/+So/18qTJp -B1hYYUKZUgOxOD3GcW9s8uh9BqrBfFPLGi2IT8mpp6xpb/ekH9h0gfVKv7FVt9N3 -OKdvwkrI4nOJ01dy4UMvcjz2H7f4BEpuwemUF+SXF/QOE4ZvjavoXy20/2zWorQf -7LmUaqoSTxrd9Xe1JYzyigrx/FJbWA== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - d0:1e:40:8a:00:00:02:7c:00:00:00:03:00:00:00:01 - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=National Retail Federation, CN=DST (NRF) RootCA/Email=ca@digsigtrust.com - Validity - Not Before: Dec 11 16:14:16 1998 GMT - Not After : Dec 8 16:14:16 2008 GMT - Subject: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=National Retail Federation, CN=DST (NRF) RootCA/Email=ca@digsigtrust.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:d9:ac:9b:77:fa:50:d3:cc:dc:b9:40:ac:b9:72: - 6a:00:87:23:fc:0f:96:21:d0:26:af:e4:e2:b5:5f: - fa:d3:a6:7d:21:30:2e:cc:17:82:8f:98:74:fc:67: - a4:a6:df:88:97:a2:42:29:f5:a7:db:11:93:fb:5e: - 23:30:c2:aa:bc:22:e7:41:1b:e5:ed:25:de:c8:3f: - db:de:57:45:78:40:46:83:b2:d5:1a:3d:df:0f:45: - 6d:d5:63:02:75:d8:2f:c6:6e:ab:95:91:74:37:0d: - cb:4d:09:5c:d1:d4:5b:3a:da:dd:0e:c8:6b:99:d8: - d5:39:cc:df:85:55:c4:92:53:02:a3:e1:f7:80:c9: - 70:a3:da:dc:33:c4:7f:a2:47:08:1c:35:96:1f:a1: - 03:1c:30:83:f4:c4:cc:ff:98:c3:b0:46:44:a2:c0: - bf:ad:db:d2:81:f6:4c:98:2c:a7:5e:24:f3:86:ca: - 63:d5:ba:7d:f0:9a:c0:4a:d0:1b:58:ee:ec:a9:67: - cf:69:02:6c:22:c0:60:2c:2c:d1:c8:20:ea:c8:2d: - fb:dd:9c:bb:cb:51:4c:dc:e7:57:04:3b:54:9b:11: - a5:32:74:ec:74:01:f3:90:15:5b:2f:7c:2c:93:65: - b9:66:67:b4:81:88:35:e5:9e:91:18:7f:81:a8:41: - c8:cb - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 84:5e:0b:3b:ec:a0:8d:1c:9b:d0:3c:1d:71:69:e4:1a:7f:64: - be:81:65:61:c5:8c:6a:d7:7c:00:74:e0:7a:62:55:ed:24:7c: - e0:61:e3:f2:dd:14:e6:11:6e:83:0e:e1:ea:a9:9e:80:ad:9a: - 20:bf:e0:57:7e:d5:d0:b5:84:63:2d:d9:18:e4:bd:1b:35:2c: - 5e:ae:61:76:aa:67:85:3b:38:e1:31:81:1f:31:7f:e6:d7:f8: - 5b:d2:bb:63:79:86:c4:8c:c5:de:0a:ae:d7:d1:fc:01:74:ff: - b6:b6:0d:62:81:67:1c:bb:26:f8:24:80:e0:5c:5e:d8:a4:8a: - 3a:8f:7d:cb:ff:92:a3:fd:7c:a9:32:69:07:58:58:61:42:99: - 52:03:b1:38:3d:c6:71:6f:6c:f2:e8:7d:06:aa:c1:7c:53:cb: - 1a:2d:88:4f:c9:a9:a7:ac:69:6f:f7:a4:1f:d8:74:81:f5:4a: - bf:b1:55:b7:d3:77:38:a7:6f:c2:4a:c8:e2:73:89:d3:57:72: - e1:43:2f:72:3c:f6:1f:b7:f8:04:4a:6e:c1:e9:94:17:e4:97: - 17:f4:0e:13:86:6f:8d:ab:e8:5f:2d:b4:ff:6c:d6:a2:b4:1f: - ec:b9:94:6a:aa:12:4f:1a:dd:f5:77:b5:25:8c:f2:8a:0a:f1: - fc:52:5b:58 - -TC TrustCenter, Germany, Class 1 CA -=================================== -MD5 Fingerprint: 64:3F:F8:3E:52:14:4A:59:BA:93:56:04:0B:23:02:D1 -PEM Data: ------BEGIN CERTIFICATE----- -MIIENTCCA56gAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBvDELMAkGA1UEBhMCREUx -EDAOBgNVBAgTB0hhbWJ1cmcxEDAOBgNVBAcTB0hhbWJ1cmcxOjA4BgNVBAoTMVRD -IFRydXN0Q2VudGVyIGZvciBTZWN1cml0eSBpbiBEYXRhIE5ldHdvcmtzIEdtYkgx -IjAgBgNVBAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDEgQ0ExKTAnBgkqhkiG9w0B -CQEWGmNlcnRpZmljYXRlQHRydXN0Y2VudGVyLmRlMB4XDTk4MDMwOTEzNTYzM1oX -DTA1MTIzMTEzNTYzM1owgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1idXJn -MRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig -U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVz -dENlbnRlciBDbGFzcyAxIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0 -cnVzdGNlbnRlci5kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsCnrtHaz -rte2W7Re573jsZxJBFdboavZfxMb/bphq9jncd8tAJRdUUh9I+91YoSQPAofWRF0 -L46Apf0wAj0pUs1yGkkhnLzLUo5IoWOWyBCFMGlXdEXAWobG1T3gaFd9MWokjUWX -PjF+aGYybiRt7DI2yUHK8DFEyKNhyhugNh8CAwEAAaOCAUMwggE/MEAGCWCGSAGG -+EIBAwQzFjFodHRwczovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL2NoZWNr -LXJldi5jZ2k/MEAGCWCGSAGG+EIBBAQzFjFodHRwczovL3d3dy50cnVzdGNlbnRl -ci5kZS9jZ2ktYmluL2NoZWNrLXJldi5jZ2k/MDwGCWCGSAGG+EIBBwQvFi1odHRw -czovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL1JlbmV3LmNnaT8wPgYJYIZI -AYb4QgEIBDEWL2h0dHA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvZ3VpZGVsaW5lcy9p -bmRleC5odG1sMCgGCWCGSAGG+EIBDQQbFhlUQyBUcnVzdENlbnRlciBDbGFzcyAx -IENBMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQQFAAOBgQAFQlImpAwn -AUSsXCUowkRCVAi5HcU+bFlmxLNOUKf4+JZ1oZZ16BY4oM1dbvp5pxt7HR7DALlm -vlrWYg/n8nu470zgwD9Zrjm3hAmeq/GpLmtp4q3M8up4CQUgOEJxGH7Hspfm1QIF -BlajX/GqwsRP/vfvFg+d7KqFzz0pJPEEzQ== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 2 (0x2) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 1 CA/Email=certificate@trustcenter.de - Validity - Not Before: Mar 9 13:56:33 1998 GMT - Not After : Dec 31 13:56:33 2005 GMT - Subject: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 1 CA/Email=certificate@trustcenter.de - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:b0:29:eb:b4:76:b3:ae:d7:b6:5b:b4:5e:e7:bd: - e3:b1:9c:49:04:57:5b:a1:ab:d9:7f:13:1b:fd:ba: - 61:ab:d8:e7:71:df:2d:00:94:5d:51:48:7d:23:ef: - 75:62:84:90:3c:0a:1f:59:11:74:2f:8e:80:a5:fd: - 30:02:3d:29:52:cd:72:1a:49:21:9c:bc:cb:52:8e: - 48:a1:63:96:c8:10:85:30:69:57:74:45:c0:5a:86: - c6:d5:3d:e0:68:57:7d:31:6a:24:8d:45:97:3e:31: - 7e:68:66:32:6e:24:6d:ec:32:36:c9:41:ca:f0:31: - 44:c8:a3:61:ca:1b:a0:36:1f - Exponent: 65537 (0x10001) - X509v3 extensions: - Netscape Revocation Url: - https://www.trustcenter.de/cgi-bin/check-rev.cgi? - Netscape CA Revocation Url: - https://www.trustcenter.de/cgi-bin/check-rev.cgi? - Netscape Renewal Url: - https://www.trustcenter.de/cgi-bin/Renew.cgi? - Netscape CA Policy Url: - http://www.trustcenter.de/guidelines/index.html - Netscape Comment: - TC TrustCenter Class 1 CA - Netscape Cert Type: - SSL CA, S/MIME CA, Object Signing CA - Signature Algorithm: md5WithRSAEncryption - 05:42:52:26:a4:0c:27:01:44:ac:5c:25:28:c2:44:42:54:08: - b9:1d:c5:3e:6c:59:66:c4:b3:4e:50:a7:f8:f8:96:75:a1:96: - 75:e8:16:38:a0:cd:5d:6e:fa:79:a7:1b:7b:1d:1e:c3:00:b9: - 66:be:5a:d6:62:0f:e7:f2:7b:b8:ef:4c:e0:c0:3f:59:ae:39: - b7:84:09:9e:ab:f1:a9:2e:6b:69:e2:ad:cc:f2:ea:78:09:05: - 20:38:42:71:18:7e:c7:b2:97:e6:d5:02:05:06:56:a3:5f:f1: - aa:c2:c4:4f:fe:f7:ef:16:0f:9d:ec:aa:85:cf:3d:29:24:f1: - 04:cd - -TC TrustCenter, Germany, Class 2 CA -=================================== -MD5 Fingerprint: E1:E9:96:53:77:E1:F0:38:A0:02:AB:94:C6:95:7B:FC -PEM Data: ------BEGIN CERTIFICATE----- -MIIENTCCA56gAwIBAgIBAzANBgkqhkiG9w0BAQQFADCBvDELMAkGA1UEBhMCREUx -EDAOBgNVBAgTB0hhbWJ1cmcxEDAOBgNVBAcTB0hhbWJ1cmcxOjA4BgNVBAoTMVRD -IFRydXN0Q2VudGVyIGZvciBTZWN1cml0eSBpbiBEYXRhIE5ldHdvcmtzIEdtYkgx -IjAgBgNVBAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExKTAnBgkqhkiG9w0B -CQEWGmNlcnRpZmljYXRlQHRydXN0Y2VudGVyLmRlMB4XDTk4MDMwOTEzNTc0NFoX -DTA1MTIzMTEzNTc0NFowgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1idXJn -MRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig -U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVz -dENlbnRlciBDbGFzcyAyIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0 -cnVzdGNlbnRlci5kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA2jjo7TIA -KXGDAQ2/jAHc2satOaSpii/Vi1xoX1DGYvVmvcqRIuyqHVHXPbNRsoNOXctJsPBM -VeVrLceFCzAckk6C1MoC7fdvvtzg4xS4BVPymvRWi1qehZPRtIJWrk27qEtXFrz+ -+Fie+CmNsHvNeMlPrItnDPGc+/xXm1dcTw0CAwEAAaOCAUMwggE/MEAGCWCGSAGG -+EIBAwQzFjFodHRwczovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL2NoZWNr -LXJldi5jZ2k/MEAGCWCGSAGG+EIBBAQzFjFodHRwczovL3d3dy50cnVzdGNlbnRl -ci5kZS9jZ2ktYmluL2NoZWNrLXJldi5jZ2k/MDwGCWCGSAGG+EIBBwQvFi1odHRw -czovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL1JlbmV3LmNnaT8wPgYJYIZI -AYb4QgEIBDEWL2h0dHA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvZ3VpZGVsaW5lcy9p -bmRleC5odG1sMCgGCWCGSAGG+EIBDQQbFhlUQyBUcnVzdENlbnRlciBDbGFzcyAy -IENBMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQQFAAOBgQCJG/Tv6Tji -bAz2zW9JzinM+6YP+Y0+lUbW/EcyibLIBmF60ucNEwKUC9mLVkf0u+fFX3v0Y0yu -fDTqDaKpsyyF8+P+J1QQkrCPksGYQhhwSNtOLOsNJGjk0fe+Cakph7vo2tw+o4hC -MfXR43+u2I4AWnSYsE/G/yN7XHMAeMnbTg== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 3 (0x3) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 2 CA/Email=certificate@trustcenter.de - Validity - Not Before: Mar 9 13:57:44 1998 GMT - Not After : Dec 31 13:57:44 2005 GMT - Subject: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 2 CA/Email=certificate@trustcenter.de - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:da:38:e8:ed:32:00:29:71:83:01:0d:bf:8c:01: - dc:da:c6:ad:39:a4:a9:8a:2f:d5:8b:5c:68:5f:50: - c6:62:f5:66:bd:ca:91:22:ec:aa:1d:51:d7:3d:b3: - 51:b2:83:4e:5d:cb:49:b0:f0:4c:55:e5:6b:2d:c7: - 85:0b:30:1c:92:4e:82:d4:ca:02:ed:f7:6f:be:dc: - e0:e3:14:b8:05:53:f2:9a:f4:56:8b:5a:9e:85:93: - d1:b4:82:56:ae:4d:bb:a8:4b:57:16:bc:fe:f8:58: - 9e:f8:29:8d:b0:7b:cd:78:c9:4f:ac:8b:67:0c:f1: - 9c:fb:fc:57:9b:57:5c:4f:0d - Exponent: 65537 (0x10001) - X509v3 extensions: - Netscape Revocation Url: - https://www.trustcenter.de/cgi-bin/check-rev.cgi? - Netscape CA Revocation Url: - https://www.trustcenter.de/cgi-bin/check-rev.cgi? - Netscape Renewal Url: - https://www.trustcenter.de/cgi-bin/Renew.cgi? - Netscape CA Policy Url: - http://www.trustcenter.de/guidelines/index.html - Netscape Comment: - TC TrustCenter Class 2 CA - Netscape Cert Type: - SSL CA, S/MIME CA, Object Signing CA - Signature Algorithm: md5WithRSAEncryption - 89:1b:f4:ef:e9:38:e2:6c:0c:f6:cd:6f:49:ce:29:cc:fb:a6: - 0f:f9:8d:3e:95:46:d6:fc:47:32:89:b2:c8:06:61:7a:d2:e7: - 0d:13:02:94:0b:d9:8b:56:47:f4:bb:e7:c5:5f:7b:f4:63:4c: - ae:7c:34:ea:0d:a2:a9:b3:2c:85:f3:e3:fe:27:54:10:92:b0: - 8f:92:c1:98:42:18:70:48:db:4e:2c:eb:0d:24:68:e4:d1:f7: - be:09:a9:29:87:bb:e8:da:dc:3e:a3:88:42:31:f5:d1:e3:7f: - ae:d8:8e:00:5a:74:98:b0:4f:c6:ff:23:7b:5c:73:00:78:c9: - db:4e - -TC TrustCenter, Germany, Class 3 CA -=================================== -MD5 Fingerprint: 62:AB:B6:15:4A:B4:B0:16:77:FF:AE:CF:16:16:2B:8C -PEM Data: ------BEGIN CERTIFICATE----- -MIIENTCCA56gAwIBAgIBBDANBgkqhkiG9w0BAQQFADCBvDELMAkGA1UEBhMCREUx -EDAOBgNVBAgTB0hhbWJ1cmcxEDAOBgNVBAcTB0hhbWJ1cmcxOjA4BgNVBAoTMVRD -IFRydXN0Q2VudGVyIGZvciBTZWN1cml0eSBpbiBEYXRhIE5ldHdvcmtzIEdtYkgx -IjAgBgNVBAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0ExKTAnBgkqhkiG9w0B -CQEWGmNlcnRpZmljYXRlQHRydXN0Y2VudGVyLmRlMB4XDTk4MDMwOTEzNTg0OVoX -DTA1MTIzMTEzNTg0OVowgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1idXJn -MRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig -U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVz -dENlbnRlciBDbGFzcyAzIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0 -cnVzdGNlbnRlci5kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtrTBNQUu -DY3soEBqHA4nplCSa1AbB94u53bM4Nr8hKhejGNqK03ZTgJ2EcEL8o15ygC28bAO -1/ukFz2vq2l6lie/rzOhmipZqsS1NwjyEqUxtkP1MpZxKCirjSiG37vu4wx9MNbD -UquPXSeca8Cj5wVrV0lEs27qZM/SjnpQd3cCAwEAAaOCAUMwggE/MEAGCWCGSAGG -+EIBAwQzFjFodHRwczovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL2NoZWNr -LXJldi5jZ2k/MEAGCWCGSAGG+EIBBAQzFjFodHRwczovL3d3dy50cnVzdGNlbnRl -ci5kZS9jZ2ktYmluL2NoZWNrLXJldi5jZ2k/MDwGCWCGSAGG+EIBBwQvFi1odHRw -czovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL1JlbmV3LmNnaT8wPgYJYIZI -AYb4QgEIBDEWL2h0dHA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvZ3VpZGVsaW5lcy9p -bmRleC5odG1sMCgGCWCGSAGG+EIBDQQbFhlUQyBUcnVzdENlbnRlciBDbGFzcyAz -IENBMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQQFAAOBgQCEhlBieaAn -4SW6CbE0DxMJ7S3Ko+aV+TCszRelzj2Xnex8jyZ/wGHKIveR3Tw2WZqbdfe85Mjt -7AK2IqfzLPHIknhttu7FKOyAIE+5awjnL6eGHn2xCJ9UuQA3PKDYGsiWHPQyFJw5 -lbfu8ENJwl7oy3lvU7/7SYos2EvZVfIScA== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 4 (0x4) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 3 CA/Email=certificate@trustcenter.de - Validity - Not Before: Mar 9 13:58:49 1998 GMT - Not After : Dec 31 13:58:49 2005 GMT - Subject: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 3 CA/Email=certificate@trustcenter.de - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:b6:b4:c1:35:05:2e:0d:8d:ec:a0:40:6a:1c:0e: - 27:a6:50:92:6b:50:1b:07:de:2e:e7:76:cc:e0:da: - fc:84:a8:5e:8c:63:6a:2b:4d:d9:4e:02:76:11:c1: - 0b:f2:8d:79:ca:00:b6:f1:b0:0e:d7:fb:a4:17:3d: - af:ab:69:7a:96:27:bf:af:33:a1:9a:2a:59:aa:c4: - b5:37:08:f2:12:a5:31:b6:43:f5:32:96:71:28:28: - ab:8d:28:86:df:bb:ee:e3:0c:7d:30:d6:c3:52:ab: - 8f:5d:27:9c:6b:c0:a3:e7:05:6b:57:49:44:b3:6e: - ea:64:cf:d2:8e:7a:50:77:77 - Exponent: 65537 (0x10001) - X509v3 extensions: - Netscape Revocation Url: - https://www.trustcenter.de/cgi-bin/check-rev.cgi? - Netscape CA Revocation Url: - https://www.trustcenter.de/cgi-bin/check-rev.cgi? - Netscape Renewal Url: - https://www.trustcenter.de/cgi-bin/Renew.cgi? - Netscape CA Policy Url: - http://www.trustcenter.de/guidelines/index.html - Netscape Comment: - TC TrustCenter Class 3 CA - Netscape Cert Type: - SSL CA, S/MIME CA, Object Signing CA - Signature Algorithm: md5WithRSAEncryption - 84:86:50:62:79:a0:27:e1:25:ba:09:b1:34:0f:13:09:ed:2d: - ca:a3:e6:95:f9:30:ac:cd:17:a5:ce:3d:97:9d:ec:7c:8f:26: - 7f:c0:61:ca:22:f7:91:dd:3c:36:59:9a:9b:75:f7:bc:e4:c8: - ed:ec:02:b6:22:a7:f3:2c:f1:c8:92:78:6d:b6:ee:c5:28:ec: - 80:20:4f:b9:6b:08:e7:2f:a7:86:1e:7d:b1:08:9f:54:b9:00: - 37:3c:a0:d8:1a:c8:96:1c:f4:32:14:9c:39:95:b7:ee:f0:43: - 49:c2:5e:e8:cb:79:6f:53:bf:fb:49:8a:2c:d8:4b:d9:55:f2: - 12:70 - -TC TrustCenter, Germany, Class 4 CA -=================================== -MD5 Fingerprint: BF:AF:EC:C4:DA:F9:30:F9:CA:35:CA:25:E4:3F:8D:89 -PEM Data: ------BEGIN CERTIFICATE----- -MIIENTCCA56gAwIBAgIBBTANBgkqhkiG9w0BAQQFADCBvDELMAkGA1UEBhMCREUx -EDAOBgNVBAgTB0hhbWJ1cmcxEDAOBgNVBAcTB0hhbWJ1cmcxOjA4BgNVBAoTMVRD -IFRydXN0Q2VudGVyIGZvciBTZWN1cml0eSBpbiBEYXRhIE5ldHdvcmtzIEdtYkgx -IjAgBgNVBAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDQgQ0ExKTAnBgkqhkiG9w0B -CQEWGmNlcnRpZmljYXRlQHRydXN0Y2VudGVyLmRlMB4XDTk4MDMwOTE0MDAyMFoX -DTA1MTIzMTE0MDAyMFowgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1idXJn -MRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig -U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVz -dENlbnRlciBDbGFzcyA0IENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0 -cnVzdGNlbnRlci5kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvy9j1jZ7 -sg3TVfVkbOYlXca0yBS6JTiD61ZipVWpZaP0I5nCS7nQzVRnpqOgo6kzK3bkva13 -su1cEnTDxbYPUppyk0OQYmYVD0Wl3eDduG9AblfBeXKjYKq6dh0SiVNa/AK+4QkT -xUov3D2LGa3XiyRF+0z0zVw1HSlMUfPybFUCAwEAAaOCAUMwggE/MEAGCWCGSAGG -+EIBAwQzFjFodHRwczovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL2NoZWNr -LXJldi5jZ2k/MEAGCWCGSAGG+EIBBAQzFjFodHRwczovL3d3dy50cnVzdGNlbnRl -ci5kZS9jZ2ktYmluL2NoZWNrLXJldi5jZ2k/MDwGCWCGSAGG+EIBBwQvFi1odHRw -czovL3d3dy50cnVzdGNlbnRlci5kZS9jZ2ktYmluL1JlbmV3LmNnaT8wPgYJYIZI -AYb4QgEIBDEWL2h0dHA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvZ3VpZGVsaW5lcy9p -bmRleC5odG1sMCgGCWCGSAGG+EIBDQQbFhlUQyBUcnVzdENlbnRlciBDbGFzcyA0 -IENBMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQQFAAOBgQCUaBQbJZ4p -mbGyI9JEs5Wf0Z5VBN3jL4IzVZZ3GZ0rnmUc+orjx48l/LEeVUYPj/9PNy+kdlmm -ZOvVFnC93ZUzDKQNJOtkULRDEfJDvg1xmCLsAa/s98dcccN1kVgZ6N2g9LTxvBBK -85O0Bkm7H2bSvXRH4Zr569erbR+64R0s2g== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 5 (0x5) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 4 CA/Email=certificate@trustcenter.de - Validity - Not Before: Mar 9 14:00:20 1998 GMT - Not After : Dec 31 14:00:20 2005 GMT - Subject: C=DE, ST=Hamburg, L=Hamburg, O=TC TrustCenter for Security in Data Networks GmbH, OU=TC TrustCenter Class 4 CA/Email=certificate@trustcenter.de - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:bf:2f:63:d6:36:7b:b2:0d:d3:55:f5:64:6c:e6: - 25:5d:c6:b4:c8:14:ba:25:38:83:eb:56:62:a5:55: - a9:65:a3:f4:23:99:c2:4b:b9:d0:cd:54:67:a6:a3: - a0:a3:a9:33:2b:76:e4:bd:ad:77:b2:ed:5c:12:74: - c3:c5:b6:0f:52:9a:72:93:43:90:62:66:15:0f:45: - a5:dd:e0:dd:b8:6f:40:6e:57:c1:79:72:a3:60:aa: - ba:76:1d:12:89:53:5a:fc:02:be:e1:09:13:c5:4a: - 2f:dc:3d:8b:19:ad:d7:8b:24:45:fb:4c:f4:cd:5c: - 35:1d:29:4c:51:f3:f2:6c:55 - Exponent: 65537 (0x10001) - X509v3 extensions: - Netscape Revocation Url: - https://www.trustcenter.de/cgi-bin/check-rev.cgi? - Netscape CA Revocation Url: - https://www.trustcenter.de/cgi-bin/check-rev.cgi? - Netscape Renewal Url: - https://www.trustcenter.de/cgi-bin/Renew.cgi? - Netscape CA Policy Url: - http://www.trustcenter.de/guidelines/index.html - Netscape Comment: - TC TrustCenter Class 4 CA - Netscape Cert Type: - SSL CA, S/MIME CA, Object Signing CA - Signature Algorithm: md5WithRSAEncryption - 94:68:14:1b:25:9e:29:99:b1:b2:23:d2:44:b3:95:9f:d1:9e: - 55:04:dd:e3:2f:82:33:55:96:77:19:9d:2b:9e:65:1c:fa:8a: - e3:c7:8f:25:fc:b1:1e:55:46:0f:8f:ff:4f:37:2f:a4:76:59: - a6:64:eb:d5:16:70:bd:dd:95:33:0c:a4:0d:24:eb:64:50:b4: - 43:11:f2:43:be:0d:71:98:22:ec:01:af:ec:f7:c7:5c:71:c3: - 75:91:58:19:e8:dd:a0:f4:b4:f1:bc:10:4a:f3:93:b4:06:49: - bb:1f:66:d2:bd:74:47:e1:9a:f9:eb:d7:ab:6d:1f:ba:e1:1d: - 2c:da - -Thawte Personal Basic CA -======================== -MD5 Fingerprint: E6:0B:D2:C9:CA:2D:88:DB:1A:71:0E:4B:78:EB:02:41 -PEM Data: ------BEGIN CERTIFICATE----- -MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFBlcnNvbmFsIEJhc2lj -IENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNpY0B0aGF3dGUuY29tMB4X -DTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgcsxCzAJBgNVBAYTAlpBMRUw -EwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UE -ChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2Vy -dmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBD -QTEoMCYGCSqGSIb3DQEJARYZcGVyc29uYWwtYmFzaWNAdGhhd3RlLmNvbTCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLyTU23AUE+CFeZIlDWmWr5vQvoPR+53 -dXLdjUmbllegeNTKP1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJl+A1OFdK -wPQIcOk8RHtQfmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7 -G1sY0b8jkyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQF -AAOBgQAt4plrsD16iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7 -c8a914phXAPjLSeoF+CEhULcXpvGt7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95B21P -9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN92NWod8isQ== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 0 (0x0) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Basic CA/Email=personal-basic@thawte.com - Validity - Not Before: Jan 1 00:00:00 1996 GMT - Not After : Dec 31 23:59:59 2020 GMT - Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Basic CA/Email=personal-basic@thawte.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:bc:bc:93:53:6d:c0:50:4f:82:15:e6:48:94:35: - a6:5a:be:6f:42:fa:0f:47:ee:77:75:72:dd:8d:49: - 9b:96:57:a0:78:d4:ca:3f:51:b3:69:0b:91:76:17: - 22:07:97:6a:c4:51:93:4b:e0:8d:ef:37:95:a1:0c: - 4d:da:34:90:1d:17:89:97:e0:35:38:57:4a:c0:f4: - 08:70:e9:3c:44:7b:50:7e:61:9a:90:e3:23:d3:88: - 11:46:27:f5:0b:07:0e:bb:dd:d1:7f:20:0a:88:b9: - 56:0b:2e:1c:80:da:f1:e3:9e:29:ef:14:bd:0a:44: - fb:1b:5b:18:d1:bf:23:93:21 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE - Signature Algorithm: md5WithRSAEncryption - 2d:e2:99:6b:b0:3d:7a:89:d7:59:a2:94:01:1f:2b:dd:12:4b: - 53:c2:ad:7f:aa:a7:00:5c:91:40:57:25:4a:38:aa:84:70:b9: - d9:80:0f:a5:7b:5c:fb:73:c6:bd:d7:8a:61:5c:03:e3:2d:27: - a8:17:e0:84:85:42:dc:5e:9b:c6:b7:b2:6d:bb:74:af:e4:3f: - cb:a7:b7:b0:e0:5d:be:78:83:25:94:d2:db:81:0f:79:07:6d: - 4f:f4:39:15:5a:52:01:7b:de:32:d6:4d:38:f6:12:5c:06:50: - df:05:5b:bd:14:4b:a1:df:29:ba:3b:41:8d:f7:63:56:a1:df: - 22:b1 - -Thawte Personal Freemail CA -=========================== -MD5 Fingerprint: 1E:74:C3:86:3C:0C:35:C5:3E:C2:7F:EF:3C:AA:3C:D9 -PEM Data: ------BEGIN CERTIFICATE----- -MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVt -YWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUu -Y29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgdExCzAJBgNVBAYT -AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEa -MBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBG -cmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhh -d3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1GnX1LCUZFtx6UfY -DFG26nKRsIRefS0Nj3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6WZBrCFG5E -rHzmj+hND3EfQDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVq -uzgkCGqYx7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zAN -BgkqhkiG9w0BAQQFAAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjP -MPuoSpaKH2JCI4wXD/S6ZJwXrEcp352YXtJsYHFcoqzceePnbgBHH7UNKOgCneSa -/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK/qarigd1iwzdUYRr5PjRznei -gQ== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 0 (0x0) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Freemail CA/Email=personal-freemail@thawte.com - Validity - Not Before: Jan 1 00:00:00 1996 GMT - Not After : Dec 31 23:59:59 2020 GMT - Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Freemail CA/Email=personal-freemail@thawte.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:d4:69:d7:d4:b0:94:64:5b:71:e9:47:d8:0c:51: - b6:ea:72:91:b0:84:5e:7d:2d:0d:8f:7b:12:df:85: - 25:75:28:74:3a:42:2c:63:27:9f:95:7b:4b:ef:7e: - 19:87:1d:86:ea:a3:dd:b9:ce:96:64:1a:c2:14:6e: - 44:ac:7c:e6:8f:e8:4d:0f:71:1f:40:38:a6:00:a3: - 87:78:f6:f9:94:86:5e:ad:ea:c0:5e:76:eb:d9:14: - a3:5d:6e:7a:7c:0c:a5:4b:55:7f:06:19:29:7f:9e: - 9a:26:d5:6a:bb:38:24:08:6a:98:c7:b1:da:a3:98: - 91:fd:79:db:e5:5a:c4:1c:b9 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE - Signature Algorithm: md5WithRSAEncryption - c7:ec:92:7e:4e:f8:f5:96:a5:67:62:2a:a4:f0:4d:11:60:d0: - 6f:8d:60:58:61:ac:26:bb:52:35:5c:08:cf:30:fb:a8:4a:96: - 8a:1f:62:42:23:8c:17:0f:f4:ba:64:9c:17:ac:47:29:df:9d: - 98:5e:d2:6c:60:71:5c:a2:ac:dc:79:e3:e7:6e:00:47:1f:b5: - 0d:28:e8:02:9d:e4:9a:fd:13:f4:a6:d9:7c:b1:f8:dc:5f:23: - 26:09:91:80:73:d0:14:1b:de:43:a9:83:25:f2:e6:9c:2f:15: - ca:fe:a6:ab:8a:07:75:8b:0c:dd:51:84:6b:e4:f8:d1:ce:77: - a2:81 - -Thawte Personal Premium CA -========================== -MD5 Fingerprint: 3A:B2:DE:22:9A:20:93:49:F9:ED:C8:D2:8A:E7:68:0D -PEM Data: ------BEGIN CERTIFICATE----- -MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMaVGhhd3RlIFBlcnNvbmFsIFByZW1p -dW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXByZW1pdW1AdGhhd3RlLmNv -bTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5NTlaMIHPMQswCQYDVQQGEwJa -QTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAY -BgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9u -IFNlcnZpY2VzIERpdmlzaW9uMSMwIQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJl -bWl1bSBDQTEqMCgGCSqGSIb3DQEJARYbcGVyc29uYWwtcHJlbWl1bUB0aGF3dGUu -Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJZtn4B0TPuYwu8KHvE0Vs -Bd/eJxZRNkERbGw77f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ8/JE2dWI -Et12TfIa/G8jHnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYD -ZicRFTuqW/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqG -SIb3DQEBBAUAA4GBAGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIH -b4Vnjt4rueIXsDqg8A6iAJrf8xQVbrvIhVqYgPn/vnQdPfP+MCXRNzRn+qVxeTBh -KXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+WjS9Q2wfD6h+rM+D1KzGJ ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 0 (0x0) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Premium CA/Email=personal-premium@thawte.com - Validity - Not Before: Jan 1 00:00:00 1996 GMT - Not After : Dec 31 23:59:59 2020 GMT - Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting, OU=Certification Services Division, CN=Thawte Personal Premium CA/Email=personal-premium@thawte.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:c9:66:d9:f8:07:44:cf:b9:8c:2e:f0:a1:ef:13: - 45:6c:05:df:de:27:16:51:36:41:11:6c:6c:3b:ed: - fe:10:7d:12:9e:e5:9b:42:9a:fe:60:31:c3:66:b7: - 73:3a:48:ae:4e:d0:32:37:94:88:b5:0d:b6:d9:f3: - f2:44:d9:d5:88:12:dd:76:4d:f2:1a:fc:6f:23:1e: - 7a:f1:d8:98:45:4e:07:10:ef:16:42:d0:43:75:6d: - 4a:de:e2:aa:c9:31:ff:1f:00:70:7c:66:cf:10:25: - 08:ba:fa:ee:00:e9:46:03:66:27:11:15:3b:aa:5b: - f2:98:dd:36:42:b2:da:88:75 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE - Signature Algorithm: md5WithRSAEncryption - 69:36:89:f7:34:2a:33:72:2f:6d:3b:d4:22:b2:b8:6f:9a:c5: - 36:66:0e:1b:3c:a1:b1:75:5a:e6:fd:35:d3:f8:a8:f2:07:6f: - 85:67:8e:de:2b:b9:e2:17:b0:3a:a0:f0:0e:a2:00:9a:df:f3: - 14:15:6e:bb:c8:85:5a:98:80:f9:ff:be:74:1d:3d:f3:fe:30: - 25:d1:37:34:67:fa:a5:71:79:30:61:29:72:c0:e0:2c:4c:fb: - 56:e4:3a:a8:6f:e5:32:59:52:db:75:28:50:59:0c:f8:0b:19: - e4:ac:d9:af:96:8d:2f:50:db:07:c3:ea:1f:ab:33:e0:f5:2b: - 31:89 - -Thawte Premium Server CA -======================== -MD5 Fingerprint: 06:9F:69:79:16:66:90:02:1B:8C:8C:A2:C3:07:6F:3A -PEM Data: ------BEGIN CERTIFICATE----- -MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy -dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t -MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB -MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG -A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl -cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE -VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ -ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR -uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG -9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI -hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM -pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 1 (0x1) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Premium Server CA/Email=premium-server@thawte.com - Validity - Not Before: Aug 1 00:00:00 1996 GMT - Not After : Dec 31 23:59:59 2020 GMT - Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Premium Server CA/Email=premium-server@thawte.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:d2:36:36:6a:8b:d7:c2:5b:9e:da:81:41:62:8f: - 38:ee:49:04:55:d6:d0:ef:1c:1b:95:16:47:ef:18: - 48:35:3a:52:f4:2b:6a:06:8f:3b:2f:ea:56:e3:af: - 86:8d:9e:17:f7:9e:b4:65:75:02:4d:ef:cb:09:a2: - 21:51:d8:9b:d0:67:d0:ba:0d:92:06:14:73:d4:93: - cb:97:2a:00:9c:5c:4e:0c:bc:fa:15:52:fc:f2:44: - 6e:da:11:4a:6e:08:9f:2f:2d:e3:f9:aa:3a:86:73: - b6:46:53:58:c8:89:05:bd:83:11:b8:73:3f:aa:07: - 8d:f4:42:4d:e7:40:9d:1c:37 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE - Signature Algorithm: md5WithRSAEncryption - 26:48:2c:16:c2:58:fa:e8:16:74:0c:aa:aa:5f:54:3f:f2:d7: - c9:78:60:5e:5e:6e:37:63:22:77:36:7e:b2:17:c4:34:b9:f5: - 08:85:fc:c9:01:38:ff:4d:be:f2:16:42:43:e7:bb:5a:46:fb: - c1:c6:11:1f:f1:4a:b0:28:46:c9:c3:c4:42:7d:bc:fa:ab:59: - 6e:d5:b7:51:88:11:e3:a4:85:19:6b:82:4c:a4:0c:12:ad:e9: - a4:ae:3f:f1:c3:49:65:9a:8c:c5:c8:3e:25:b7:94:99:bb:92: - 32:71:07:f0:86:5e:ed:50:27:a6:0d:a6:23:f9:bb:cb:a6:07: - 14:42 - -Thawte Server CA -================ -MD5 Fingerprint: C5:70:C4:A2:ED:53:78:0C:C8:10:53:81:64:CB:D0:1D -PEM Data: ------BEGIN CERTIFICATE----- -MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm -MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx -MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT -DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 -dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl -cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 -DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD -gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 -yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX -L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj -EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG -7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e -QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ -qdq5snUb9kLy78fyGPmJvKP/iiMucEc= ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 3 (0x2) - Serial Number: 1 (0x1) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Server CA/Email=server-certs@thawte.com - Validity - Not Before: Aug 1 00:00:00 1996 GMT - Not After : Dec 31 23:59:59 2020 GMT - Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Server CA/Email=server-certs@thawte.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:d3:a4:50:6e:c8:ff:56:6b:e6:cf:5d:b6:ea:0c: - 68:75:47:a2:aa:c2:da:84:25:fc:a8:f4:47:51:da: - 85:b5:20:74:94:86:1e:0f:75:c9:e9:08:61:f5:06: - 6d:30:6e:15:19:02:e9:52:c0:62:db:4d:99:9e:e2: - 6a:0c:44:38:cd:fe:be:e3:64:09:70:c5:fe:b1:6b: - 29:b6:2f:49:c8:3b:d4:27:04:25:10:97:2f:e7:90: - 6d:c0:28:42:99:d7:4c:43:de:c3:f5:21:6d:54:9f: - 5d:c3:58:e1:c0:e4:d9:5b:b0:b8:dc:b4:7b:df:36: - 3a:c2:b5:66:22:12:d6:87:0d - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE - Signature Algorithm: md5WithRSAEncryption - 07:fa:4c:69:5c:fb:95:cc:46:ee:85:83:4d:21:30:8e:ca:d9: - a8:6f:49:1a:e6:da:51:e3:60:70:6c:84:61:11:a1:1a:c8:48: - 3e:59:43:7d:4f:95:3d:a1:8b:b7:0b:62:98:7a:75:8a:dd:88: - 4e:4e:9e:40:db:a8:cc:32:74:b9:6f:0d:c6:e3:b3:44:0b:d9: - 8a:6f:9a:29:9b:99:18:28:3b:d1:e3:40:28:9a:5a:3c:d5:b5: - e7:20:1b:8b:ca:a4:ab:8d:e9:51:d9:e2:4c:2c:59:a9:da:b9: - b2:75:1b:f6:42:f2:ef:c7:f2:18:f9:89:bc:a3:ff:8a:23:2e: - 70:47 - -Thawte Universal CA Root -======================== -MD5 Fingerprint: 17:AF:71:16:52:7B:73:65:22:05:29:28:84:71:9D:13 -PEM Data: ------BEGIN CERTIFICATE----- -MIIRIjCCCQoCAQAwDQYJKoZIhvcNAQEFBQAwVzEPMA0GA1UEChMGVGhhd3RlMSEw -HwYDVQQLExhUaGF3dGUgVW5pdmVyc2FsIENBIFJvb3QxITAfBgNVBAMTGFRoYXd0 -ZSBVbml2ZXJzYWwgQ0EgUm9vdDAeFw05OTEyMDUxMzU2MDVaFw0zNzA0MDMxMzU2 -MDVaMFcxDzANBgNVBAoTBlRoYXd0ZTEhMB8GA1UECxMYVGhhd3RlIFVuaXZlcnNh -bCBDQSBSb290MSEwHwYDVQQDExhUaGF3dGUgVW5pdmVyc2FsIENBIFJvb3Qwgggi -MA0GCSqGSIb3DQEBAQUAA4IIDwAwgggKAoIIAQDiiQVtw3+tpok6/7vHzZ03seHS -IR6bYSoV53tXT1U80Lv52T0+przstK1TmhYC6wty/Yryj0QFxevT5b22RDnm+0e/ -ap4KlRjiaOLWltYhrYj99Rf109pCpZDtKZWWdTrah6HU9dOH3gVipuNmdJLPpby7 -32j/cXVWQVk16zNaZlHy0qMKwYzOc1wRby2MlYyRsf3P5a1WlcyFkoOQVUHJwnft -+aN0QgpoCPPQ0WX9Zyw0/yR/53nIBzslV92kDJg9vuDMGWXb8lSir0LUneKuhCMl -CTMStWoedsSL2UkAbF66H/Ib2mfKJ6qjRCMbg4LO8qsz7VSk3MmrWWXROA7BPhtn -j9Z1AeBVIt12d+yO3fTPeSJtuVcD9ZkIpzw+NPvEF64jWM0k8yPKagIolAGBNLRs -a66LGsOj0gk8FlT1Nl8k459KoeJkxhbDpoF6JDZHjsFeDvv5FXgE1g5Z2Z1YZmLS -lCkyMsh4uWb2tVbhbMYUS5ZSWZECJGpVR9c/tiMaYHeXLuJAr54EV56tEcXJQ3Dv -SLRerBxpLi6C1VuLvoK+GRRe5w0ix1Eb/x6b8TCPcTEGszQnj196ZoJPii0Tq0LP -IVael45mNg+Wm+Ur9AKpKmqMLMTDuHAsLSkeP1B3Hm0qVORVCpE4ocW1ZqJ2Wu4P -v7Rn4ShuD+E2oYLRv9R34cRnMpN4yOdUU/4jeeZozCaQ9hBjXSpvkS2kczJRIfK7 -Fd+qJAhIBt6hnia/uoO/fKTIoIy90v+8hGknEyQYxEUYIyZeGBTKLoiHYqNT5iG3 -uIV7moW7FSZy+Ln3anQPST+SvqkFt5knv78JF0uZTK0REHzfdDH2jyZfqoiuOFfI -VS3T+9gbUZm+JRs6usB9G+3O0km5z/PFfYmQgdhpSCAQo/jvklEYMosRGMA/G4VW -zlfJ8oJkxt8CCS5KES+xJ203UvDwFmHxZ43fh3Kvh9rP+1CUbtSUheuKLOoh9ZZK -RNXgzmp0RE3QBdOHFe020KSLZlVwk+5HBsF+LqUYeWfzKIXxcPcOg6R+VJ5adjLL -ZRu4zfvIKAPSVJHRp8WFQwgXdqXmL2cI2KGigi0M+MGvY9RQd21rRkpBhdWQX3kt -xOzXEYdAiuFo4mT4VTL7b5Ms2nfZIcEX5TYsTn6Qf6yUKzJnvjhQdriuQbnXIcUJ -TGDIo1HENJtXN9/LyTNXi+v7dp8ZTcVqHypFrivtL42npQDLBPolYi50SBvKKoy6 -27Z+9rsCfKnD21h4ob/w/hoQVRHO6GlOlmXGFwPWB2iMVIKuHCJVP/H0CZcowEb3 -TgslHfcH1wkdOhhXODvoMwbnj3hGHlv1BrbsuKYN8boTS9YYIN1pM0ozFa64yJiK -JyyTvC377jO/ZuZNurabBlVgl0u8RM1+9KHYqi/AAighFmJ42whU8vz0NOPGjxxD -V86QGkvcLjsokYk/eto1HY4s7kns9DOtyVOojJ8EUz4kHFLJEvliV6O87izrQHwg -I3ArlflzF4rRwRxpprc4mmf3cB16WgxAz2IPhTzCAk5+tfbFKimEsx83KuGqckLE -7Wsaj5IcXb7R8lvyq6qp0vW4pEErK5FuEkjKmNg3jcjtADC1tgROfpzahOzA+nvl -HYikU0awlORcG6ElLA9IUneXCWzsWxgzgwLlgn7NhSEwEf0nT8/kHuw/pVds6Sow -GSqI5cNpOKtvOXF/hOFBw+HMKokgUi6DD2w5P0stFqwt8CSsAHP0m7MGPwW4FIUf -q55cPJ5inQ5tO4AJ/ALqopd0ysf541bhw8qlpprAkOAkElPSwovavu0CQ15n4YmY -ee7LqsrDG9znpUalfGsWh7ZaKNfbJzxepb22Ud0fQ887Jsg6jSVhwUn0PBvJROqv -HMIrlAEqDjDRW4srR+XD0QQDmw45LNYn1OZwWtl1zyrYyQAF5BOI7MM5+4dhMDZD -A8ienKIGwi/F/PCAY7FUBKBMqS7G9XZ62NDk1JQR5RW1eAbcuICPmakgMz0QhUxl -Cco+WF5gk5qqYl3AUQYcXWCgDZxLQ/anFiGkh6rywS7ukjC4nt/fEAGLhglw2Gyo -t1AeFpa092f9NTohkCoyxwB7TQcQCbkvc9gYfmeZBE8G/FDHhZudQJ2zljf6pdyy -ck7vTgks/ZH9Tfe7pqE+q3uiA0CmqVUn4vr5Gc6HdarxdTbz87iR+JHDi3UTjkxl -mhY5auU06HqWWX81sAD9W2n8Qyb69Shu/ofZfiT7tKCCblSi/66/YrT0cgHCy5hH -mOFMtReAgM6PpijuHkVq+9/xHfxaO9bq9GwdYklXO4qPhurwUwTOnBZo/7q5/IgP -R/cCRHJAuMo7LVOd3DxWjFl7aBosjXG7bADHGs5vQJKxoy8P2UTyo3Aunu4OrjLQ -Oz6LB+rmebNcKeJ9a6he+Vox6AiWoowDmEbxuH2QVCbtdmL+numabl7JScdcNFMp -VNns5EbhgDt12d/7edWH8bqe6xnOTFJz5luHriVPOXnMxrj5EHvs8JtxpAWg0ynT -Tn8f9C0oeMxVlXsekS/MVhhzi7LbvGkH5tDYT+2i/1iFo23gSlO3Z32NDFxbe3co -AjVEegTTKEPIazAXXTK4KTW6dto7FEp2GFik+JI8nk0zb0ZrCNkxSGjd9PskVjSy -z2lmvkjSimYizfJpzcJTE0UpQSLWXZgftqSyo8LuAi9RG9yDpOxwJajUCGEyb+Sh -gS58Y3L6KWW8cETPXQIDAQABMA0GCSqGSIb3DQEBBQUAA4IIAQBVmjRqIgZpCUUz -x66pXMcJTpuGvEGQ1JRS9s0jKZRLIs3ovf6dzVLyve2rh8mrq0YEtL2iPyIwR1DA -S4x2DwP1ktKxLcR6NZzJc4frpp/eD3ON03+Z2LqPb8Tzvhqui6KUNpDi5euNBfT8 -Zd+V8cSUTRdW1588j1A853e/lYYmZPtq/8ba6YyuQrtp5TPG2OkNxlUhScEMtKP5 -m0tc3oNPQQPOKnloOH3wVEkg9bYQ/wjcM2aWm/8G3gCe185WQ5pR/HDN9vBRo7fN -tFyFYs1xt8YrIyvdw25AQvo3/zcc9npXlIeFI9fUycdfwU0vyQ3XXOycJe6eMIKR -lnK4dR34CWhXl7ItS+4l7HokKe5y1JwT26vcAwrYShTJCFdEXaG1U4A08hSXz1Le -og6KEOkU79BgvmGh8SVd1RhzP5MQypbus0DS26NVz1dapQ5PdUff6veQmm31cC4d -FBw3ZARZULDccoZvnDc9XSivc1Xv0u4kdHQT79zbMUn7P2P10wg+M6XnnQreUyxR -jmfbm0FlQVC91KSWbIe8EuCUx9PA5MtzWACD4awnhdadU51cvQo+A0OcDJH1bXv4 -QHJ1qxF2kSvhxqofcGl2cBUJ/pPQ1i23FWqbZ1y0aZ8lpn2K+30iqXHyzk6MuCEt -3v5BcQ3/nexzprsHT4gOWEcufqnCx3jdunqeTuAwTmNvhdQgQen6/kNF5/uverLO -pAUdIppYht/kzkyp/tgWpW/72M5We/XWIO/kR81jJP+5vvFIo8EBcua9wK3tJg3K -NJ/8Ai0gTwUgriE9DMIgPD/wBITcz4n9uSWRjtBD5rMgq1wt1UCeoEvY9LLMffFY -Co6H7YisNpbkVqARivKa0LNXozS7Gas44XRrIsQxzgHVGzbjHjhMM5PfQONZV06s -bnseWj3FHVusyBCCNQIisvx16BCRjcR9eJNHnhydrGtiAliM1hwj1q94woCcpKok -VBS1FJjG+CsaJMtxMgrimw5pa91+jGTRLmPvDn+xPohMnVXlyW4XBLdB/72KQcsl -MW9Edz9HsfyBiAeOBUkgtxHZaQMqA525M4Sa399640Zzo9iijFMZiFVMdLj2RIQr -0RQtTjkukmj/afyFYhvrVU/vJYRiRZnW2E5vP1MIfR0GlYGAf09OdDaYteKHcJjc -1/XcUhXmxtZ5ljl/j5XPq4BTrRsLRUAO1Bi9LN6Kd3b98kRHxiHQ5HTw2BgFyHww -csff8bv8AjCp9EImWQ2TBYKhc+005ThdzVCQ/pT8E7y9/KiiiKdzxLKo0V2IxAKi -evEEyf6MdMnvHWRBn6welmdkrKsoQced98CYG24HwmR9WoNmVig2nOf7HHcOKKDE -92t5OQQghMdXk7wboOq860LlqBH+/KxlzP34KIj0pZrlc1HgqJsNA3dO5eCYs4ja -febGnnwUZsEuU0qSBzegfuk9CeQVfM/9uEGl755mncReBx2H+EGt6ucv0kFjGDf5 -FONN0OX3Q/0V4/k2cwYm3wFPqcNO3iBGd5i0eiQrO3UrTliNm12kxxagvDKIP6GD -8wDI+NhY6WNdTCu18HJB2Kt3N9ZydK62NpzIpoNJS+DJVgspvgAwy93WyEKKANns -FdE0cfJbZIf2J9K364awkL8p2yGeNozjIC+VI1FsG8Kk1ebYAkNnoP6bUANEf7vk -ctXR5NqPkhRk+10UEBJKlQbJZQgpyiGjJjgRySffcGcE/cpIMn9jskV0MVBPh9kg -cNIhcLHWEJ0zXXiDkW1Vguza5GJjx4FG1xllcipDGZC41yNNTBzgRKlmZ6zucXkn -Jnhtcg71XUsjtXx8ZekXxjoLDd1eHlHDhrjsf8cnSqVG6GotGcGHo8uZk4dkolUU -TLdDpZPX59JOeUDKZZlGPT96gHqIaswe5WszRvRQwNUfCbjNii6hJ+tdc6foawrl -V4IqsPziVFJW8KupEsYjlgcknOC8RqW0IATaCZNj5dQuwn7FMe21FXSGF7mz8yaK -HQJq2ho/6LrxBG2UUVTiWrRZgx1g0C1zzAe1Joz518aIke+Az10PoWDLRdRCItGx -cB390LcwkDrGSG1n5TLaj9vjqOMdICWiHOFMuaT2xj9cWA27xrJ3ARaRnxcGDbdA -PsyPjpxL4J1+mx4Fq4gi+tMoG1cUZEo+JCw4TSFpAHMu0FUtdPIV6JRDPkAqxsa5 -alveoswYUFRdTiqFbPaSiykZfufqSuAiKyW892bPd5pBdPI8FA10afVQg83NLyHb -IkaK0PdRGpVX8gWLGhntO0XoNsJufvtXIgAfBlOprpPGj3EqMUWS545t5pkiwIP8 -79xXZndPojYx+6ETjeXKo5V9AQxkcDtTQmiAx7udqAA1aZgMqGfYQ+Wqz5XgUZWk -Fz9CnbgEztN5ecjTihYykuDXou7XN0wvrLh7vkX28RgznHs3piTZvECrAOnDN4ur -2LbzXoFOsBRrBz4f7ML2RCKVu7Pmb9b5cGW6CoNlqg4TL4MTI1OLQBb6zi/8TQT4 -69isxTbCFVdIOOxVs7Qeuq3SQgYXDXPIV6a+lk2p8sD7eiEc9clwqYKQtfEM1HkQ -voGm6VxhnHd5mqTDNyZXN8lSLPoI/9BfxmHA9Ha+/N5Oz6tRmXHH33701s8GVhkT -UwttdFlIGZtTBS2dMlTT5SxTi2Q+1GR744AJFMz+FkZja3Fp+PnLJ/aIVLxFs84C -yJTuQFv5QgLC/7DYLOsof17JJgGZpw== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: 0 (0x0) - Signature Algorithm: sha1WithRSAEncryption - Issuer: O=Thawte, OU=Thawte Universal CA Root, CN=Thawte Universal CA Root - Validity - Not Before: Dec 5 13:56:05 1999 GMT - Not After : Apr 3 13:56:05 2037 GMT - Subject: O=Thawte, OU=Thawte Universal CA Root, CN=Thawte Universal CA Root - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (16384 bit) - Modulus (16384 bit): - 00:e2:89:05:6d:c3:7f:ad:a6:89:3a:ff:bb:c7:cd: - 9d:37:b1:e1:d2:21:1e:9b:61:2a:15:e7:7b:57:4f: - 55:3c:d0:bb:f9:d9:3d:3e:a6:bc:ec:b4:ad:53:9a: - 16:02:eb:0b:72:fd:8a:f2:8f:44:05:c5:eb:d3:e5: - bd:b6:44:39:e6:fb:47:bf:6a:9e:0a:95:18:e2:68: - e2:d6:96:d6:21:ad:88:fd:f5:17:f5:d3:da:42:a5: - 90:ed:29:95:96:75:3a:da:87:a1:d4:f5:d3:87:de: - 05:62:a6:e3:66:74:92:cf:a5:bc:bb:df:68:ff:71: - 75:56:41:59:35:eb:33:5a:66:51:f2:d2:a3:0a:c1: - 8c:ce:73:5c:11:6f:2d:8c:95:8c:91:b1:fd:cf:e5: - ad:56:95:cc:85:92:83:90:55:41:c9:c2:77:ed:f9: - a3:74:42:0a:68:08:f3:d0:d1:65:fd:67:2c:34:ff: - 24:7f:e7:79:c8:07:3b:25:57:dd:a4:0c:98:3d:be: - e0:cc:19:65:db:f2:54:a2:af:42:d4:9d:e2:ae:84: - 23:25:09:33:12:b5:6a:1e:76:c4:8b:d9:49:00:6c: - 5e:ba:1f:f2:1b:da:67:ca:27:aa:a3:44:23:1b:83: - 82:ce:f2:ab:33:ed:54:a4:dc:c9:ab:59:65:d1:38: - 0e:c1:3e:1b:67:8f:d6:75:01:e0:55:22:dd:76:77: - ec:8e:dd:f4:cf:79:22:6d:b9:57:03:f5:99:08:a7: - 3c:3e:34:fb:c4:17:ae:23:58:cd:24:f3:23:ca:6a: - 02:28:94:01:81:34:b4:6c:6b:ae:8b:1a:c3:a3:d2: - 09:3c:16:54:f5:36:5f:24:e3:9f:4a:a1:e2:64:c6: - 16:c3:a6:81:7a:24:36:47:8e:c1:5e:0e:fb:f9:15: - 78:04:d6:0e:59:d9:9d:58:66:62:d2:94:29:32:32: - c8:78:b9:66:f6:b5:56:e1:6c:c6:14:4b:96:52:59: - 91:02:24:6a:55:47:d7:3f:b6:23:1a:60:77:97:2e: - e2:40:af:9e:04:57:9e:ad:11:c5:c9:43:70:ef:48: - b4:5e:ac:1c:69:2e:2e:82:d5:5b:8b:be:82:be:19: - 14:5e:e7:0d:22:c7:51:1b:ff:1e:9b:f1:30:8f:71: - 31:06:b3:34:27:8f:5f:7a:66:82:4f:8a:2d:13:ab: - 42:cf:21:56:9e:97:8e:66:36:0f:96:9b:e5:2b:f4: - 02:a9:2a:6a:8c:2c:c4:c3:b8:70:2c:2d:29:1e:3f: - 50:77:1e:6d:2a:54:e4:55:0a:91:38:a1:c5:b5:66: - a2:76:5a:ee:0f:bf:b4:67:e1:28:6e:0f:e1:36:a1: - 82:d1:bf:d4:77:e1:c4:67:32:93:78:c8:e7:54:53: - fe:23:79:e6:68:cc:26:90:f6:10:63:5d:2a:6f:91: - 2d:a4:73:32:51:21:f2:bb:15:df:aa:24:08:48:06: - de:a1:9e:26:bf:ba:83:bf:7c:a4:c8:a0:8c:bd:d2: - ff:bc:84:69:27:13:24:18:c4:45:18:23:26:5e:18: - 14:ca:2e:88:87:62:a3:53:e6:21:b7:b8:85:7b:9a: - 85:bb:15:26:72:f8:b9:f7:6a:74:0f:49:3f:92:be: - a9:05:b7:99:27:bf:bf:09:17:4b:99:4c:ad:11:10: - 7c:df:74:31:f6:8f:26:5f:aa:88:ae:38:57:c8:55: - 2d:d3:fb:d8:1b:51:99:be:25:1b:3a:ba:c0:7d:1b: - ed:ce:d2:49:b9:cf:f3:c5:7d:89:90:81:d8:69:48: - 20:10:a3:f8:ef:92:51:18:32:8b:11:18:c0:3f:1b: - 85:56:ce:57:c9:f2:82:64:c6:df:02:09:2e:4a:11: - 2f:b1:27:6d:37:52:f0:f0:16:61:f1:67:8d:df:87: - 72:af:87:da:cf:fb:50:94:6e:d4:94:85:eb:8a:2c: - ea:21:f5:96:4a:44:d5:e0:ce:6a:74:44:4d:d0:05: - d3:87:15:ed:36:d0:a4:8b:66:55:70:93:ee:47:06: - c1:7e:2e:a5:18:79:67:f3:28:85:f1:70:f7:0e:83: - a4:7e:54:9e:5a:76:32:cb:65:1b:b8:cd:fb:c8:28: - 03:d2:54:91:d1:a7:c5:85:43:08:17:76:a5:e6:2f: - 67:08:d8:a1:a2:82:2d:0c:f8:c1:af:63:d4:50:77: - 6d:6b:46:4a:41:85:d5:90:5f:79:2d:c4:ec:d7:11: - 87:40:8a:e1:68:e2:64:f8:55:32:fb:6f:93:2c:da: - 77:d9:21:c1:17:e5:36:2c:4e:7e:90:7f:ac:94:2b: - 32:67:be:38:50:76:b8:ae:41:b9:d7:21:c5:09:4c: - 60:c8:a3:51:c4:34:9b:57:37:df:cb:c9:33:57:8b: - eb:fb:76:9f:19:4d:c5:6a:1f:2a:45:ae:2b:ed:2f: - 8d:a7:a5:00:cb:04:fa:25:62:2e:74:48:1b:ca:2a: - 8c:ba:db:b6:7e:f6:bb:02:7c:a9:c3:db:58:78:a1: - bf:f0:fe:1a:10:55:11:ce:e8:69:4e:96:65:c6:17: - 03:d6:07:68:8c:54:82:ae:1c:22:55:3f:f1:f4:09: - 97:28:c0:46:f7:4e:0b:25:1d:f7:07:d7:09:1d:3a: - 18:57:38:3b:e8:33:06:e7:8f:78:46:1e:5b:f5:06: - b6:ec:b8:a6:0d:f1:ba:13:4b:d6:18:20:dd:69:33: - 4a:33:15:ae:b8:c8:98:8a:27:2c:93:bc:2d:fb:ee: - 33:bf:66:e6:4d:ba:b6:9b:06:55:60:97:4b:bc:44: - cd:7e:f4:a1:d8:aa:2f:c0:02:28:21:16:62:78:db: - 08:54:f2:fc:f4:34:e3:c6:8f:1c:43:57:ce:90:1a: - 4b:dc:2e:3b:28:91:89:3f:7a:da:35:1d:8e:2c:ee: - 49:ec:f4:33:ad:c9:53:a8:8c:9f:04:53:3e:24:1c: - 52:c9:12:f9:62:57:a3:bc:ee:2c:eb:40:7c:20:23: - 70:2b:95:f9:73:17:8a:d1:c1:1c:69:a6:b7:38:9a: - 67:f7:70:1d:7a:5a:0c:40:cf:62:0f:85:3c:c2:02: - 4e:7e:b5:f6:c5:2a:29:84:b3:1f:37:2a:e1:aa:72: - 42:c4:ed:6b:1a:8f:92:1c:5d:be:d1:f2:5b:f2:ab: - aa:a9:d2:f5:b8:a4:41:2b:2b:91:6e:12:48:ca:98: - d8:37:8d:c8:ed:00:30:b5:b6:04:4e:7e:9c:da:84: - ec:c0:fa:7b:e5:1d:88:a4:53:46:b0:94:e4:5c:1b: - a1:25:2c:0f:48:52:77:97:09:6c:ec:5b:18:33:83: - 02:e5:82:7e:cd:85:21:30:11:fd:27:4f:cf:e4:1e: - ec:3f:a5:57:6c:e9:2a:30:19:2a:88:e5:c3:69:38: - ab:6f:39:71:7f:84:e1:41:c3:e1:cc:2a:89:20:52: - 2e:83:0f:6c:39:3f:4b:2d:16:ac:2d:f0:24:ac:00: - 73:f4:9b:b3:06:3f:05:b8:14:85:1f:ab:9e:5c:3c: - 9e:62:9d:0e:6d:3b:80:09:fc:02:ea:a2:97:74:ca: - c7:f9:e3:56:e1:c3:ca:a5:a6:9a:c0:90:e0:24:12: - 53:d2:c2:8b:da:be:ed:02:43:5e:67:e1:89:98:79: - ee:cb:aa:ca:c3:1b:dc:e7:a5:46:a5:7c:6b:16:87: - b6:5a:28:d7:db:27:3c:5e:a5:bd:b6:51:dd:1f:43: - cf:3b:26:c8:3a:8d:25:61:c1:49:f4:3c:1b:c9:44: - ea:af:1c:c2:2b:94:01:2a:0e:30:d1:5b:8b:2b:47: - e5:c3:d1:04:03:9b:0e:39:2c:d6:27:d4:e6:70:5a: - d9:75:cf:2a:d8:c9:00:05:e4:13:88:ec:c3:39:fb: - 87:61:30:36:43:03:c8:9e:9c:a2:06:c2:2f:c5:fc: - f0:80:63:b1:54:04:a0:4c:a9:2e:c6:f5:76:7a:d8: - d0:e4:d4:94:11:e5:15:b5:78:06:dc:b8:80:8f:99: - a9:20:33:3d:10:85:4c:65:09:ca:3e:58:5e:60:93: - 9a:aa:62:5d:c0:51:06:1c:5d:60:a0:0d:9c:4b:43: - f6:a7:16:21:a4:87:aa:f2:c1:2e:ee:92:30:b8:9e: - df:df:10:01:8b:86:09:70:d8:6c:a8:b7:50:1e:16: - 96:b4:f7:67:fd:35:3a:21:90:2a:32:c7:00:7b:4d: - 07:10:09:b9:2f:73:d8:18:7e:67:99:04:4f:06:fc: - 50:c7:85:9b:9d:40:9d:b3:96:37:fa:a5:dc:b2:72: - 4e:ef:4e:09:2c:fd:91:fd:4d:f7:bb:a6:a1:3e:ab: - 7b:a2:03:40:a6:a9:55:27:e2:fa:f9:19:ce:87:75: - aa:f1:75:36:f3:f3:b8:91:f8:91:c3:8b:75:13:8e: - 4c:65:9a:16:39:6a:e5:34:e8:7a:96:59:7f:35:b0: - 00:fd:5b:69:fc:43:26:fa:f5:28:6e:fe:87:d9:7e: - 24:fb:b4:a0:82:6e:54:a2:ff:ae:bf:62:b4:f4:72: - 01:c2:cb:98:47:98:e1:4c:b5:17:80:80:ce:8f:a6: - 28:ee:1e:45:6a:fb:df:f1:1d:fc:5a:3b:d6:ea:f4: - 6c:1d:62:49:57:3b:8a:8f:86:ea:f0:53:04:ce:9c: - 16:68:ff:ba:b9:fc:88:0f:47:f7:02:44:72:40:b8: - ca:3b:2d:53:9d:dc:3c:56:8c:59:7b:68:1a:2c:8d: - 71:bb:6c:00:c7:1a:ce:6f:40:92:b1:a3:2f:0f:d9: - 44:f2:a3:70:2e:9e:ee:0e:ae:32:d0:3b:3e:8b:07: - ea:e6:79:b3:5c:29:e2:7d:6b:a8:5e:f9:5a:31:e8: - 08:96:a2:8c:03:98:46:f1:b8:7d:90:54:26:ed:76: - 62:fe:9e:e9:9a:6e:5e:c9:49:c7:5c:34:53:29:54: - d9:ec:e4:46:e1:80:3b:75:d9:df:fb:79:d5:87:f1: - ba:9e:eb:19:ce:4c:52:73:e6:5b:87:ae:25:4f:39: - 79:cc:c6:b8:f9:10:7b:ec:f0:9b:71:a4:05:a0:d3: - 29:d3:4e:7f:1f:f4:2d:28:78:cc:55:95:7b:1e:91: - 2f:cc:56:18:73:8b:b2:db:bc:69:07:e6:d0:d8:4f: - ed:a2:ff:58:85:a3:6d:e0:4a:53:b7:67:7d:8d:0c: - 5c:5b:7b:77:28:02:35:44:7a:04:d3:28:43:c8:6b: - 30:17:5d:32:b8:29:35:ba:76:da:3b:14:4a:76:18: - 58:a4:f8:92:3c:9e:4d:33:6f:46:6b:08:d9:31:48: - 68:dd:f4:fb:24:56:34:b2:cf:69:66:be:48:d2:8a: - 66:22:cd:f2:69:cd:c2:53:13:45:29:41:22:d6:5d: - 98:1f:b6:a4:b2:a3:c2:ee:02:2f:51:1b:dc:83:a4: - ec:70:25:a8:d4:08:61:32:6f:e4:a1:81:2e:7c:63: - 72:fa:29:65:bc:70:44:cf:5d - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 55:9a:34:6a:22:06:69:09:45:33:c7:ae:a9:5c:c7:09:4e:9b: - 86:bc:41:90:d4:94:52:f6:cd:23:29:94:4b:22:cd:e8:bd:fe: - 9d:cd:52:f2:bd:ed:ab:87:c9:ab:ab:46:04:b4:bd:a2:3f:22: - 30:47:50:c0:4b:8c:76:0f:03:f5:92:d2:b1:2d:c4:7a:35:9c: - c9:73:87:eb:a6:9f:de:0f:73:8d:d3:7f:99:d8:ba:8f:6f:c4: - f3:be:1a:ae:8b:a2:94:36:90:e2:e5:eb:8d:05:f4:fc:65:df: - 95:f1:c4:94:4d:17:56:d7:9f:3c:8f:50:3c:e7:77:bf:95:86: - 26:64:fb:6a:ff:c6:da:e9:8c:ae:42:bb:69:e5:33:c6:d8:e9: - 0d:c6:55:21:49:c1:0c:b4:a3:f9:9b:4b:5c:de:83:4f:41:03: - ce:2a:79:68:38:7d:f0:54:49:20:f5:b6:10:ff:08:dc:33:66: - 96:9b:ff:06:de:00:9e:d7:ce:56:43:9a:51:fc:70:cd:f6:f0: - 51:a3:b7:cd:b4:5c:85:62:cd:71:b7:c6:2b:23:2b:dd:c3:6e: - 40:42:fa:37:ff:37:1c:f6:7a:57:94:87:85:23:d7:d4:c9:c7: - 5f:c1:4d:2f:c9:0d:d7:5c:ec:9c:25:ee:9e:30:82:91:96:72: - b8:75:1d:f8:09:68:57:97:b2:2d:4b:ee:25:ec:7a:24:29:ee: - 72:d4:9c:13:db:ab:dc:03:0a:d8:4a:14:c9:08:57:44:5d:a1: - b5:53:80:34:f2:14:97:cf:52:de:a2:0e:8a:10:e9:14:ef:d0: - 60:be:61:a1:f1:25:5d:d5:18:73:3f:93:10:ca:96:ee:b3:40: - d2:db:a3:55:cf:57:5a:a5:0e:4f:75:47:df:ea:f7:90:9a:6d: - f5:70:2e:1d:14:1c:37:64:04:59:50:b0:dc:72:86:6f:9c:37: - 3d:5d:28:af:73:55:ef:d2:ee:24:74:74:13:ef:dc:db:31:49: - fb:3f:63:f5:d3:08:3e:33:a5:e7:9d:0a:de:53:2c:51:8e:67: - db:9b:41:65:41:50:bd:d4:a4:96:6c:87:bc:12:e0:94:c7:d3: - c0:e4:cb:73:58:00:83:e1:ac:27:85:d6:9d:53:9d:5c:bd:0a: - 3e:03:43:9c:0c:91:f5:6d:7b:f8:40:72:75:ab:11:76:91:2b: - e1:c6:aa:1f:70:69:76:70:15:09:fe:93:d0:d6:2d:b7:15:6a: - 9b:67:5c:b4:69:9f:25:a6:7d:8a:fb:7d:22:a9:71:f2:ce:4e: - 8c:b8:21:2d:de:fe:41:71:0d:ff:9d:ec:73:a6:bb:07:4f:88: - 0e:58:47:2e:7e:a9:c2:c7:78:dd:ba:7a:9e:4e:e0:30:4e:63: - 6f:85:d4:20:41:e9:fa:fe:43:45:e7:fb:af:7a:b2:ce:a4:05: - 1d:22:9a:58:86:df:e4:ce:4c:a9:fe:d8:16:a5:6f:fb:d8:ce: - 56:7b:f5:d6:20:ef:e4:47:cd:63:24:ff:b9:be:f1:48:a3:c1: - 01:72:e6:bd:c0:ad:ed:26:0d:ca:34:9f:fc:02:2d:20:4f:05: - 20:ae:21:3d:0c:c2:20:3c:3f:f0:04:84:dc:cf:89:fd:b9:25: - 91:8e:d0:43:e6:b3:20:ab:5c:2d:d5:40:9e:a0:4b:d8:f4:b2: - cc:7d:f1:58:0a:8e:87:ed:88:ac:36:96:e4:56:a0:11:8a:f2: - 9a:d0:b3:57:a3:34:bb:19:ab:38:e1:74:6b:22:c4:31:ce:01: - d5:1b:36:e3:1e:38:4c:33:93:df:40:e3:59:57:4e:ac:6e:7b: - 1e:5a:3d:c5:1d:5b:ac:c8:10:82:35:02:22:b2:fc:75:e8:10: - 91:8d:c4:7d:78:93:47:9e:1c:9d:ac:6b:62:02:58:8c:d6:1c: - 23:d6:af:78:c2:80:9c:a4:aa:24:54:14:b5:14:98:c6:f8:2b: - 1a:24:cb:71:32:0a:e2:9b:0e:69:6b:dd:7e:8c:64:d1:2e:63: - ef:0e:7f:b1:3e:88:4c:9d:55:e5:c9:6e:17:04:b7:41:ff:bd: - 8a:41:cb:25:31:6f:44:77:3f:47:b1:fc:81:88:07:8e:05:49: - 20:b7:11:d9:69:03:2a:03:9d:b9:33:84:9a:df:df:7a:e3:46: - 73:a3:d8:a2:8c:53:19:88:55:4c:74:b8:f6:44:84:2b:d1:14: - 2d:4e:39:2e:92:68:ff:69:fc:85:62:1b:eb:55:4f:ef:25:84: - 62:45:99:d6:d8:4e:6f:3f:53:08:7d:1d:06:95:81:80:7f:4f: - 4e:74:36:98:b5:e2:87:70:98:dc:d7:f5:dc:52:15:e6:c6:d6: - 79:96:39:7f:8f:95:cf:ab:80:53:ad:1b:0b:45:40:0e:d4:18: - bd:2c:de:8a:77:76:fd:f2:44:47:c6:21:d0:e4:74:f0:d8:18: - 05:c8:7c:30:72:c7:df:f1:bb:fc:02:30:a9:f4:42:26:59:0d: - 93:05:82:a1:73:ed:34:e5:38:5d:cd:50:90:fe:94:fc:13:bc: - bd:fc:a8:a2:88:a7:73:c4:b2:a8:d1:5d:88:c4:02:a2:7a:f1: - 04:c9:fe:8c:74:c9:ef:1d:64:41:9f:ac:1e:96:67:64:ac:ab: - 28:41:c7:9d:f7:c0:98:1b:6e:07:c2:64:7d:5a:83:66:56:28: - 36:9c:e7:fb:1c:77:0e:28:a0:c4:f7:6b:79:39:04:20:84:c7: - 57:93:bc:1b:a0:ea:bc:eb:42:e5:a8:11:fe:fc:ac:65:cc:fd: - f8:28:88:f4:a5:9a:e5:73:51:e0:a8:9b:0d:03:77:4e:e5:e0: - 98:b3:88:da:7d:e6:c6:9e:7c:14:66:c1:2e:53:4a:92:07:37: - a0:7e:e9:3d:09:e4:15:7c:cf:fd:b8:41:a5:ef:9e:66:9d:c4: - 5e:07:1d:87:f8:41:ad:ea:e7:2f:d2:41:63:18:37:f9:14:e3: - 4d:d0:e5:f7:43:fd:15:e3:f9:36:73:06:26:df:01:4f:a9:c3: - 4e:de:20:46:77:98:b4:7a:24:2b:3b:75:2b:4e:58:8d:9b:5d: - a4:c7:16:a0:bc:32:88:3f:a1:83:f3:00:c8:f8:d8:58:e9:63: - 5d:4c:2b:b5:f0:72:41:d8:ab:77:37:d6:72:74:ae:b6:36:9c: - c8:a6:83:49:4b:e0:c9:56:0b:29:be:00:30:cb:dd:d6:c8:42: - 8a:00:d9:ec:15:d1:34:71:f2:5b:64:87:f6:27:d2:b7:eb:86: - b0:90:bf:29:db:21:9e:36:8c:e3:20:2f:95:23:51:6c:1b:c2: - a4:d5:e6:d8:02:43:67:a0:fe:9b:50:03:44:7f:bb:e4:72:d5: - d1:e4:da:8f:92:14:64:fb:5d:14:10:12:4a:95:06:c9:65:08: - 29:ca:21:a3:26:38:11:c9:27:df:70:67:04:fd:ca:48:32:7f: - 63:b2:45:74:31:50:4f:87:d9:20:70:d2:21:70:b1:d6:10:9d: - 33:5d:78:83:91:6d:55:82:ec:da:e4:62:63:c7:81:46:d7:19: - 65:72:2a:43:19:90:b8:d7:23:4d:4c:1c:e0:44:a9:66:67:ac: - ee:71:79:27:26:78:6d:72:0e:f5:5d:4b:23:b5:7c:7c:65:e9: - 17:c6:3a:0b:0d:dd:5e:1e:51:c3:86:b8:ec:7f:c7:27:4a:a5: - 46:e8:6a:2d:19:c1:87:a3:cb:99:93:87:64:a2:55:14:4c:b7: - 43:a5:93:d7:e7:d2:4e:79:40:ca:65:99:46:3d:3f:7a:80:7a: - 88:6a:cc:1e:e5:6b:33:46:f4:50:c0:d5:1f:09:b8:cd:8a:2e: - a1:27:eb:5d:73:a7:e8:6b:0a:e5:57:82:2a:b0:fc:e2:54:52: - 56:f0:ab:a9:12:c6:23:96:07:24:9c:e0:bc:46:a5:b4:20:04: - da:09:93:63:e5:d4:2e:c2:7e:c5:31:ed:b5:15:74:86:17:b9: - b3:f3:26:8a:1d:02:6a:da:1a:3f:e8:ba:f1:04:6d:94:51:54: - e2:5a:b4:59:83:1d:60:d0:2d:73:cc:07:b5:26:8c:f9:d7:c6: - 88:91:ef:80:cf:5d:0f:a1:60:cb:45:d4:42:22:d1:b1:70:1d: - fd:d0:b7:30:90:3a:c6:48:6d:67:e5:32:da:8f:db:e3:a8:e3: - 1d:20:25:a2:1c:e1:4c:b9:a4:f6:c6:3f:5c:58:0d:bb:c6:b2: - 77:01:16:91:9f:17:06:0d:b7:40:3e:cc:8f:8e:9c:4b:e0:9d: - 7e:9b:1e:05:ab:88:22:fa:d3:28:1b:57:14:64:4a:3e:24:2c: - 38:4d:21:69:00:73:2e:d0:55:2d:74:f2:15:e8:94:43:3e:40: - 2a:c6:c6:b9:6a:5b:de:a2:cc:18:50:54:5d:4e:2a:85:6c:f6: - 92:8b:29:19:7e:e7:ea:4a:e0:22:2b:25:bc:f7:66:cf:77:9a: - 41:74:f2:3c:14:0d:74:69:f5:50:83:cd:cd:2f:21:db:22:46: - 8a:d0:f7:51:1a:95:57:f2:05:8b:1a:19:ed:3b:45:e8:36:c2: - 6e:7e:fb:57:22:00:1f:06:53:a9:ae:93:c6:8f:71:2a:31:45: - 92:e7:8e:6d:e6:99:22:c0:83:fc:ef:dc:57:66:77:4f:a2:36: - 31:fb:a1:13:8d:e5:ca:a3:95:7d:01:0c:64:70:3b:53:42:68: - 80:c7:bb:9d:a8:00:35:69:98:0c:a8:67:d8:43:e5:aa:cf:95: - e0:51:95:a4:17:3f:42:9d:b8:04:ce:d3:79:79:c8:d3:8a:16: - 32:92:e0:d7:a2:ee:d7:37:4c:2f:ac:b8:7b:be:45:f6:f1:18: - 33:9c:7b:37:a6:24:d9:bc:40:ab:00:e9:c3:37:8b:ab:d8:b6: - f3:5e:81:4e:b0:14:6b:07:3e:1f:ec:c2:f6:44:22:95:bb:b3: - e6:6f:d6:f9:70:65:ba:0a:83:65:aa:0e:13:2f:83:13:23:53: - 8b:40:16:fa:ce:2f:fc:4d:04:f8:eb:d8:ac:c5:36:c2:15:57: - 48:38:ec:55:b3:b4:1e:ba:ad:d2:42:06:17:0d:73:c8:57:a6: - be:96:4d:a9:f2:c0:fb:7a:21:1c:f5:c9:70:a9:82:90:b5:f1: - 0c:d4:79:10:be:81:a6:e9:5c:61:9c:77:79:9a:a4:c3:37:26: - 57:37:c9:52:2c:fa:08:ff:d0:5f:c6:61:c0:f4:76:be:fc:de: - 4e:cf:ab:51:99:71:c7:df:7e:f4:d6:cf:06:56:19:13:53:0b: - 6d:74:59:48:19:9b:53:05:2d:9d:32:54:d3:e5:2c:53:8b:64: - 3e:d4:64:7b:e3:80:09:14:cc:fe:16:46:63:6b:71:69:f8:f9: - cb:27:f6:88:54:bc:45:b3:ce:02:c8:94:ee:40:5b:f9:42:02: - c2:ff:b0:d8:2c:eb:28:7f:5e:c9:26:01:99:a7 - -UPS Document Exchange by DST -============================ -MD5 Fingerprint: 78:A5:FB:10:4B:E4:63:2E:D2:6B:FB:F2:B6:C2:4B:8E -PEM Data: ------BEGIN CERTIFICATE----- -MIID+DCCAuACEQDQHkCLAAACfAAAAAcAAAABMA0GCSqGSIb3DQEBBQUAMIG5MQsw -CQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENp -dHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjEeMBwGA1UE -CxMVVW5pdGVkIFBhcmNlbCBTZXJ2aWNlMRkwFwYDVQQDExBEU1QgKFVQUykgUm9v -dENBMSEwHwYJKoZIhvcNAQkBFhJjYUBkaWdzaWd0cnVzdC5jb20wHhcNOTgxMjEw -MDAyNTQ2WhcNMDgxMjA3MDAyNTQ2WjCBuTELMAkGA1UEBhMCdXMxDTALBgNVBAgT -BFV0YWgxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MSQwIgYDVQQKExtEaWdpdGFs -IFNpZ25hdHVyZSBUcnVzdCBDby4xHjAcBgNVBAsTFVVuaXRlZCBQYXJjZWwgU2Vy -dmljZTEZMBcGA1UEAxMQRFNUIChVUFMpIFJvb3RDQTEhMB8GCSqGSIb3DQEJARYS -Y2FAZGlnc2lndHJ1c3QuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEA7xfsrynm2SsnwNt7JJ9m9ASjwq0KyrDNhCuqN/OAoWDvQo/lXXdfV0JU3Svb -YbJxXpN7b1/rJCvnpPLr8XOzC431Wdcy36yQjk4xuiVNtgym8eWvDOHlb1IDFcHf -vn5KpqYYRnA/76dNqNz1dNlhekA8oZQo6sKUiMs3FQUZPJViuhwt+yiM0ciekjxb -EVQ7eNlHO5stSuY+e2vf9PYFzyj2upg2AJ48N4UKnN63pIXFY/23YhRtFx7MioCF -QjIRsCHinXfJgBZBnuvlFIl/t8O8T8Gfh5uW7GP2+ZBWDpWjIwqMZNqbuxx3sExd -5sjo9X15LVckP8zjPSyYzxKfFwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQC7OI4E -IiZYDiFEVsy9WXwpaMtcD8iGVD+BeKetj8xG9xxUuHktW3IFaugh0OwdHf6kNFG+ -7u3OzJwWaOJddXMIQzGRahArEMJLafjJrZio/bjv9qvwXyHvy4VrCe0vSGa1YHLA -6KDHmNsO9xtzjTQICnvFd2KqMCObsB6LgJhU3AWHs6liWfyLtxWarETszzUa9w8u -XZJLAch77qA37eQdgg2ZQUMXrdTVyuP5fReiAdAwD0C53LkEgmmDtvkP+gaS96j0 -1hcc8F5/xCnI5uHi/zZoIVGu/6m6hJKtinsz2JDSwXltMzM5dKwbOHGfLAeQ6h3g -04lfy+8UjSdUpb1G ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - d0:1e:40:8b:00:00:02:7c:00:00:00:07:00:00:00:01 - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=United Parcel Service, CN=DST (UPS) RootCA/Email=ca@digsigtrust.com - Validity - Not Before: Dec 10 00:25:46 1998 GMT - Not After : Dec 7 00:25:46 2008 GMT - Subject: C=us, ST=Utah, L=Salt Lake City, O=Digital Signature Trust Co., OU=United Parcel Service, CN=DST (UPS) RootCA/Email=ca@digsigtrust.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:ef:17:ec:af:29:e6:d9:2b:27:c0:db:7b:24:9f: - 66:f4:04:a3:c2:ad:0a:ca:b0:cd:84:2b:aa:37:f3: - 80:a1:60:ef:42:8f:e5:5d:77:5f:57:42:54:dd:2b: - db:61:b2:71:5e:93:7b:6f:5f:eb:24:2b:e7:a4:f2: - eb:f1:73:b3:0b:8d:f5:59:d7:32:df:ac:90:8e:4e: - 31:ba:25:4d:b6:0c:a6:f1:e5:af:0c:e1:e5:6f:52: - 03:15:c1:df:be:7e:4a:a6:a6:18:46:70:3f:ef:a7: - 4d:a8:dc:f5:74:d9:61:7a:40:3c:a1:94:28:ea:c2: - 94:88:cb:37:15:05:19:3c:95:62:ba:1c:2d:fb:28: - 8c:d1:c8:9e:92:3c:5b:11:54:3b:78:d9:47:3b:9b: - 2d:4a:e6:3e:7b:6b:df:f4:f6:05:cf:28:f6:ba:98: - 36:00:9e:3c:37:85:0a:9c:de:b7:a4:85:c5:63:fd: - b7:62:14:6d:17:1e:cc:8a:80:85:42:32:11:b0:21: - e2:9d:77:c9:80:16:41:9e:eb:e5:14:89:7f:b7:c3: - bc:4f:c1:9f:87:9b:96:ec:63:f6:f9:90:56:0e:95: - a3:23:0a:8c:64:da:9b:bb:1c:77:b0:4c:5d:e6:c8: - e8:f5:7d:79:2d:57:24:3f:cc:e3:3d:2c:98:cf:12: - 9f:17 - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - bb:38:8e:04:22:26:58:0e:21:44:56:cc:bd:59:7c:29:68:cb: - 5c:0f:c8:86:54:3f:81:78:a7:ad:8f:cc:46:f7:1c:54:b8:79: - 2d:5b:72:05:6a:e8:21:d0:ec:1d:1d:fe:a4:34:51:be:ee:ed: - ce:cc:9c:16:68:e2:5d:75:73:08:43:31:91:6a:10:2b:10:c2: - 4b:69:f8:c9:ad:98:a8:fd:b8:ef:f6:ab:f0:5f:21:ef:cb:85: - 6b:09:ed:2f:48:66:b5:60:72:c0:e8:a0:c7:98:db:0e:f7:1b: - 73:8d:34:08:0a:7b:c5:77:62:aa:30:23:9b:b0:1e:8b:80:98: - 54:dc:05:87:b3:a9:62:59:fc:8b:b7:15:9a:ac:44:ec:cf:35: - 1a:f7:0f:2e:5d:92:4b:01:c8:7b:ee:a0:37:ed:e4:1d:82:0d: - 99:41:43:17:ad:d4:d5:ca:e3:f9:7d:17:a2:01:d0:30:0f:40: - b9:dc:b9:04:82:69:83:b6:f9:0f:fa:06:92:f7:a8:f4:d6:17: - 1c:f0:5e:7f:c4:29:c8:e6:e1:e2:ff:36:68:21:51:ae:ff:a9: - ba:84:92:ad:8a:7b:33:d8:90:d2:c1:79:6d:33:33:39:74:ac: - 1b:38:71:9f:2c:07:90:ea:1d:e0:d3:89:5f:cb:ef:14:8d:27: - 54:a5:bd:46 - -ValiCert Class 1 VA -=================== -MD5 Fingerprint: 65:58:AB:15:AD:57:6C:1E:A8:A7:B5:69:AC:BF:FF:EB -PEM Data: ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy -NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y -LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ -TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y -TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 -LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW -I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw -nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: 1 (0x1) - Signature Algorithm: sha1WithRSAEncryption - Issuer: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 1 Policy Validation Authority, CN=http://www.valicert.com//Email=info@valicert.com - Validity - Not Before: Jun 25 22:23:48 1999 GMT - Not After : Jun 25 22:23:48 2019 GMT - Subject: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 1 Policy Validation Authority, CN=http://www.valicert.com//Email=info@valicert.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:d8:59:82:7a:89:b8:96:ba:a6:2f:68:6f:58:2e: - a7:54:1c:06:6e:f4:ea:8d:48:bc:31:94:17:f0:f3: - 4e:bc:b2:b8:35:92:76:b0:d0:a5:a5:01:d7:00:03: - 12:22:19:08:f8:ff:11:23:9b:ce:07:f5:bf:69:1a: - 26:fe:4e:e9:d1:7f:9d:2c:40:1d:59:68:6e:a6:f8: - 58:b0:9d:1a:8f:d3:3f:f1:dc:19:06:81:a8:0e:e0: - 3a:dd:c8:53:45:09:06:e6:0f:70:c3:fa:40:a6:0e: - e2:56:05:0f:18:4d:fc:20:82:d1:73:55:74:8d:76: - 72:a0:1d:9d:1d:c0:dd:3f:71 - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 50:68:3d:49:f4:2c:1c:06:94:df:95:60:7f:96:7b:17:fe:4f: - 71:ad:64:c8:dd:77:d2:ef:59:55:e8:3f:e8:8e:05:2a:21:f2: - 07:d2:b5:a7:52:fe:9c:b1:b6:e2:5b:77:17:40:ea:72:d6:23: - cb:28:81:32:c3:00:79:18:ec:59:17:89:c9:c6:6a:1e:71:c9: - fd:b7:74:a5:25:45:69:c5:48:ab:19:e1:45:8a:25:6b:19:ee: - e5:bb:12:f5:7f:f7:a6:8d:51:c3:f0:9d:74:b7:a9:3e:a0:a5: - ff:b6:49:03:13:da:22:cc:ed:71:82:2b:99:cf:3a:b7:f5:2d: - 72:c8 - -ValiCert Class 2 VA -=================== -MD5 Fingerprint: A9:23:75:9B:BA:49:36:6E:31:C2:DB:F2:E7:66:BA:87 -PEM Data: ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy -NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY -dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 -WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS -v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v -UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu -IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC -W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: 1 (0x1) - Signature Algorithm: sha1WithRSAEncryption - Issuer: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 2 Policy Validation Authority, CN=http://www.valicert.com//Email=info@valicert.com - Validity - Not Before: Jun 26 00:19:54 1999 GMT - Not After : Jun 26 00:19:54 2019 GMT - Subject: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 2 Policy Validation Authority, CN=http://www.valicert.com//Email=info@valicert.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:ce:3a:71:ca:e5:ab:c8:59:92:55:d7:ab:d8:74: - 0e:f9:ee:d9:f6:55:47:59:65:47:0e:05:55:dc:eb: - 98:36:3c:5c:53:5d:d3:30:cf:38:ec:bd:41:89:ed: - 25:42:09:24:6b:0a:5e:b3:7c:dd:52:2d:4c:e6:d4: - d6:7d:5a:59:a9:65:d4:49:13:2d:24:4d:1c:50:6f: - b5:c1:85:54:3b:fe:71:e4:d3:5c:42:f9:80:e0:91: - 1a:0a:5b:39:36:67:f3:3f:55:7c:1b:3f:b4:5f:64: - 73:34:e3:b4:12:bf:87:64:f8:da:12:ff:37:27:c1: - b3:43:bb:ef:7b:6e:2e:69:f7 - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 3b:7f:50:6f:6f:50:94:99:49:62:38:38:1f:4b:f8:a5:c8:3e: - a7:82:81:f6:2b:c7:e8:c5:ce:e8:3a:10:82:cb:18:00:8e:4d: - bd:a8:58:7f:a1:79:00:b5:bb:e9:8d:af:41:d9:0f:34:ee:21: - 81:19:a0:32:49:28:f4:c4:8e:56:d5:52:33:fd:50:d5:7e:99: - 6c:03:e4:c9:4c:fc:cb:6c:ab:66:b3:4a:21:8c:e5:b5:0c:32: - 3e:10:b2:cc:6c:a1:dc:9a:98:4c:02:5b:f3:ce:b9:9e:a5:72: - 0e:4a:b7:3f:3c:e6:16:68:f8:be:ed:74:4c:bc:5b:d5:62:1f: - 43:dd - -ValiCert Class 3 VA -=================== -MD5 Fingerprint: A2:6F:53:B7:EE:40:DB:4A:68:E7:FA:18:D9:10:4B:72 -PEM Data: ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy -NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD -cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs -2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY -JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE -Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ -n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A -PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: 1 (0x1) - Signature Algorithm: sha1WithRSAEncryption - Issuer: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 3 Policy Validation Authority, CN=http://www.valicert.com//Email=info@valicert.com - Validity - Not Before: Jun 26 00:22:33 1999 GMT - Not After : Jun 26 00:22:33 2019 GMT - Subject: L=ValiCert Validation Network, O=ValiCert, Inc., OU=ValiCert Class 3 Policy Validation Authority, CN=http://www.valicert.com//Email=info@valicert.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:e3:98:51:96:1c:e8:d5:b1:06:81:6a:57:c3:72: - 75:93:ab:cf:9e:a6:fc:f3:16:52:d6:2d:4d:9f:35: - 44:a8:2e:04:4d:07:49:8a:38:29:f5:77:37:e7:b7: - ab:5d:df:36:71:14:99:8f:dc:c2:92:f1:e7:60:92: - 97:ec:d8:48:dc:bf:c1:02:20:c6:24:a4:28:4c:30: - 5a:76:6d:b1:5c:f3:dd:de:9e:10:71:a1:88:c7:5b: - 9b:41:6d:ca:b0:b8:8e:15:ee:ad:33:2b:cf:47:04: - 5c:75:71:0a:98:24:98:29:a7:49:59:a5:dd:f8:b7: - 43:62:61:f3:d3:e2:d0:55:3f - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 56:bb:02:58:84:67:08:2c:df:1f:db:7b:49:33:f5:d3:67:9d: - f4:b4:0a:10:b3:c9:c5:2c:e2:92:6a:71:78:27:f2:70:83:42: - d3:3e:cf:a9:54:f4:f1:d8:92:16:8c:d1:04:cb:4b:ab:c9:9f: - 45:ae:3c:8a:a9:b0:71:33:5d:c8:c5:57:df:af:a8:35:b3:7f: - 89:87:e9:e8:25:92:b8:7f:85:7a:ae:d6:bc:1e:37:58:2a:67: - c9:91:cf:2a:81:3e:ed:c6:39:df:c0:3e:19:9c:19:cc:13:4d: - 82:41:b5:8c:de:e0:3d:60:08:20:0f:45:7e:6b:a2:7f:a3:8c: - 15:ee - -VeriSign Class 4 Primary CA -=========================== -MD5 Fingerprint: 1B:D1:AD:17:8B:7F:22:13:24:F5:26:E2:5D:4E:B9:10 -PEM Data: ------BEGIN CERTIFICATE----- -MIICMTCCAZoCBQKmAAABMA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgNCBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NjAxMjkwMDAwMDBa -Fw05OTEyMzEyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2ln -biwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgNCBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZp -Y2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0LJ1 -9njQrlpQ9OlQqZ+M1++RlHDo0iSQdomF1t+s5gEXMoDwnZNHvJplnR+Xrr/phnVj -IIm9gFidBAydqMEk6QvlMXi9/C0MN2qeeIDpRnX57aP7E3vIwUzSo+/1PLBij0pd -O92VZ48TucE81qcmm+zDO3rZTbxtm+gVAePwR6kCAwEAATANBgkqhkiG9w0BAQIF -AAOBgQBT3dPwnCR+QKri/AAa19oM/DJhuBUNlvP6Vxt/M3yv6ZiaYch6s7f/sdyZ -g9ysEvxwyR84Qu1E9oAuW2szaayc01znX1oYx7EteQSWQZGZQbE8DbqEOcY7l/Am -yY7uvcxClf8exwI/VAx49byqYHwCaejcrOICdmHEPgPq0ook0Q== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - 02:a6:00:00:01 - Signature Algorithm: md2WithRSAEncryption - Issuer: C=US, O=VeriSign, Inc., OU=Class 4 Public Primary Certification Authority - Validity - Not Before: Jan 29 00:00:00 1996 GMT - Not After : Dec 31 23:59:59 1999 GMT - Subject: C=US, O=VeriSign, Inc., OU=Class 4 Public Primary Certification Authority - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:d0:b2:75:f6:78:d0:ae:5a:50:f4:e9:50:a9:9f: - 8c:d7:ef:91:94:70:e8:d2:24:90:76:89:85:d6:df: - ac:e6:01:17:32:80:f0:9d:93:47:bc:9a:65:9d:1f: - 97:ae:bf:e9:86:75:63:20:89:bd:80:58:9d:04:0c: - 9d:a8:c1:24:e9:0b:e5:31:78:bd:fc:2d:0c:37:6a: - 9e:78:80:e9:46:75:f9:ed:a3:fb:13:7b:c8:c1:4c: - d2:a3:ef:f5:3c:b0:62:8f:4a:5d:3b:dd:95:67:8f: - 13:b9:c1:3c:d6:a7:26:9b:ec:c3:3b:7a:d9:4d:bc: - 6d:9b:e8:15:01:e3:f0:47:a9 - Exponent: 65537 (0x10001) - Signature Algorithm: md2WithRSAEncryption - 53:dd:d3:f0:9c:24:7e:40:aa:e2:fc:00:1a:d7:da:0c:fc:32: - 61:b8:15:0d:96:f3:fa:57:1b:7f:33:7c:af:e9:98:9a:61:c8: - 7a:b3:b7:ff:b1:dc:99:83:dc:ac:12:fc:70:c9:1f:38:42:ed: - 44:f6:80:2e:5b:6b:33:69:ac:9c:d3:5c:e7:5f:5a:18:c7:b1: - 2d:79:04:96:41:91:99:41:b1:3c:0d:ba:84:39:c6:3b:97:f0: - 26:c9:8e:ee:bd:cc:42:95:ff:1e:c7:02:3f:54:0c:78:f5:bc: - aa:60:7c:02:69:e8:dc:ac:e2:02:76:61:c4:3e:03:ea:d2:8a: - 24:d1 - -Verisign Class 1 Public Primary Certification Authority -======================================================= -MD5 Fingerprint: 97:60:E8:57:5F:D3:50:47:E5:43:0C:94:36:8A:B0:62 -PEM Data: ------BEGIN CERTIFICATE----- -MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8xCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh -c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05 -NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYD -VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJp -bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOB -jQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3noaACpEO+jglr0aIguVzqKCbJF0N -H8xlbgyw0FaEGIeaBpsQoXPftFg5a27B9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR -4k5FVmkfeAKA2txHkSm7NsljXMXg1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATAN -BgkqhkiG9w0BAQIFAAOBgQBMP7iLxmjf7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZo -EWx8QszznC7EBz8UsA9P/5CSdvnivErpj82ggAr3xSnxgiJduLHdgSOjeyUVRjB5 -FvjqBUuUfx3CHMjjt/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0ANACY89Fx -lA== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - cd:ba:7f:56:f0:df:e4:bc:54:fe:22:ac:b3:72:aa:55 - Signature Algorithm: md2WithRSAEncryption - Issuer: C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority - Validity - Not Before: Jan 29 00:00:00 1996 GMT - Not After : Aug 1 23:59:59 2028 GMT - Subject: C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:e5:19:bf:6d:a3:56:61:2d:99:48:71:f6:67:de: - b9:8d:eb:b7:9e:86:80:0a:91:0e:fa:38:25:af:46: - 88:82:e5:73:a8:a0:9b:24:5d:0d:1f:cc:65:6e:0c: - b0:d0:56:84:18:87:9a:06:9b:10:a1:73:df:b4:58: - 39:6b:6e:c1:f6:15:d5:a8:a8:3f:aa:12:06:8d:31: - ac:7f:b0:34:d7:8f:34:67:88:09:cd:14:11:e2:4e: - 45:56:69:1f:78:02:80:da:dc:47:91:29:bb:36:c9: - 63:5c:c5:e0:d7:2d:87:7b:a1:b7:32:b0:7b:30:ba: - 2a:2f:31:aa:ee:a3:67:da:db - Exponent: 65537 (0x10001) - Signature Algorithm: md2WithRSAEncryption - 4c:3f:b8:8b:c6:68:df:ee:43:33:0e:5d:e9:a6:cb:07:84:4d: - 7a:33:ff:92:1b:f4:36:ad:d8:95:22:36:68:11:6c:7c:42:cc: - f3:9c:2e:c4:07:3f:14:b0:0f:4f:ff:90:92:76:f9:e2:bc:4a: - e9:8f:cd:a0:80:0a:f7:c5:29:f1:82:22:5d:b8:b1:dd:81:23: - a3:7b:25:15:46:30:79:16:f8:ea:05:4b:94:7f:1d:c2:1c:c8: - e3:b7:f4:10:40:3c:13:c3:5f:1f:53:e8:48:e4:86:b4:7b:a1: - 35:b0:7b:25:ba:b8:d3:8e:ab:3f:38:9d:00:34:00:98:f3:d1: - 71:94 - -Verisign Class 1 Public Primary Certification Authority - G2 -============================================================ -MD5 Fingerprint: F2:7D:E9:54:E4:A3:22:0D:76:9F:E7:0B:BB:B3:24:2B -PEM Data: ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEDnKVIn+UCIy/jLZ2/sbhBkwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTE4MDUxODIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgdk4xWArzZbxpvUjZudVYK -VdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIqWpDBucSm -Fc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAIv3GhDOdlwHq4OZ3BeAbzQ5XZg+a3Is4cei -e0ApuXiIukzFo2penm574/ICQQxmvq37rqIUzpLzojSLtLK2JPLl1eDI5WJthHvL -vrsDi3xXyvA3qZCviu4Dvh0onNkmdqDNxJ1O8K4HFtW+r1cIatCgQkJCHvQgzKV4 -gpUmOIpH ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - 39:ca:54:89:fe:50:22:32:fe:32:d9:db:fb:1b:84:19 - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network - Validity - Not Before: May 18 00:00:00 1998 GMT - Not After : May 18 23:59:59 2018 GMT - Subject: C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:aa:d0:ba:be:16:2d:b8:83:d4:ca:d2:0f:bc:76: - 31:ca:94:d8:1d:93:8c:56:02:bc:d9:6f:1a:6f:52: - 36:6e:75:56:0a:55:d3:df:43:87:21:11:65:8a:7e: - 8f:bd:21:de:6b:32:3f:1b:84:34:95:05:9d:41:35: - eb:92:eb:96:dd:aa:59:3f:01:53:6d:99:4f:ed:e5: - e2:2a:5a:90:c1:b9:c4:a6:15:cf:c8:45:eb:a6:5d: - 8e:9c:3e:f0:64:24:76:a5:cd:ab:1a:6f:b6:d8:7b: - 51:61:6e:a6:7f:87:c8:e2:b7:e5:34:dc:41:88:ea: - 09:40:be:73:92:3d:6b:e7:75 - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 8b:f7:1a:10:ce:76:5c:07:ab:83:99:dc:17:80:6f:34:39:5d: - 98:3e:6b:72:2c:e1:c7:a2:7b:40:29:b9:78:88:ba:4c:c5:a3: - 6a:5e:9e:6e:7b:e3:f2:02:41:0c:66:be:ad:fb:ae:a2:14:ce: - 92:f3:a2:34:8b:b4:b2:b6:24:f2:e5:d5:e0:c8:e5:62:6d:84: - 7b:cb:be:bb:03:8b:7c:57:ca:f0:37:a9:90:af:8a:ee:03:be: - 1d:28:9c:d9:26:76:a0:cd:c4:9d:4e:f0:ae:07:16:d5:be:af: - 57:08:6a:d0:a0:42:42:42:1e:f4:20:cc:a5:78:82:95:26:38: - 8a:47 - -Verisign Class 1 Public Primary Certification Authority - G3 -============================================================ -MD5 Fingerprint: B1:47:BC:18:57:D1:18:A0:78:2D:EC:71:E8:2A:95:73 -PEM Data: ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN2E1Lm0+afY8wR4 -nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/EbRrsC+MO -8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjV -ojYJrKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjb -PG7PoBMAGrgnoeS+Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP2 -6KbqxzcSXKMpHgLZ2x87tNcPVkeBFQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vr -n5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAq2aN17O6x5q25lXQBfGfMY1a -qtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/Ny9Sn2WCVhDr4 -wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3 -ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrs -pSCAaWihT37ha88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4 -E1Z5T21Q6huwtVexN2ZYI/PcD98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - 8b:5b:75:56:84:54:85:0b:00:cf:af:38:48:ce:b1:a4 - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 1 Public Primary Certification Authority - G3 - Validity - Not Before: Oct 1 00:00:00 1999 GMT - Not After : Jul 16 23:59:59 2036 GMT - Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 1 Public Primary Certification Authority - G3 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:dd:84:d4:b9:b4:f9:a7:d8:f3:04:78:9c:de:3d: - dc:6c:13:16:d9:7a:dd:24:51:66:c0:c7:26:59:0d: - ac:06:08:c2:94:d1:33:1f:f0:83:35:1f:6e:1b:c8: - de:aa:6e:15:4e:54:27:ef:c4:6d:1a:ec:0b:e3:0e: - f0:44:a5:57:c7:40:58:1e:a3:47:1f:71:ec:60:f6: - 6d:94:c8:18:39:ed:fe:42:18:56:df:e4:4c:49:10: - 78:4e:01:76:35:63:12:36:dd:66:bc:01:04:36:a3: - 55:68:d5:a2:36:09:ac:ab:21:26:54:06:ad:3f:ca: - 14:e0:ac:ca:ad:06:1d:95:e2:f8:9d:f1:e0:60:ff: - c2:7f:75:2b:4c:cc:da:fe:87:99:21:ea:ba:fe:3e: - 54:d7:d2:59:78:db:3c:6e:cf:a0:13:00:1a:b8:27: - a1:e4:be:67:96:ca:a0:c5:b3:9c:dd:c9:75:9e:eb: - 30:9a:5f:a3:cd:d9:ae:78:19:3f:23:e9:5c:db:29: - bd:ad:55:c8:1b:54:8c:63:f6:e8:a6:ea:c7:37:12: - 5c:a3:29:1e:02:d9:db:1f:3b:b4:d7:0f:56:47:81: - 15:04:4a:af:83:27:d1:c5:58:88:c1:dd:f6:aa:a7: - a3:18:da:68:aa:6d:11:51:e1:bf:65:6b:9f:96:76: - d1:3d - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - ab:66:8d:d7:b3:ba:c7:9a:b6:e6:55:d0:05:f1:9f:31:8d:5a: - aa:d9:aa:46:26:0f:71:ed:a5:ad:53:56:62:01:47:2a:44:e9: - fe:3f:74:0b:13:9b:b9:f4:4d:1b:b2:d1:5f:b2:b6:d2:88:5c: - b3:9f:cd:cb:d4:a7:d9:60:95:84:3a:f8:c1:37:1d:61:ca:e7: - b0:c5:e5:91:da:54:a6:ac:31:81:ae:97:de:cd:08:ac:b8:c0: - 97:80:7f:6e:72:a4:e7:69:13:95:65:1f:c4:93:3c:fd:79:8f: - 04:d4:3e:4f:ea:f7:9e:ce:cd:67:7c:4f:65:02:ff:91:85:54: - 73:c7:ff:36:f7:86:2d:ec:d0:5e:4f:ff:11:9f:72:06:d6:b8: - 1a:f1:4c:0d:26:65:e2:44:80:1e:c7:9f:e3:dd:e8:0a:da:ec: - a5:20:80:69:68:a1:4f:7e:e1:6b:cf:07:41:fa:83:8e:bc:38: - dd:b0:2e:11:b1:6b:b2:42:cc:9a:bc:f9:48:22:79:4a:19:0f: - b2:1c:3e:20:74:d9:6a:c3:be:f2:28:78:13:56:79:4f:6d:50: - ea:1b:b0:b5:57:b1:37:66:58:23:f3:dc:0f:df:0a:87:c4:ef: - 86:05:d5:38:14:60:99:a3:4b:de:06:96:71:2c:f2:db:b6:1f: - a4:ef:3f:ee - -Verisign Class 2 Public Primary Certification Authority -======================================================= -MD5 Fingerprint: B3:9C:25:B1:C3:2E:32:53:80:15:30:9D:4D:02:77:3E -PEM Data: ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAyIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZMJaLtVRKXxaeAufqDwSCg+i8VDXyh -YGt+eSz6Bg86rvYbb7HS/y8oUl+DfUvEerf4Zh+AVPy3wo5ZShRXRtGak75BkQO7 -FYCTXOvnzAhsPz6zSvz/S2wj1VCCJkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBAIobK/o5wXTXXtgZZKJYSi034DNHD6zt96rbHuSLBlxg -J8pFUs4W7z8GZOeUaHxgMxURaa+dYo2jA1Rrpr7l7gUYYAS/QoD90KioHgE796Nc -r6Pc5iaAIzy4RHT3Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2lw0Xd8rY ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - 2d:1b:fc:4a:17:8d:a3:91:eb:e7:ff:f5:8b:45:be:0b - Signature Algorithm: md2WithRSAEncryption - Issuer: C=US, O=VeriSign, Inc., OU=Class 2 Public Primary Certification Authority - Validity - Not Before: Jan 29 00:00:00 1996 GMT - Not After : Aug 1 23:59:59 2028 GMT - Subject: C=US, O=VeriSign, Inc., OU=Class 2 Public Primary Certification Authority - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:b6:5a:8b:a3:0d:6a:23:83:80:6b:cf:39:87:f4: - 21:13:33:06:4c:25:a2:ed:55:12:97:c5:a7:80:b9: - fa:83:c1:20:a0:fa:2f:15:0d:7c:a1:60:6b:7e:79: - 2c:fa:06:0f:3a:ae:f6:1b:6f:b1:d2:ff:2f:28:52: - 5f:83:7d:4b:c4:7a:b7:f8:66:1f:80:54:fc:b7:c2: - 8e:59:4a:14:57:46:d1:9a:93:be:41:91:03:bb:15: - 80:93:5c:eb:e7:cc:08:6c:3f:3e:b3:4a:fc:ff:4b: - 6c:23:d5:50:82:26:44:19:8e:23:c3:71:ea:19:24: - 47:04:9e:75:bf:c8:a6:00:1f - Exponent: 65537 (0x10001) - Signature Algorithm: md2WithRSAEncryption - 8a:1b:2b:fa:39:c1:74:d7:5e:d8:19:64:a2:58:4a:2d:37:e0: - 33:47:0f:ac:ed:f7:aa:db:1e:e4:8b:06:5c:60:27:ca:45:52: - ce:16:ef:3f:06:64:e7:94:68:7c:60:33:15:11:69:af:9d:62: - 8d:a3:03:54:6b:a6:be:e5:ee:05:18:60:04:bf:42:80:fd:d0: - a8:a8:1e:01:3b:f7:a3:5c:af:a3:dc:e6:26:80:23:3c:b8:44: - 74:f7:0a:ae:49:8b:61:78:cc:24:bf:88:8a:a7:0e:ea:73:19: - 41:fd:4d:03:f0:88:d1:e5:78:8d:a5:2a:4f:f6:97:0d:17:77: - ca:d8 - -Verisign Class 2 Public Primary Certification Authority - G2 -============================================================ -MD5 Fingerprint: 2D:BB:E5:25:D3:D1:65:82:3A:B7:0E:FA:E6:EB:E2:E1 -PEM Data: ------BEGIN CERTIFICATE----- -MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns -YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH -MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y -aXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe -Fw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX -MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj -IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx -KGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s -eTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM -HiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw -DqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC -AwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji -nb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX -rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn -jBJ7xUS0rg== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - b9:2f:60:cc:88:9f:a1:7a:46:09:b8:5b:70:6c:8a:af - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=VeriSign, Inc., OU=Class 2 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network - Validity - Not Before: May 18 00:00:00 1998 GMT - Not After : Aug 1 23:59:59 2028 GMT - Subject: C=US, O=VeriSign, Inc., OU=Class 2 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:a7:88:01:21:74:2c:e7:1a:03:f0:98:e1:97:3c: - 0f:21:08:f1:9c:db:97:e9:9a:fc:c2:04:06:13:be: - 5f:52:c8:cc:1e:2c:12:56:2c:b8:01:69:2c:cc:99: - 1f:ad:b0:96:ae:79:04:f2:13:39:c1:7b:98:ba:08: - 2c:e8:c2:84:13:2c:aa:69:e9:09:f4:c7:a9:02:a4: - 42:c2:23:4f:4a:d8:f0:0e:a2:fb:31:6c:c9:e6:6f: - 99:27:07:f5:e6:f4:4c:78:9e:6d:eb:46:86:fa:b9: - 86:c9:54:f2:b2:c4:af:d4:46:1c:5a:c9:15:30:ff: - 0d:6c:f5:2d:0e:6d:ce:7f:77 - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 72:2e:f9:7f:d1:f1:71:fb:c4:9e:f6:c5:5e:51:8a:40:98:b8: - 68:f8:9b:1c:83:d8:e2:9d:bd:ff:ed:a1:e6:66:ea:2f:09:f4: - ca:d7:ea:a5:2b:95:f6:24:60:86:4d:44:2e:83:a5:c4:2d:a0: - d3:ae:78:69:6f:72:da:6c:ae:08:f0:63:92:37:e6:bb:c4:30: - 17:ad:77:cc:49:35:aa:cf:d8:8f:d1:be:b7:18:96:47:73:6a: - 54:22:34:64:2d:b6:16:9b:59:5b:b4:51:59:3a:b3:0b:14:f4: - 12:df:67:a0:f4:ad:32:64:5e:b1:46:72:27:8c:12:7b:c5:44: - b4:ae - -Verisign Class 2 Public Primary Certification Authority - G3 -============================================================ -MD5 Fingerprint: F8:BE:C4:63:22:C9:A8:46:74:8B:B8:1D:1E:4A:2B:F6 -PEM Data: ------BEGIN CERTIFICATE----- -MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVy -aVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24s -IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNp -Z24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJBgNV -BAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp -Z24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIElu -Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24g -Q2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt -IEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArwoNwtUs22e5LeWU -J92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6tW8UvxDO -JxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUY -wZF7C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9o -koqQHgiBVrKtaaNS0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjN -qWm6o+sdDZykIKbBoMXRRkwXbdKsZj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/E -Srg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0JhU8wI1NQ0kdvekhktdmnLfe -xbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf0xwLRtxyID+u -7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU -sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RI -sH/7NiXaldDxJBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTP -cjnhsUPgKM+351psE2tJs//jGHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - 61:70:cb:49:8c:5f:98:45:29:e7:b0:a6:d9:50:5b:7a - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 2 Public Primary Certification Authority - G3 - Validity - Not Before: Oct 1 00:00:00 1999 GMT - Not After : Jul 16 23:59:59 2036 GMT - Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 2 Public Primary Certification Authority - G3 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:af:0a:0d:c2:d5:2c:db:67:b9:2d:e5:94:27:dd: - a5:be:e0:b0:4d:8f:b3:61:56:3c:d6:7c:c3:f4:cd: - 3e:86:cb:a2:88:e2:e1:d8:a4:69:c5:b5:e2:bf:c1: - a6:47:50:5e:46:39:8b:d5:96:ba:b5:6f:14:bf:10: - ce:27:13:9e:05:47:9b:31:7a:13:d8:1f:d9:d3:02: - 37:8b:ad:2c:47:f0:8e:81:06:a7:0d:30:0c:eb:f7: - 3c:0f:20:1d:dc:72:46:ee:a5:02:c8:5b:c3:c9:56: - 69:4c:c5:18:c1:91:7b:0b:d5:13:00:9b:bc:ef:c3: - 48:3e:46:60:20:85:2a:d5:90:b6:cd:8b:a0:cc:32: - dd:b7:fd:40:55:b2:50:1c:56:ae:cc:8d:77:4d:c7: - 20:4d:a7:31:76:ef:68:92:8a:90:1e:08:81:56:b2: - ad:69:a3:52:d0:cb:1c:c4:23:3d:1f:99:fe:4c:e8: - 16:63:8e:c6:08:8e:f6:31:f6:d2:fa:e5:76:dd:b5: - 1c:92:a3:49:cd:cd:01:cd:68:cd:a9:69:ba:a3:eb: - 1d:0d:9c:a4:20:a6:c1:a0:c5:d1:46:4c:17:6d:d2: - ac:66:3f:96:8c:e0:84:d4:36:ff:22:59:c5:f9:11: - 60:a8:5f:04:7d:f2:1a:f6:25:42:61:0f:c4:4a:b8: - 3e:89 - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 34:26:15:3c:c0:8d:4d:43:49:1d:bd:e9:21:92:d7:66:9c:b7: - de:c5:b8:d0:e4:5d:5f:76:22:c0:26:f9:84:3a:3a:f9:8c:b5: - fb:ec:60:f1:e8:ce:04:b0:c8:dd:a7:03:8f:30:f3:98:df:a4: - e6:a4:31:df:d3:1c:0b:46:dc:72:20:3f:ae:ee:05:3c:a4:33: - 3f:0b:39:ac:70:78:73:4b:99:2b:df:30:c2:54:b0:a8:3b:55: - a1:fe:16:28:cd:42:bd:74:6e:80:db:27:44:a7:ce:44:5d:d4: - 1b:90:98:0d:1e:42:94:b1:00:2c:04:d0:74:a3:02:05:22:63: - 63:cd:83:b5:fb:c1:6d:62:6b:69:75:fd:5d:70:41:b9:f5:bf: - 7c:df:be:c1:32:73:22:21:8b:58:81:7b:15:91:7a:ba:e3:64: - 48:b0:7f:fb:36:25:da:95:d0:f1:24:14:17:dd:18:80:6b:46: - 23:39:54:f5:8e:62:09:04:1d:94:90:a6:9b:e6:25:e2:42:45: - aa:b8:90:ad:be:08:8f:a9:0b:42:18:94:cf:72:39:e1:b1:43: - e0:28:cf:b7:e7:5a:6c:13:6b:49:b3:ff:e3:18:7c:89:8b:33: - 5d:ac:33:d7:a7:f9:da:3a:55:c9:58:10:f9:aa:ef:5a:b6:cf: - 4b:4b:df:2a - -Verisign Class 3 Public Primary Certification Authority -======================================================= -MD5 Fingerprint: 10:FC:63:5D:F6:26:3E:0D:F3:25:BE:5F:79:CD:67:67 -PEM Data: ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do -lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc -AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - 70:ba:e4:1d:10:d9:29:34:b6:38:ca:7b:03:cc:ba:bf - Signature Algorithm: md2WithRSAEncryption - Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority - Validity - Not Before: Jan 29 00:00:00 1996 GMT - Not After : Aug 1 23:59:59 2028 GMT - Subject: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:c9:5c:59:9e:f2:1b:8a:01:14:b4:10:df:04:40: - db:e3:57:af:6a:45:40:8f:84:0c:0b:d1:33:d9:d9: - 11:cf:ee:02:58:1f:25:f7:2a:a8:44:05:aa:ec:03: - 1f:78:7f:9e:93:b9:9a:00:aa:23:7d:d6:ac:85:a2: - 63:45:c7:72:27:cc:f4:4c:c6:75:71:d2:39:ef:4f: - 42:f0:75:df:0a:90:c6:8e:20:6f:98:0f:f8:ac:23: - 5f:70:29:36:a4:c9:86:e7:b1:9a:20:cb:53:a5:85: - e7:3d:be:7d:9a:fe:24:45:33:dc:76:15:ed:0f:a2: - 71:64:4c:65:2e:81:68:45:a7 - Exponent: 65537 (0x10001) - Signature Algorithm: md2WithRSAEncryption - bb:4c:12:2b:cf:2c:26:00:4f:14:13:dd:a6:fb:fc:0a:11:84: - 8c:f3:28:1c:67:92:2f:7c:b6:c5:fa:df:f0:e8:95:bc:1d:8f: - 6c:2c:a8:51:cc:73:d8:a4:c0:53:f0:4e:d6:26:c0:76:01:57: - 81:92:5e:21:f1:d1:b1:ff:e7:d0:21:58:cd:69:17:e3:44:1c: - 9c:19:44:39:89:5c:dc:9c:00:0f:56:8d:02:99:ed:a2:90:45: - 4c:e4:bb:10:a4:3d:f0:32:03:0e:f1:ce:f8:e8:c9:51:8c:e6: - 62:9f:e6:9f:c0:7d:b7:72:9c:c9:36:3a:6b:9f:4e:a8:ff:64: - 0d:64 - -Verisign Class 3 Public Primary Certification Authority - G2 -============================================================ -MD5 Fingerprint: A2:33:9B:4C:74:78:73:D4:6C:E7:C1:F3:8D:CB:5C:E9 -PEM Data: ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 -pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 -13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk -U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i -F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY -oJ2daZH9 ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - 7d:d9:fe:07:cf:a8:1e:b7:10:79:67:fb:a7:89:34:c6 - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network - Validity - Not Before: May 18 00:00:00 1998 GMT - Not After : Aug 1 23:59:59 2028 GMT - Subject: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:cc:5e:d1:11:5d:5c:69:d0:ab:d3:b9:6a:4c:99: - 1f:59:98:30:8e:16:85:20:46:6d:47:3f:d4:85:20: - 84:e1:6d:b3:f8:a4:ed:0c:f1:17:0f:3b:f9:a7:f9: - 25:d7:c1:cf:84:63:f2:7c:63:cf:a2:47:f2:c6:5b: - 33:8e:64:40:04:68:c1:80:b9:64:1c:45:77:c7:d8: - 6e:f5:95:29:3c:50:e8:34:d7:78:1f:a8:ba:6d:43: - 91:95:8f:45:57:5e:7e:c5:fb:ca:a4:04:eb:ea:97: - 37:54:30:6f:bb:01:47:32:33:cd:dc:57:9b:64:69: - 61:f8:9b:1d:1c:89:4f:5c:67 - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 51:4d:cd:be:5c:cb:98:19:9c:15:b2:01:39:78:2e:4d:0f:67: - 70:70:99:c6:10:5a:94:a4:53:4d:54:6d:2b:af:0d:5d:40:8b: - 64:d3:d7:ee:de:56:61:92:5f:a6:c4:1d:10:61:36:d3:2c:27: - 3c:e8:29:09:b9:11:64:74:cc:b5:73:9f:1c:48:a9:bc:61:01: - ee:e2:17:a6:0c:e3:40:08:3b:0e:e7:eb:44:73:2a:9a:f1:69: - 92:ef:71:14:c3:39:ac:71:a7:91:09:6f:e4:71:06:b3:ba:59: - 57:26:79:00:f6:f8:0d:a2:33:30:28:d4:aa:58:a0:9d:9d:69: - 91:fd - -Verisign Class 3 Public Primary Certification Authority - G3 -============================================================ -MD5 Fingerprint: CD:68:B6:A7:C7:C4:CE:75:E0:1D:4F:57:44:61:92:09 -PEM Data: ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b -N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t -KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu -kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm -CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ -Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu -imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te -2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe -DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC -/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p -F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt -TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - 9b:7e:06:49:a3:3e:62:b9:d5:ee:90:48:71:29:ef:57 - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G3 - Validity - Not Before: Oct 1 00:00:00 1999 GMT - Not After : Jul 16 23:59:59 2036 GMT - Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 3 Public Primary Certification Authority - G3 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:cb:ba:9c:52:fc:78:1f:1a:1e:6f:1b:37:73:bd: - f8:c9:6b:94:12:30:4f:f0:36:47:f5:d0:91:0a:f5: - 17:c8:a5:61:c1:16:40:4d:fb:8a:61:90:e5:76:20: - c1:11:06:7d:ab:2c:6e:a6:f5:11:41:8e:fa:2d:ad: - 2a:61:59:a4:67:26:4c:d0:e8:bc:52:5b:70:20:04: - 58:d1:7a:c9:a4:69:bc:83:17:64:ad:05:8b:bc:d0: - 58:ce:8d:8c:f5:eb:f0:42:49:0b:9d:97:27:67:32: - 6e:e1:ae:93:15:1c:70:bc:20:4d:2f:18:de:92:88: - e8:6c:85:57:11:1a:e9:7e:e3:26:11:54:a2:45:96: - 55:83:ca:30:89:e8:dc:d8:a3:ed:2a:80:3f:7f:79: - 65:57:3e:15:20:66:08:2f:95:93:bf:aa:47:2f:a8: - 46:97:f0:12:e2:fe:c2:0a:2b:51:e6:76:e6:b7:46: - b7:e2:0d:a6:cc:a8:c3:4c:59:55:89:e6:e8:53:5c: - 1c:ea:9d:f0:62:16:0b:a7:c9:5f:0c:f0:de:c2:76: - ce:af:f7:6a:f2:fa:41:a6:a2:33:14:c9:e5:7a:63: - d3:9e:62:37:d5:85:65:9e:0e:e6:53:24:74:1b:5e: - 1d:12:53:5b:c7:2c:e7:83:49:3b:15:ae:8a:68:b9: - 57:97 - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 11:14:96:c1:ab:92:08:f7:3f:2f:c9:b2:fe:e4:5a:9f:64:de: - db:21:4f:86:99:34:76:36:57:dd:d0:15:2f:c5:ad:7f:15:1f: - 37:62:73:3e:d4:e7:5f:ce:17:03:db:35:fa:2b:db:ae:60:09: - 5f:1e:5f:8f:6e:bb:0b:3d:ea:5a:13:1e:0c:60:6f:b5:c0:b5: - 23:22:2e:07:0b:cb:a9:74:cb:47:bb:1d:c1:d7:a5:6b:cc:2f: - d2:42:fd:49:dd:a7:89:cf:53:ba:da:00:5a:28:bf:82:df:f8: - ba:13:1d:50:86:82:fd:8e:30:8f:29:46:b0:1e:3d:35:da:38: - 62:16:18:4a:ad:e6:b6:51:6c:de:af:62:eb:01:d0:1e:24:fe: - 7a:8f:12:1a:12:68:b8:fb:66:99:14:14:45:5c:ae:e7:ae:69: - 17:81:2b:5a:37:c9:5e:2a:f4:c6:e2:a1:5c:54:9b:a6:54:00: - cf:f0:f1:c1:c7:98:30:1a:3b:36:16:db:a3:6e:ea:fd:ad:b2: - c2:da:ef:02:47:13:8a:c0:f1:b3:31:ad:4f:1c:e1:4f:9c:af: - 0f:0c:9d:f7:78:0d:d8:f4:35:56:80:da:b7:6d:17:8f:9d:1e: - 81:64:e1:fe:c5:45:ba:ad:6b:b9:0a:7a:4e:4f:4b:84:ee:4b: - f1:7d:dd:11 - -Verisign Class 4 Public Primary Certification Authority - G2 -============================================================ -MD5 Fingerprint: 26:6D:2C:19:98:B6:70:68:38:50:54:19:EC:90:34:60 -PEM Data: ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEDKIjprS9esTR/h/xCA3JfgwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgNCBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQC68OTP+cSuhVS5B1f5j8V/aBH4xBewRNzjMHPVKmIquNDM -HO0oW369atyzkSTKQWI8/AIBvxwWMZQFl3Zuoq29YRdsTjCG8FE3KlDHqGKB3FtK -qsGgtG7rL+VXxbErQHDbWk2hjh+9Ax/YA9SPTJlxvOKCzFjomDqG04Y48wApHwID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAIWMEsGnuVAVess+rLhDityq3RS6iYF+ATwj -cSGIL4LcY/oCRaxFWdcqWERbt5+BO5JoPeI3JPV7bI92NZYJqFmduc4jq3TWg/0y -cyfYaT5DdPauxYma51N86Xv2S/PBZYPejYqcPIiNOVn8qj8ijaHBZlCBckztImRP -T8qAkbYp ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - 32:88:8e:9a:d2:f5:eb:13:47:f8:7f:c4:20:37:25:f8 - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=VeriSign, Inc., OU=Class 4 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network - Validity - Not Before: May 18 00:00:00 1998 GMT - Not After : Aug 1 23:59:59 2028 GMT - Subject: C=US, O=VeriSign, Inc., OU=Class 4 Public Primary Certification Authority - G2, OU=(c) 1998 VeriSign, Inc. - For authorized use only, OU=VeriSign Trust Network - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:ba:f0:e4:cf:f9:c4:ae:85:54:b9:07:57:f9:8f: - c5:7f:68:11:f8:c4:17:b0:44:dc:e3:30:73:d5:2a: - 62:2a:b8:d0:cc:1c:ed:28:5b:7e:bd:6a:dc:b3:91: - 24:ca:41:62:3c:fc:02:01:bf:1c:16:31:94:05:97: - 76:6e:a2:ad:bd:61:17:6c:4e:30:86:f0:51:37:2a: - 50:c7:a8:62:81:dc:5b:4a:aa:c1:a0:b4:6e:eb:2f: - e5:57:c5:b1:2b:40:70:db:5a:4d:a1:8e:1f:bd:03: - 1f:d8:03:d4:8f:4c:99:71:bc:e2:82:cc:58:e8:98: - 3a:86:d3:86:38:f3:00:29:1f - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 85:8c:12:c1:a7:b9:50:15:7a:cb:3e:ac:b8:43:8a:dc:aa:dd: - 14:ba:89:81:7e:01:3c:23:71:21:88:2f:82:dc:63:fa:02:45: - ac:45:59:d7:2a:58:44:5b:b7:9f:81:3b:92:68:3d:e2:37:24: - f5:7b:6c:8f:76:35:96:09:a8:59:9d:b9:ce:23:ab:74:d6:83: - fd:32:73:27:d8:69:3e:43:74:f6:ae:c5:89:9a:e7:53:7c:e9: - 7b:f6:4b:f3:c1:65:83:de:8d:8a:9c:3c:88:8d:39:59:fc:aa: - 3f:22:8d:a1:c1:66:50:81:72:4c:ed:22:64:4f:4f:ca:80:91: - b6:29 - -Verisign Class 4 Public Primary Certification Authority - G3 -============================================================ -MD5 Fingerprint: DB:C8:F2:27:2E:B1:EA:6A:29:23:5D:FE:56:3E:33:DF -PEM Data: ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1 -GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ -+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd -U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm -NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY -ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ -ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1 -CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq -g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm -fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c -2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/ -bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - ec:a0:a7:8b:6e:75:6a:01:cf:c4:7c:cc:2f:94:5e:d7 - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 4 Public Primary Certification Authority - G3 - Validity - Not Before: Oct 1 00:00:00 1999 GMT - Not After : Jul 16 23:59:59 2036 GMT - Subject: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=(c) 1999 VeriSign, Inc. - For authorized use only, CN=VeriSign Class 4 Public Primary Certification Authority - G3 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:ad:cb:a5:11:69:c6:59:ab:f1:8f:b5:19:0f:56: - ce:cc:b5:1f:20:e4:9e:26:25:4b:e0:73:65:89:59: - de:d0:83:e4:f5:0f:b5:bb:ad:f1:7c:e8:21:fc:e4: - e8:0c:ee:7c:45:22:19:76:92:b4:13:b7:20:5b:09: - fa:61:ae:a8:f2:a5:8d:85:c2:2a:d6:de:66:36:d2: - 9b:02:f4:a8:92:60:7c:9c:69:b4:8f:24:1e:d0:86: - 52:f6:32:9c:41:58:1e:22:bd:cd:45:62:95:08:6e: - d0:66:dd:53:a2:cc:f0:10:dc:54:73:8b:04:a1:46: - 33:33:5c:17:40:b9:9e:4d:d3:f3:be:55:83:e8:b1: - 89:8e:5a:7c:9a:96:22:90:3b:88:25:f2:d2:53:88: - 02:0c:0b:78:f2:e6:37:17:4b:30:46:07:e4:80:6d: - a6:d8:96:2e:e8:2c:f8:11:b3:38:0d:66:a6:9b:ea: - c9:23:5b:db:8e:e2:f3:13:8e:1a:59:2d:aa:02:f0: - ec:a4:87:66:dc:c1:3f:f5:d8:b9:f4:ec:82:c6:d2: - 3d:95:1d:e5:c0:4f:84:c9:d9:a3:44:28:06:6a:d7: - 45:ac:f0:6b:6a:ef:4e:5f:f8:11:82:1e:38:63:34: - 66:50:d4:3e:93:73:fa:30:c3:66:ad:ff:93:2d:97: - ef:03 - Exponent: 65537 (0x10001) - Signature Algorithm: sha1WithRSAEncryption - 8f:fa:25:6b:4f:5b:e4:a4:4e:27:55:ab:22:15:59:3c:ca:b5: - 0a:d4:4a:db:ab:dd:a1:5f:53:c5:a0:57:39:c2:ce:47:2b:be: - 3a:c8:56:bf:c2:d9:27:10:3a:b1:05:3c:c0:77:31:bb:3a:d3: - 05:7b:6d:9a:1c:30:8c:80:cb:93:93:2a:83:ab:05:51:82:02: - 00:11:67:6b:f3:88:61:47:5f:03:93:d5:5b:0d:e0:f1:d4:a1: - 32:35:85:b2:3a:db:b0:82:ab:d1:cb:0a:bc:4f:8c:5b:c5:4b: - 00:3b:1f:2a:82:a6:7e:36:85:dc:7e:3c:67:00:b5:e4:3b:52: - e0:a8:eb:5d:15:f9:c6:6d:f0:ad:1d:0e:85:b7:a9:9a:73:14: - 5a:5b:8f:41:28:c0:d5:e8:2d:4d:a4:5e:cd:aa:d9:ed:ce:dc: - d8:d5:3c:42:1d:17:c1:12:5d:45:38:c3:38:f3:fc:85:2e:83: - 46:48:b2:d7:20:5f:92:36:8f:e7:79:0f:98:5e:99:e8:f0:d0: - a4:bb:f5:53:bd:2a:ce:59:b0:af:6e:7f:6c:bb:d2:1e:00:b0: - 21:ed:f8:41:62:82:b9:d8:b2:c4:bb:46:50:f3:31:c5:8f:01: - a8:74:eb:f5:78:27:da:e7:f7:66:43:f3:9e:83:3e:20:aa:c3: - 35:60:91:ce - -Verisign/RSA Commercial CA -========================== -MD5 Fingerprint: 5A:0B:DD:42:9E:B2:B4:62:97:32:7F:7F:0A:AA:9A:39 -PEM Data: ------BEGIN CERTIFICATE----- -MIICIzCCAZACBQJBAAAWMA0GCSqGSIb3DQEBAgUAMFwxCzAJBgNVBAYTAlVTMSAw -HgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjErMCkGA1UECxMiQ29tbWVy -Y2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NDExMDQxODU4MzRaFw05 -OTExMDMxODU4MzRaMFwxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBT -ZWN1cml0eSwgSW5jLjErMCkGA1UECxMiQ29tbWVyY2lhbCBDZXJ0aWZpY2F0aW9u -IEF1dGhvcml0eTCBmzANBgkqhkiG9w0BAQEFAAOBiQAwgYUCfgCk+4Fie84QJ93o -975sbsZwmdu41QUDaSiCnHJ/lj+O7Kwpkj+KFPhCdr69XQO5kNTQvAayUTNfxMK/ -touPmbZiImDd298ggrTKoi8tUO2UMt7gVY3UaOLgTNLNBRYulWZcYVI4HlGogqHE -7yXpCuaLK44xZtn42f29O2nZ6wIDAQABMA0GCSqGSIb3DQEBAgUAA34AdrW2EP4j -9/dZYkuwX5zBaLxJu7NJbyFHXSudVMQAKD+YufKKg5tgf+tQx6sFEC097TgCwaVI -0v5loMC86qYjFmZsGySp8+x5NRhPJsjjr1BKx6cxa9B8GJ1Qv6km+iYrRpwUqbtb -MJhCKLVLU7tDCZJAuqiqWqTGtotXTcU= ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - 02:41:00:00:16 - Signature Algorithm: md2WithRSAEncryption - Issuer: C=US, O=RSA Data Security, Inc., OU=Commercial Certification Authority - Validity - Not Before: Nov 4 18:58:34 1994 GMT - Not After : Nov 3 18:58:34 1999 GMT - Subject: C=US, O=RSA Data Security, Inc., OU=Commercial Certification Authority - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1000 bit) - Modulus (1000 bit): - 00:a4:fb:81:62:7b:ce:10:27:dd:e8:f7:be:6c:6e: - c6:70:99:db:b8:d5:05:03:69:28:82:9c:72:7f:96: - 3f:8e:ec:ac:29:92:3f:8a:14:f8:42:76:be:bd:5d: - 03:b9:90:d4:d0:bc:06:b2:51:33:5f:c4:c2:bf:b6: - 8b:8f:99:b6:62:22:60:dd:db:df:20:82:b4:ca:a2: - 2f:2d:50:ed:94:32:de:e0:55:8d:d4:68:e2:e0:4c: - d2:cd:05:16:2e:95:66:5c:61:52:38:1e:51:a8:82: - a1:c4:ef:25:e9:0a:e6:8b:2b:8e:31:66:d9:f8:d9: - fd:bd:3b:69:d9:eb - Exponent: 65537 (0x10001) - Signature Algorithm: md2WithRSAEncryption - 76:b5:b6:10:fe:23:f7:f7:59:62:4b:b0:5f:9c:c1:68:bc:49: - bb:b3:49:6f:21:47:5d:2b:9d:54:c4:00:28:3f:98:b9:f2:8a: - 83:9b:60:7f:eb:50:c7:ab:05:10:2d:3d:ed:38:02:c1:a5:48: - d2:fe:65:a0:c0:bc:ea:a6:23:16:66:6c:1b:24:a9:f3:ec:79: - 35:18:4f:26:c8:e3:af:50:4a:c7:a7:31:6b:d0:7c:18:9d:50: - bf:a9:26:fa:26:2b:46:9c:14:a9:bb:5b:30:98:42:28:b5:4b: - 53:bb:43:09:92:40:ba:a8:aa:5a:a4:c6:b6:8b:57:4d:c5 - -Verisign/RSA Secure Server CA -============================= -MD5 Fingerprint: 74:7B:82:03:43:F0:00:9E:6B:B3:EC:47:BF:85:A5:93 -PEM Data: ------BEGIN CERTIFICATE----- -MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD -VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0 -MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxIDAeBgNV -BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2Vy -dmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUAA4GJ -ADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII -0haGN1XpsSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphI -uR2nKRoTLkoRWZweFdVJVCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZI -hvcNAQECBQADfgBl3X7hsuyw4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3 -YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc -1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA== ------END CERTIFICATE----- -Certificate Ingredients: - Data: - Version: 1 (0x0) - Serial Number: - 02:ad:66:7e:4e:45:fe:5e:57:6f:3c:98:19:5e:dd:c0 - Signature Algorithm: md2WithRSAEncryption - Issuer: C=US, O=RSA Data Security, Inc., OU=Secure Server Certification Authority - Validity - Not Before: Nov 9 00:00:00 1994 GMT - Not After : Jan 7 23:59:59 2010 GMT - Subject: C=US, O=RSA Data Security, Inc., OU=Secure Server Certification Authority - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1000 bit) - Modulus (1000 bit): - 00:92:ce:7a:c1:ae:83:3e:5a:aa:89:83:57:ac:25: - 01:76:0c:ad:ae:8e:2c:37:ce:eb:35:78:64:54:03: - e5:84:40:51:c9:bf:8f:08:e2:8a:82:08:d2:16:86: - 37:55:e9:b1:21:02:ad:76:68:81:9a:05:a2:4b:c9: - 4b:25:66:22:56:6c:88:07:8f:f7:81:59:6d:84:07: - 65:70:13:71:76:3e:9b:77:4c:e3:50:89:56:98:48: - b9:1d:a7:29:1a:13:2e:4a:11:59:9c:1e:15:d5:49: - 54:2c:73:3a:69:82:b1:97:39:9c:6d:70:67:48:e5: - dd:2d:d6:c8:1e:7b - Exponent: 65537 (0x10001) - Signature Algorithm: md2WithRSAEncryption - 65:dd:7e:e1:b2:ec:b0:e2:3a:e0:ec:71:46:9a:19:11:b8:d3: - c7:a0:b4:03:40:26:02:3e:09:9c:e1:12:b3:d1:5a:f6:37:a5: - b7:61:03:b6:5b:16:69:3b:c6:44:08:0c:88:53:0c:6b:97:49: - c7:3e:35:dc:6c:b9:bb:aa:df:5c:bb:3a:2f:93:60:b6:a9:4b: - 4d:f2:20:f7:cd:5f:7f:64:7b:8e:dc:00:5c:d7:fa:77:ca:39: - 16:59:6f:0e:ea:d3:b5:83:7f:4d:4d:42:56:76:b4:c9:5f:04: - f8:38:f8:eb:d2:5f:75:5f:cd:7b:fc:e5:8e:80:7c:fc:50 - -Root 5 - Equifax Secure Global eBusiness CA-1 -============================================= -MD5 Fingerprint: 8F:5D:77:06:27:C4:98:3C:5B:93:78:E7:D7:7D:9B:CC -PEM Data: ------BEGIN CERTIFICATE----- -MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT -ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw -MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj -dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l -c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC -UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc -58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ -o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH -MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr -aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA -A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA -Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv -8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV ------END CERTIFICATE----- - diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/curl.exe b/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/curl.exe deleted file mode 100755 index d99b7c65313425de4bff795e9c59b9a4a8a65e08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655360 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℞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 T?DfE25A5~8UJv{q^uYfB0WRVJ diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/CHANGES b/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/CHANGES deleted file mode 100644 index 5eb21e03..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/CHANGES +++ /dev/null @@ -1,1344 +0,0 @@ - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| - - Changelog - - -Version 7.10.8 (1 November 2003) - -Daniel (31 October) -- Assume that MDTM on an FTP server returns the timestamp using the UTC time - zone. This changes the time CURLINFO_FILETIME returns for a given file over - FTP, and will change existing uses of CURLOPT_TIMECONDITION. It will make - the functionality more similar to how the HTTP one is already working. - -- Command line options that take numerical parameters (such as -y, -Y, -C etc) - now report error and exit if the parameter isn't truly a number greater than - or equal to zero. This helps users to notice bad usage earlier. Before, when - a user forgot or missed to add a numerical parameter to an option, the - command line parser would simply "eat" the following option and it would - cause great confusion. - -Daniel (30 October) -- David Hull made libcurl deal with NOBODY and HEADER for file:// the same way - it already does for FTP: it provides HTTP-looking headers that provide info - only about the file, without doing the actual transfer. The curl tool then - lets --head do this. - -Daniel (29 October) -- runtests.pl now checks for and use valgrind if present. It will redirect the - valgrind results in log/valgrind[num] but it currently doesn't scan that - file for any errors or anything, that is still only made manually. - -- David Hull made the file: URL parser also accept the somewhat sloppy file - syntax: file:/path. I added test case 203 to verify this. - -Daniel (28 October) -- Dan C tracked down yet another weird behavior in the glibc gethostbyname_r() - function for some specific versions (reported on 2.2.5 and 2.1.1), and - provided a fix. On Linux machines with these glibc versioins, non-ipv6 - builds of libcurl would often fail to resolve perfectly resolvable host - names. - -Daniel (26 October) -- James Bursa found out that curl_msnprintf() could write the trailing - zero-byte outside its given buffer size. This could happen if you generated - a very long error message as then libcurl would overwrite the ERRORBUFFER - with one byte. Using a non-existing very long local file:// name is one case - that could make this occur. - -Daniel (24 October) -- David Hull filed bug report #829827. It identified a problem with -C - if - the full file already was downloaded and thus the server responded with a - 416. libcurl would then wrongly use the Content-Length: header and expect - that size to get transfer, causing a "hang" until the server closed the - connection and then an error 18 ("still N bytes data left of the transfer"). - - Now we don't return any error at all, but I think libcurl should perhaps - return some kind of info since the requested range was out of the size of - the document. - -- Based on David Hull's fix in bug report #804599, we now check for solaris and - gcc in configure and set the -mimpure-text link flag for linking the lib - better. - -- I've introduced a -t option to the runtests.pl script. With that option set, - the script runs special "memory torture" tests. For each test command line - in that section, the script first runs the command line and counts the total - amount of allocations made. It then runs the exact same command line again, - forcing allocation number N to fail. It will try every N from 1 to the total - number of amounts made. For every invoke, it checks that no memory was - leaked as that would indicate a bad cleanup somewhere in the code. - - This is just beginning to work, and I've already made some corrections in - libcurl code. When this code works somewhat fine, I'll make sure 'make test' - in the root dir will run these tests as well. - -Daniel (23 October) -- Georg Horn fixed how the CA verification is made. Verifications can now be - made while at the same time the result of it can be ignored. This also - affects the curl tool as -k can now be used together with --cacert or - --capath. - -Daniel (22 October) -- Gisle Vanem found out --disable-eprt didn't work and patched it. - -- Test case 91 was modified and could now repeat the problem Kevin Roth has - reported, and the bug was fixed. - -- Dylan Ellicott added vc-libcurl-ssl-dll as a target to the root makefile - to build a static libcurl that links with a shared OpenSSL using MSVC. - -Daniel (21 October) -- Andrés García updated the mingw32 makefiles. - -Version 7.10.8-pre5 (21 October 2003) - -Daniel (19 October) -- Georg Horn made libcurl output more info on SSL failures when receiving - data. - -Version 7.10.8-pre4 (18 October 2003) - -Daniel (17 October) -- Dominick Meglio implemented CURLOPT_MAXFILESIZE and --max-filesize. - -- Made libcurl show verbose info about what auth type and user name that is - being sent in its HTTP request-headers. - -Daniel (16 October) -- Removed support for CURLOPT_PASSWDFUNCTION and CURLOPT_PASSWDDATA. libcurl - no longer prompt for passwords under any circumstances. Password prompting - was instead moved to curl, which now prompts for password if -u or -U lack - it. This solves the problem Kevin Roth reported when curl prompted for - password twice when doing NTLM authentication. - -- I rewrote the SSL subjectAltName check to avoid having to rely on OpenLDAP- - licensed derivate code. - -Daniel (15 October) -- Avoid doing getsockopt() on Windows to verify connects. It seems that this - hogs Windows machines when libcurl is being used multi-threaded (with > ~50 - threads). Andrew Fuller helped us verify and test this. - -Daniel (14 October) -- Kimmo Kinnunen fixed a crash with duphandle() when CURLDEBUG is set. - -- Gisle Vanem made libcurl build and work with IPv6 on Windows. - -Daniel (13 October) -- Giuseppe Attardi reported yet another segfault with ares and the multi - interface. Me fixed. - -- Domenico Andreoli removed the extra LDFLAGS assignment in lib/Makefile.am - that was reported about in the debian bug report #212086. - - Domenico also fixed two makefiles where we used 'gnroff' instead of the more - portable $(NROFF). - -Daniel (12 October) -- Dirk Manske made the share locking around DNS lookups slightly different to - allow the share system's DNS lookups to run somewhat more - independent/faster. - -Daniel (9 October) -- Lachlan O'Dea fixed a resume problem: "If I set CURLOPT_RESUME_FROM, perform - an HTTP download, then reset CURLOPT_RESUME_FROM to 0, the next download - still has a Range header with a garbage value." bug report #820502 - -- Dominick Meglio made the inet_pton.c file build fine using MSVC. - -- The 'sws' test suite web server now #include setup.h from the lib directory. - This makes it more portable easier. - -Version 7.10.8-pre3 (8 October 2003) - -Daniel (8 October) -- Frank Ticheler provided a patch that fixes how libcurl connects to multiple - addresses, if one of them fails (ipv4-code). - -Daniel (7 October) -- Neil Dunbar provided a patch that now makes libcurl check SSL - subjectAltNames when matching certs. This is apparently detailed in RFC2818 - as the right thing to do. I had to add configure checks for inet_pton() and - our own (strictly speaking, code from BIND written by Paul Vixie) provided - code for the function for platforms that miss it. - -- HTTP POST using the read callback didn't work, as Florian Schoppmann - reported. - -Daniel (5 October) -- Shared provided a few fixes to make libcurl build on BeOS - out-of-the-box. New code for BeOS-style non-blocking sockets, provided by - Shard and Jeremy Friesner. Modified the autoconf check for non-blocking - sockets to check for this kind too. - -Daniel (4 October) -- Vincent Bronner pointed out that if you set CURLOPT_COOKIE for a transfer - and then set it to NULL in a subsequent one, the previous cookie was still - sent off! - -- Jon Turner fixed a problem libcurl had when it failed on an FTP transfer due - to a bad path, it would cause the next transfer to use a bad path as well. - -- Siddhartha Prakash Jain provided a patch with a fix for libcurl with ares, - when working on IP-only names as we then could return "wait" status when the - name in fact already was resolved. I edited the patch slightly to not expose - async details to non-ares aware source code. - -Daniel (3 October) -- Neil Spring posted the debian bug report #213180, and pointed out that using - the name 'access' in a function prototype is not very wise as some compilers - complain. - -- Peter Sylvester provided his and Jean-Paul Merlin's curlx.c example source - code that shows how they use ssl and callbacks. - -Daniel (2 October) -- James MacMillan's patch makes curl build on QNX 6.2.x. - -Daniel (26 September) -- My daughter was born! - -Daniel (23 September) -- Added support for -4/--ipv4 and -6/--ipv6 to force names to resolve to that - particular IP version. They only work for IPv6-enabled libcurls. - -- curl -V now outputs 'SPNEGO' as a feature in case libcurl was built to - support that. - -Version 7.10.8-pre2 (22 September 2003) - -Daniel (22 September) -- Giuseppe Attardi found a segfault in libcurl when using the multi interface - with ares and doing repeated operations against a non-resolving host name. - -Daniel (19 September) -- Added the CURLOPT_IPRESOLVE option, that allows an application to select - what kind of IP addresses he wants to use when resolving host names. This - is only interesting when using host names that resolve addresses using more - than one version of IP. - -- Applied Markus Moeller's patch that introduces SPNEGO support if libcurl - is built with the FBopenssl libraries. curl_version_info() now returns - info on SPNEGO availability. The patch also made the GSSAPI stuff work fine - with the MIT GSS-library (the Heimdal one still works too). - -Daniel (16 September) -- Doing PUT with --digest failed, as reported in bug report #805853. - -- Using --anyauth that picked NTLM, and then a redirect closed the connection - and took curl to a second NTLM page made curl fail. Bug report #806328 - identified the problem, test case 90 was added to verify the fix. - -Daniel (14 September) -- codemastr brought a patch for ares to make the Windows portions of it work - properly on NT4. I uploaded a new diff and updated the docs on where to get - it etc. - -- Jeff Pohlmeyer tracked down a very hard-to-find bug where we removed a - cached DNS entry even though it may be in use, which caused "random" memory - to get overwritten and thus "random" crashes. - -Daniel (12 September) -- Based on a bug report by David Kimdon, I made the runtests.pl script clear - all possible proxy environment variables before the tests are run. - -- By default, easy handles within a multi handle now share DNS cache. - -- Tim Bartley brought a patch that makes the GSSNEGOTIATE option work for - Microsoft's "Negotiate" authentication as well. - -Daniel (11 September) -- A zero-length proxy string confused FTP transfers. - -- Bjorn Reese found a case with an uninitialized pointer, only present when - built for ares. - -Version 7.10.8-pre1 (8 September 2003) - -Daniel (7 September) -- Jurij Smakov found out that the non-OpenSSL MD5 code was not working on - Alpha (or ia64). Only the OpenSSL-version did. I made a fix I think corrects - the problem. - -Daniel (5 September) -- Kevin Fisk reported that configure --enable-thread didn't work. I fixed. - -- De-macrofied the lib/hash.c source code somewhat. - -Daniel (4 September) -- CURLINFO_HTTPAUTH_AVAIL and CURLINFO_PROXYAUTH_AVAIL added, Based on Joerg - Mueller-Tolk's patch, - -Early (4 September) -- Added CURLOPT_FTP_RESPONSE_TIMEOUT - allows user to set strict timeout - requirements on the FTP server's ability to respond to individual commands - without placing global requirements on transfer or connect time. Files - affected: - - include/curl/curl.h - Added option CURLOPT_FTP_RESPONSE_TIMEOUT - - lib/ftp.c - Added branch inside Curl_GetFTPResponse to check for - data->set.ftp_response_timeout - - lib/url.c - Modified Curl_setopt to recognize CURLOPT_FTP_RESPONSE_TIMEOUT - - lib/urldata.h - Added ftp_response_timeout to struct UserDefined - -Daniel (3 September) -- Peter Pentchev found and fixed two problems in the test suite's web server - code, that made it segfault at times. - -- Jörg Mueller-Tolk improved the proxy user+password handling, especially - when providing a blank password. - -Daniel (2 September) -- Fix for making CONNECT to proxies do the correct magic to allow NTLM, Digest - and similar to work. - -Daniel (1 September) -- Henrik Storner made libcurl work fine with OpenLDAP 2.1.22 (current). - -- Jeff Pohlmeyer added a proper error message for non-resolving hosts when - using ares for lookups. - -Daniel (25 August) -- John McGowan reported that curl -k still failed if the HTTPS server's CN - field wasn't obtainable. This was due to the CURLOPT_SSL_VERIFYHOST being - set to 1, and libcurl failed if the CN was missing. Starting now, having it - set to 1 will simply output a warning if no CN could be obtained (as having - a mismatch is OK). - -Daniel (21 August) -- Vincent Sanders provided a fix for name resolving when linked with uClibc. - -Daniel (20 August) -- Gerd v. Egidy provided a patch that makes libcurl store the FTP response - code from ftp servers. Using curl_easy_getinfo() with CURLINFO_HTTP_CODE - returns that data. The option is therefore now also known as - CURLINFO_RESPONSE_CODE. - -- Antoine Calando found a segfault when doing multi-part/formpost using - the multi interface. - -- Antoine Calando pointed out that curl_multi_info_read() didn't set the - msgs_in_queue to 0 properly when returning NULL. - -Daniel (19 August) -- I made curl support multiple -T options, as well as -T "{file1,file2}" - style globbing. One -T for each URL is supported. - -- Jeff Pohlmeyer found a segfault when using ares-enabled libcurl and the - multi interface when trying a non-existing host name. - -- Made the libcurl printf code support long longs if available. - -- Loren Kirkby pointed out that we did not clean up all SSL-allocated memory - in curl_global_cleanup(). - -Daniel (17 August) -- Setting CURLOPT_WRITEFUNCTION or CURLOPT_READFUNCTION to NULL will now make - them get the internal defaults restored. Previously this could cause a - segfault. We should aim at having all pointer-related options get restored - to default/safe values when set to NULL. - -Version 7.10.7 (15 August 2003) - -Daniel (14 August) -- I modified the memdebug system to return failure on memory allocation - functions after a set amount of successful ones. This enables us to test - out-of-memory situations in a controlled manner and we can make sure that - curl/libcurl behaves good in those. - - This made me find and fix several spots where we did not cleanup properly - when bailing out due to errors (low memory). - -- Corrected test case 74. Made using -o with bad #[num] codes complain and - bail out. Made #[num] support numbers larger than 9 as well. Added test - case 86 for a proper range globbing test as well. - -Version 7.10.7-pre4 (12 August 2003) - -Daniel (12 August) -- curl_version_info() now returns a flag if libcurl was built with asynch DNS - support, and this is now also displayed with 'curl -V'. - -- Added a few new man pages to the docs/libcurl dir: curl_share_init, - curl_share_setopt, curl_share_cleanup, libcurl-easy and libcurl-share. - -Daniel (11 August) -- Mike Cherepov made the local binding code work for Windows, which makes - the option CURLOPT_INTERFACE work on Windows as well. - -- Vincent Sanders updated the fopen.c example code a lot. - -- --proxy-ntlm is now supported by the curl tool. It forces the proxy - authentication to be made using NTLM. It does not yet work for HTTPS over - proxies (or other proxy-tunneling options). Test case 81 and 82 do some - simple initial ntlm testing. - -- Found and fixed a minor memory leak on re-used connections with - proxy-authentication. - -- I removed -@ and -Z as valid short options. They were very rarely used (@ - wasn't even documented). - -- Serge Semashko introduced CURLOPT_PROXYAUTH, and make it work when set to - CURLAUTH_NTLM and/or CURLAUTH_BASIC. The PROXAUTH is similar to HTTPAUTH, - but is for the proxy connection only, and HTTPAUTH is for the remote host. - -- Fixed loading of cookies with blank contents from a cookie jar. Also made the - cookie functions inform on added and skipped cookies (for cookie debugging). - -Version 7.10.7-pre3 (8 August 2003) - -Daniel (8 August) -- Applied David Byron's fix for file:// URLs with drive letters included. - -- I added the --ftp-create-dirs to the client code, which activates Early's - CURLOPT_FTP_CREATE_MISSING_DIRS option, and wrote test case 147 to verify - it. Added the option to the curl.1 man page too. Added the option to the - curl_easy_setopt.3 man page too. - -Daniel (7 August) -- Test case 60 failed on ia64 and AMD Opteron. Fixed now. - -- Fixed a printf problem that resulted in urlglobbing bugs (bug #203827 in the - debian bug tracker). Added test case 74 to verify the fix and to discover if - this breaks in the future. - -- "make distcheck" works again. - -Version 7.10.7-pre2 (6 August 2003) - -Daniel (5 August) -- Duncan Wilcox helped me verify that the latest incarnation of my ares patch - builds fine on Mac OS X (see the new lib/README.ares) file for all details. - -- Salvatore Sorrentino filed bug report #783116 and Early Ehlinger posted a - bug report to the libcurl list, both identifying a problem with FTP - persitent connections and how the dir hiearchy was not properly reset - between files. - -- David Byron's thoughts on a fixed Makefile in tests/ were applied. - -- Jan Sundin reported a case where curl ignored a cookie that browsers don't, - which turned up to be due to the number of dots in the 'domain'. I've now - made curl follow the the original netscape cookie spec less strict on that - part. - -Daniel (4 August) -- Dirk Manske added cookie support for the experimental, hidden and still - undocumented share feature! - -- Mark Fletcher provided an excellent bug report that identified a problem - with FOLLOWLOCATION and chunked transfer-encoding, as libcurl would not - properly ignore the body contents of 3XX response that included the - Location: header. - -Early (6 August) -- Added option CURLOPT_FTP_CREATE_MISSING_DIRS - This option will force the target file's path to be created if it - does not already exist on the remote system. - - Files affected: - - include/curl/curl.h - Added option CURLOPT_FTP_CREATE_MISSING_DIRS - - lib/ftp.c - Added function ftp_mkd, which issues a MKD command - Added function ftp_force_cwd, which attempts a CWD, - and does a MKD and retries the CWD if the original CWD - fails - Modified ftp_perform() to call its change directory function - through a pointer. The pointer points to ftp_cwd by default, - and is modified to point to ftp_force_cwd IFF - data->set.ftp_create_missing_dirs is not 0. - - lib/url.c - Modified Curl_setopt to recognize CURLOPT_FTP_CREATE_MISSING_DIRS - - lib/urldata.h - Added ftp_create_missing_dirs to struct UserDefined - -- Minor Bugfix for CURLOPT_TIMECONDITION with FTP - if the file was not - present to do the time comparison, it would fail. - Files affected: - - lib/ftp.c - In ftp_perform(), the call to ftp_getfiletime() used to be followed - by - if (result) - return result; - And then by the code that actually did the time comparison. - The code that did the comparison handled the case where the filetime - was not available (as indicated by info.filetime < 0 or set.timevalue - < 0), so I replaced the if (result) return result with a switch(result) - that allows CURLE_FTP_COULDNT_RETR_FILE to fall through to the - normal time comparison. - -Daniel (3 August) -- When proxy authentication is used in a CONNECT request (as used for all SSL - connects and otherwise enforced tunnel-thru-proxy requests), the same - authentication header is also wrongly sent to the remote host. - - This is a rather significant info leak. I've fixed it now and mailed a patch - and warning to the mailing lists. - -Daniel (1 August) -- David Byron provided a patch to make 7.10.6 build correctly with the - compressed hugehelp.c source file. - -Version 7.10.7-pre1 (31 July 2003) - -Daniel (30 July) -- Jörg Müller-Tolk updated the VC makefile. - -- Daniel Noguerol made the ftp code output "Accept-Ranges: bytes" in similar - style like other faked HTTP headers when NOBODY and HEADER are used. I - updated two corresponding test cases too. - -- Marty Kuhrt pointed out a compilation problem on VMS due to my having - changed a type from long to time_t, and I'm now changing it back to work - more portably... - - He also indicated that distributing the src/hugehelp.c in a compressed state - like I acccidentally did may not be the smartest move... I've now fixed the - distribute procudere to automaticly generate an uncompressed version when I - make release archives. - -Daniel (29 July) -- Gisle Vanem brought changes to the mkhelp script for the generation of the - compressed help text on some platforms. - -Version 7.10.6 (28 July 2003) - -Daniel (28 July) -- François Pons brought a patch that once again made curl deal with ftp and - "double slash" as indicating the root directory. In the RFC1738-fix of April - 30, that ability was removed (since it is not the "right" way). So, starting - now we can list the root dir of an ftp server both these ways: - - curl ftp://server.com/%2f as well as - curl ftp://server.com// - -Daniel (24 July) -- Henry Bland pointed out that we included sys/resource.h without good reason - in several source files. Without it included, QNX builds better... - -- Andrés García updated the mingw makefiles. - -Daniel (23 July) -- Tracy Boehrer experienced DNS cache problems and did some nice debugging - and tracking which made it easy for me to correct the problem and Tracy - could verify that it did cure the problem! When re-using a connection we - now make sure we don't re-use the 'connect_addr' struct. - -- Daniel Kouril corrected the GSS-Negotiate code. - -- Juan F. Codagnone provided fixes to allow curl to build fine on Windows - again. - -Daniel (22 July) -- Edited the curl/curl.h include file to build on Windows properly. - -Daniel (21 July) -- Moved the proxy credentials from the SessionHandle struct to the connectdata - struct, to make multiple proxy connections with differerent user names work. - -- Adjusted the NTLM code to support proxy functionality. - -- Made the krb4 stuff compile with the user+password fields moved. - -Version 7.10.6-pre4 (21 July 2003) - -Daniel (20 July) -- David Gardner pointed out in bug report 770755 that using the FTP command - CWD with a blank argument is a bad idea and I made libcurl skip empty path - segments starting now. - -Daniel (18 July) -- Cris pointed out that my fix on July 16th didn't work fully. His pointing - out this (and his patch) also made me realize that we have a very similar - bug in the FTP connection re-use code. We must store a separate user and - password field for each connection we keep (at least for FTP and HTTP+NTLM - connections, so I made us do this unconditionally). - -- Since NTLM authenticates connections instead of single requests, I had to - re-arrange how we store the NTLM data and I had to improve the test suite to - finally work properly with persistancy to make the NTLM tests run fine - again. This also forced me to have to update lots of HTTP test cases. - -Daniel (16 July) -- Cris Bailiff's bug report 768275 pointed out that using Basic auth with - wrong user+password caused an endless loop. Fixed now. He also found out that - we didn't properly authenticate connections with NTLM. Fixed too. - -- Dan Winship provided fixes for the NTLM code. - -Daniel (5 July) -- Doug Kaufman provided additional fixes for the DOS port. - -Daniel (4 July) -- Rick Richardson pointed out that using setvbuf() to achive non-buffering - on output is no-good for SCO Xenix and other unixes. We switched over to - using plain fflush() instead. - -- Dan Grayson pointed out that we set the CURL_CA_BUNDLE variable wrongly in - the configure script, and I had to change some build stuff to make the new - way work. - -- Peter Sylvester's patch was applied that introduces the following: - - CURLOPT_SSL_CTX_FUNCTION to set a callback that gets called with the - OpenSSL's ssl_ctx pointer passed in and allow a callback to act on it. If - anything but CURLE_OK is returned, that will also be returned by libcurl - all the way back. If this function changes the CURLOPT_URL, libcurl will - detect this and instead go use the new URL. - - CURLOPT_SSL_CTX_DATA is a pointer you set to get passed to the callback set - with CURLOPT_SSL_CTX_FUNCTION. - -Daniel (1 July) -- David Byron provided a patch that allows a client to quit the test suite's - HTTP server. - -- Gisle Vanem found and patched a lib handle leak in the ldap code. - -Daniel (25 June) -- More NTLM-improvements. Less code. Smaller packets back and forth. - -Daniel (23 June) -- Eric Glass provided us with a better doc on NTLM details, and I added more - comments and clarified the current code more. Using the new knowledge, we - should be able to make the NTLM stuff work even better. - Eric's original URL: http://davenport.sourceforge.net/ntlm.html - Version stored and provided at curl site: http://curl.haxx.se/rfc/ntlm.html - -- Fixed the minor compile problems pre3 had if built without GSSAPI and/or - SSL. - -Version 7.10.6-pre3 (19 June 2003) - -Daniel (19 June) -- Made curl use curl_free() on memory returned by curl_getenv(), as this - should theoreticly make it possibly to build and run curl and libcurl with - different memory allocation schemes with no problems. - -Daniel (18 June) -- Improved the mkhelp.pl a bit further to make a nicer hugehelp text and to - include a better comment in the top for the gzip compressed version. - -Daniel (17 June) -- CURLOPT_HTTPAUTH is now a bitmask, in which you set which authentication - type(s) you want to use. If more than one is set, libcurl will use one of - the selected one and the one it considers is more secure. Test case 67 and - 68 (for NTLM) were fixed and we've reduced a round-trip for specific --ntlm - featches, and test case 69 and 70 were added for testing authentication - "picking". --anyauth is the new command line tool option, and I also added - --basic for completeness (that's the default type). - -- Fixed the runtests.pl script to use the info provided by the new curl -V - output. - -- --enable-debug now sets the CURLDEBUG define instead of MALLOCDEBUG, as it - is meant to be a generic debug conditional. - -- curl_version_info() can now return CURL_VERSION_DEBUG as a feature bit, to - indicate that the library was built with CURLDEBUG set. - -- Ralph Mitchell found out that some web applications very badly uses white - spaces in Location: redirects, and apparently IE is a browser (the only - one?) that supports this abomination. Based on Ralph's patch, I added code - that now attempts to replace white spaces with the proper "%20" or "+". - Test case 40 and 42 were added to verify my changes. - -- curl -V now also outputs a list of features the available library offers (if - any). - -- The curl_version() string now includes "GSS" if libcurl is built with GSSAPI - support. - -- David Orrell reported that libcurl still crashed when sending HUGE requests - over HTTPS... I fixed. - -Version 7.10.6-pre2 (16 June 2003) - -Daniel (16 June) -- curl_version_info() now returns bitmasked information weather NTLM and - GSSNEGOTIATE are supported, since it is doomed to vary on different - installatiions. - -- I remade the HTTP Digest code to use the MD5-code provided by OpenSSL if - that is present, and only use our own MD5-code if it isn't. - -Daniel (13 June) -- More NTLM help, fixes and patches from Cris Bailiff. - -- Marty Kuhrt brought include fixes for making VMS builds warning-free. - -Daniel (12 June) -- NTLM authentication works somewhat against the test servers provided by - Mathias Axelsson and Cris Bailiff. Use by setting CURLOPT_HTTPAUTH to - CURLAUTH_NTLM to libcurl, or --ntlm for the curl tool. Test case 67 and 68 - were added for this. NTLM-support requires OpenSSL. - -- Dan Fandrich provided a patch, that granted that gzip and libz are available - at build-time, compresses the hugehelp text in the curl command line and - uncompresses it at request. Saves some ~60K in the final output executable. - -Daniel (11 June) -- Long day of fighting the NTLM demons. - -Daniel (10 June) -- Modified how to set auth type to libcurl. Now use CURLOPT_HTTPAUTH instead, - and pick method. Supported ones currently are: - CURLAUTH_BASIC - default selection - CURLAUTH_DIGEST - formerly CURLOPT_HTTPDIGEST - CURLAUTH_GSSNEGOTIATE - -- Daniel Kouril added HTTP GSS-Negotiate authentication support, as defined in - the IETF draft draft-brezak-spnego-http-04.txt. In use already by various - Microsoft web applications. --negotiate is the new family member. To take - advantage of this, you need one of these packages: - - o Heimdal Kerberos5 http://www.pdc.kth.se/heimdal/heimdal.html - o GSSAPI from Globus http://www.globus.org/ - o GSSAPI libraries from MIT Kerberos5 http://web.mit.edu/kerberos/www/ - -- A missing ending bracket (']') while doing URL globbing could lead to a - segfault. While fixing this, I also introduced better error reporting in the - globbing code. (All this is application code outside libcurl.) - -Daniel (6 June) -- David Orrell found out that sending a huge GET request over HTTPS could - make libcurl fail and return an error code. - -Daniel (2 June) -- Richard Bramante found out that "Content-Length: 0" was not properly used by - libcurl if the response-headers indicated that the connection would be - closed. - -- David Byron's patch was applied, that makes the --progress-bar take the - local size into account when doing resumed downloads. - -- Feedback from Serge Semashko made me change the error message returned when - CURLE_HTTP_RETURNED_ERROR is returned. - -- Anonymous in bug report #745122 pointed out that we should really be using - SSL_CTX_set_options(... SSL_OP_ALL) to work around flaws in existing SSL - implementations. - -Daniel (27 May) -- Andreas Ley and Rich Gray helped me point out that no version of HP-UX has - the sys/select.h header file so including it unconditionally in curl/multi.h - is not a good thing. Now we check for HPUX and avoid using that header on - such systems. - -- Rudy Koento experienced problems with curl's recent habit of POSTing data in - two separate send() calls, first the headers and then the data. I've now - made a fix that for static and known content that is less than 100K in size, - everything is now sent in one single system call again. This is also better - for network performance reasons. - -- I modified the main makefile to not build the test suite and a few other - unnecessary things by default. Now, the test suite is built when 'make test' - is run. This reduces build time for those who don't care for the test - suite, and it also reduces confusion for people using platforms where the - test suite build fails! - -Daniel (26 May) -- Chris Lewis pointed out a flaw in the #ifdefs in curl/multi.h for Windows, - which is now corrected. - -- Jis Joy found another flaw in the SOCK5 code, as libcurl treated the socks5 - proxy a little too much like as if it was a http proxy. - -Daniel (23 May) -- Ricardo Cadime found a socket leak when listing directories without - contents. Test cases 144 and 145 were added to verify the fix. - -- Rudy Koento found yet another problem when a HTTP server returns only a - single-line of contents without any headers at all. libcurl then failed to - count the data, thus returning error 52 "no contents". Test case 66 was - added to verify that we now do right. - -Version 7.10.6-pre1 (23 May 2003) - -Daniel (23 May) -- Jis in bug report #741841, fixed a bug in the SOCKS5 proxy-using code. - -Daniel (22 May) -- David Remahl set up a test-server for me providing Digest authentication, - and I wrote the first working code that support it. The test suite was - modified slightly as well to work better for it and --digest was added to - the command line options (and CURLOPT_HTTPDIGEST to the library)... RFC2617 - has all the gory details. - -Daniel (21 May) -- David Balazic pointed out that curl_unescape() didn't check that %-codes - were correctly followed by two hexadecimal digits when it unescape strings. - Now, we do the check and only %XX codes are unescaped if the X letters are - hexadecimals. - -- Gisle Vanem made curl build with djgpp on DOS. - -- Gisle Vanem improved the mkhelp.pl script to make a nicer manual that is - shown with curl -M. - -Daniel (20 May) -- Gisle Vanem provided a fix that makes libcurl more conservative, not - expecting h_aliases of the hostent struct to always be non-NULL. - -Daniel (19 May) -- As requested by Martin Michlmayr in Debian bug report #193630, libcurl now - supports user name and password in the proxy environment variables. Added - test case 63 to verify this. - -Version 7.10.5 (19 May 2003) - -Daniel (15 May) -- Changed the order for the in_addr_t testing, as 'unsigned long' seems to be - a very common type inet_addr() returns. - -Daniel (14 May) -- George Comninos provided a fix that calls the progress meter when waiting - for FTP command responses take >1 second. It'll make applications more - "responsive" even when dealing with very slow ftp servers. - -Daniel (12 May) -- George Comninos pointed out that libcurl uploads had two quirks: - o when using FTP PORT command, it used blocking sockets! - o it could loop a long time without doing progress meter updates - Both items are fixed now. - -Daniel (9 May) -- Dan Fandrich changed CURLOPT_ENCODING to select all supported encodings if - set to "". This frees the application from having to know which encodings - the library supports. - -- Dan Fandrich pointed out we had three unnecessary files in CVS that is - generated with libtoolize, so they're now removed and libtoolize is invoked - accordingly in the buildconf script. - -- Avery Fay found out that the CURLOPT_INTERFACE way of first checking if the - given name is a network interface gave a real performance penalty on Linux, - so now we more appropriately first check if it is an IP number and if so - we don't check for a network interface with that name. - -- CURLOPT_FTP_USE_EPRT added. Set this to FALSE to disable libcurl's attempts - to use EPRT and LPRT before the traditional PORT command. The command line - tool sets this option with '--disable-eprt'. - -Version 7.10.5-pre2 (6 May 2003) - -Daniel (6 May) -- Kevin Delafield reported another case where we didn't correctly check for - EAGAIN but only EWOULDBLOCK, which caused badness on HPUX. - -Daniel (4 May) -- Ben Greear noticed that the check for 'writable argv' exited the configure - script when run for cross-compiling, which wasn't nice. Now it'll default to - no and output a warning about the fact that it was not checked for. - -Daniel (2 May) -- Added test case 62 and fixed some more on the cookie sending with a custom - Host: header set. - -Daniel (1 May) -- Andy Cedilnik fixed a few compiler warnings. - -- Made the "SSL read error: 5" error message more verbose, by adding code that - queries the OpenSSL library to fill in the error buffer. - -Daniel (30 Apr) -- Added sys/select.h include in the curl/multi.h file, after having been - reminded about this by Rich Gray. - -- I made each test set its own server requirements, thus abandoning the - previous system where the test number implied what server(s) to use for a - specific test. - -- David Balazic made curl more RFC1738-compliant for FTP URLs, by fixing so - that libcurl now uses one CWD command for each path part. A bunch of test - cases were fixed to work accordingly. - -- Cookie fixes: - - A. Save domains in jars like Mozilla does. It means all domains set in - Set-Cookie: headers are dot-prefixed. - B. Save and use the 'tailmatch' field in the Mozilla/Netscape cookie jars - (the second column). - C. Reject cookies using illegal domains in the Set-Cookie: line. Concerns - both domains with too few dots or domains that are outside the currently - operating server host's domain. - D. Set the path part by default to the one used in the request, if none was - set in the Set-Cookie line. - - To make item C really good, I also made libcurl notice custom Host: headers - and extract the host name set in there and use that as the host name for the - site we're getting the cookies from. This allows user to specify a site's - IP-address, but still be able to receive and send its cookies properly if - you provide a valid Host: name for the site. - -Daniel (29 Apr) -- Peter Kovacs provided a patch that makes the CURLINFO_CONNECT_TIME work fine - when using the multi interface (too). - -Version 7.10.5-pre1 (23 Apr 2003) - -Daniel (23 Apr) -- Upgraded to libtool 1.5. - -Daniel (22 Apr) -- Peter Sylvester pointed out that curl_easy_setopt() will always (wrongly) - return CURLE_OK no matter what happens. - -- Dan Fandrich fixed some gzip decompression bugs and flaws. - -Daniel (16 Apr) -- Fixed minor typo in man page, reported in the Debian bug tracker. - -Daniel (15 Apr) -- Fixed some FTP tests in the test suite that failed on my Solaris host, due - to the config.h not being included before the system headers. When done that - way, it did get a mixed sense of if big files are supported or not and then - stat() and fstat() (as used in test case 505) got confused and failed to - return a proper file size. - -- Formposting a file using a .html suffix is now properly set to Content-Type: text/html. - -Daniel (14 Apr) -- Fixed the SSL error handling to return proper SSL error messages again, they - broke in 7.10.4. I also attempt to track down CA cert problems and then - return the CURLE_SSL_CACERT error code. - -- The curl tool now intercepts the CURLE_SSL_CACERT error code and displays - a fairly big and explanatory error message. Kevin Roth helped me out with - the wording. - -Daniel (11 Apr) -- Nic Hines provided a second patch for gzip decompression, and fixed a bug - when deflate or gzip contents were downloaded using chunked encoding. - -- Dan Fandrich made libcurl support automatic decompression of gzip contents - (as an addition to the previous deflate support). - -- I made the CWD command during FTP session consider all 2xy codes to be OK - responses. - -Daniel (10 Apr) -- Vlad Krupin fixed a URL parsing issue. URLs that were not using a slash - after the host name, but still had "?" and parameters appended, as in - "http://hostname.com?foobar=moo", were not properly parsed by libcurl. - -Daniel (9 Apr) -- Made CURLOPT_TIMECONDITION work for FTP transfers, using the same syntax as - for HTTP. This then made -z work for ftp transfers too. Added test case 139 - and 140 for verifying this. - -- Getting the file date of an ftp file used the wrong time zone when - displayed. It is supposedly always GMT. Added test case 141 for this. - -- Made the test suite's FTP server support MDTM. - -- The default DEBUGFUNCTION, as enabled with CURLOPT_VERBOSE now outputs - CURLINFO_HEADER_IN data as well. The most notable effect from this is that - using curl -v, you get to see the incoming "headers" as well. This is - perhaps most useful when doing ftp. - -Daniel (8 Apr) -- James Bursa fixed a flaw in the Content-Type extraction code, which missed - the first letter if no space followed the colon. - -- Magnus Nilsson pointed out that share.c was missing in the MSVC project - file. - -Daniel (6 Apr) -- Ryan Weaver provided a patch that makes the CA cert bundle not get installed - anymore when 'configure --without-ssl' has been used. - -Daniel (4 Apr) -- Martijn Broenland found another cases where a server application didn't - like the boundary string used by curl when foing a multi-part/formpost. We - modified the boundary string to look like the one IE uses, as this is - probably gonna make curl work with more applications. - -Daniel (3 Apr) -- Kevin Roth reported that a bunch of tests fails on cygwin. One set fails - when using perl 5.8 (and they run fine with perl 5.6), and another set - failed because of an artifact in the test suite's FTP server that I - corrected. It turned out the FTP server code was still having a file opened - while the main test script removed it and invoked the HTTP server that - attempted to create the same file name of the file the FTP server kept open. - This operation works fine on unix, but not on cygwin. - -Version 7.10.4 (2 Apr 2003) - -Daniel (1 Apr) -- Added test case 505 to exercise FTP upload with rename done with libcurl, - and for that I had to extend the test suite's FTP server to deal with the - RNFR and RNTO commands. - -Daniel (31 Mar) -- Even more SSL config check modifications after Richard's testing. - -Version 7.10.4-pre6 (31 Mar 2003) - -Daniel (31 Mar) -- More fixes for the SSL session ID cache checks when SSL configs are changed - between connections. Based on tests and talks with Richard Bramante. - -- Guillaume Cottenceau provided a patch that added CURLOPT_UNRESTRICTED_AUTH. - When enabled, it will prevent libcurl from limiting to which host it sends - user+password to when following locations. By default, libcurl only sends - name and password to the original host used in the first URL, but with this - option set it will send the auth info to all hosts it follows location - headers to. The new tool command line option for this is named - "--location-trusted". - -- Frankie Fong reported a problem with libcurl if you re-used an easy handle - with a proxy, and you first made a https:// connction to a host and then - switched to a http:// one to the same host. libcurl would then wrongly re-use - the same connection for it and fail to get the second URL properly - -Daniel (29 Mar) -- Dan Shearer's fix that makes curl complain if invoked with nothing but "curl - -O" was applied. - -Daniel (26 Mar) -- Bryan Kemp was friendly enough to lend me an account on his Redhat 9 box and - I could fix the configure problems on redhat 8.1 and 9 in no time thanks to - this. Thanks a bunch Bryan! - -Daniel (25 Mar) -- Renamed configure.in to configure.ac - -Version 7.10.4-pre5 (25 Mar 2003) - -Daniel (25 Mar) -- Richard Bramante provided a fix for a handle re-use problem seen when you - change options on an SSL-enabled connection between requests. Previously, - changing peer verification or host verification and similar things was not - taken into account when a connection were checked for re-use and thus - enabling stricter check between requests on a re-used connection made no - difference and the connection would thus be used erroneously. - -Daniel (24 Mar) -- Götz Babin-Ebell pointed out that the ca-bundle.crt file contained a - certificate from Trustcenter that was a demo certificate only that was never - indended to be part of a CA bundle. - -Daniel (21 Mar) -- Life is a mystery. Within a time period of 17 hours, Tim Pope and Michael - Churchill filed one bug report each, both identifying problems with a second - transfer when doing persistant transfers re-using a connection. Tim's one is - #706624, labeled "Multiple uploads per handle fail" and Michael's #707003 - "Does not send Authorization: header when reusing connection". I could track - both down to the same piece of logic and it turned out libcurl was not using - new settings properly when re-using an existing connection. This concerned - both uploading and downloading and involved exactly those pieces these two - reports identified. This code has been this faulty since the day I - introduced persistant connection support in libcurl, more than 2 years ago. - -Daniel (20 Mar 2003) -- Five year anniversary. Today five years ago, the first ever curl release saw - the light of day. - -Daniel (17 Mar) -- Andy Cedilnik corrected flaws in some libcurl example-usage sources. - -Daniel (16 Mar) -- Juan F. Codagnone reported that the fix from March 2nd was incomplete. - -- Added code to the configure.in to check for select() argument types. I've - not made any code use the results just yet though. - -Daniel (15 Mar) -- Gisle Vanem provided two patches to build better on Windows. - -- Adjusted the test suite code to better make sure that the server(s) required - for a specific test is properly started before the test case is attempted. - Many tests now run a lot faster than before. - -Daniel (14 Mar) -- Another configure.in adjustment made the configure detect functions properly - on HPUX now. - -Daniel (13 Mar) -- Philippe Raoult fixed pre4-compile quirks for FreeBSD. - -Version 7.10.4-pre4 (13 Mar 2003) - -Daniel (13 Mar) -- Added a backup-check for functions that aren't found by AC_CHECK_FUNCS() - as I believe some checks on HPUX need this. At least some of the info given - to us by Rick Jones seemed to indicate this. - -Daniel (12 Mar) -- Thomas Tonino found out that if you used the curl tool to do PUT operations - as in 'curl www.foo.com/dir/ -T file' and the file name included for example - space or other characters that don't belong in URLs, curl did not properly - URL encode them before using them in the URL. - -- Added an option to configure called --enable-libgcc that simply adds -lgcc - to the LIBS variable, as this seems to be a common problem. - -- I modified the configure.in file, so that the headers are now checked in an - order of "viality". We must also make sure to use the "default headers" - parameter to AC_CHECK_HEADERS() so that headers are checked with the proper - prerequisites included (i.e all the major and generally important header - files are included there by default). This might be what we need for various - Sun, HP, AIX and Tru64 systems to behave good again on the header check - front. - -- Rick Jones pointed out a few compiler warnings on HP-UX that I addressed. - -- I made the configure --help output nicer by using AC_HELP_STRING() a lot - more. - -Daniel (11 Mar) -- Christophe Demory fixed the socket sending code to work better on HP-UX - when sending data to a socket that would block. It then returns EAGAIN, not - EWOULDBLOCK. - -- Richard Gorton improved the seeding function for systems without a good - and reliable random source. - -- Richard Gorton fixed a few warnings that popped up when you built curl - using the Sun compiler on a 64bit SPARC platform. - -- Martin C. Martin fixed a case where a connect failure using the multi - interface didn't produce a human readable error string. - -Daniel (10 Mar) -- Reverted ltmain.sh back to libtool 1.4.2 status again, as the 1.4.3 version - broke the build on numerous platforms. It seems that libtool 1.4.3 puts some - requirements on what versions of the other tools (autoconf + automake) that - I am not familiar with and thus I couldn't fulfill at this point. - - Yes, this is more than mildly frustrating. - -Daniel (7 Mar) -- Run libtoolize version 1.4.3. - -Version 7.10.4-pre3 (4 Mar 2003) - -Daniel (3 Mar) -- Added share.obj to the VC6 and Borland libcurl makefiles. - -- Troels Walsted Hansen found and investigated a problem with libcurl on AIX, - presumably only on 4.3 or later. gethostbyname_r() is not returning data - that is possible to "keep" and cache the way libcurl does. But instead these - versions of AIX uses a gethostbyname() that works thread-safely we can - instead use the ordinary gethostbyname() and our pack_hostent() approach to - achieve what we want. The configure script now attempts to detect AIX 4.3 or - later to adjust for this. - -Daniel (2 Mar) -- Juan F. Codagnone found a problem introduced in 7.10.3 when you first did a - POST and then back to a GET using the same easy handle. - -Daniel (28 Feb) -- Removed the strequal and strnequal defines from curl/curl.h header. They - were never meant for the public header anyway. Philippe Raoult brought it - up. - -- James Bursa fixed the RISC OS build. - -Daniel (27 Feb) -- Avery Fay pointed out the very misleading curl_multi_info_read man page, and - I updated it to become more accurate. - -- Salvatore Sorrentino found a problem with FTP downloading that turned out to - be his FTP server returning size zero (0 bytes) when SIZE was used on a file - while being in BINARY mode. We now make a second check for the actual size - by scanning the RETR reply anyway, even if the SIZE command returned 0. - -Daniel (26 Feb) -- Kyle Sallee reported a case where he would do a transfer that didn't update - the progress meter properly. It turned out to be a case where libcurl would - loop a little too eagerly in the tranfer loop, which isn't really good for - the APIs, especially not the multi API. - -Version 7.10.4-pre2 (24 Feb 2003) - -Daniel (24 Feb) -- Kjetil Jacobsen found out that setting CURLOPT_MAXCONNECTS to a value higher - than 5 could cause a segfault. - -- I believe I fixed the 'Expect: 100-continue' behavior that has been broken - for a while (I think since my change dated Dec 10 2002). When this header is - used, libcurl should wait for a HTTP 100 (or timeout) before sending the - post/put data. - -Daniel (14 Feb) -- Matthew Clarke provided some info what to modify to make curl build - flawlessly on AIX 3.2.5. - -- Martin C. Martin found and fixed a problem in the multi interface when - running on Windows and trying to connect to a port without a listener. - -Daniel (13 Feb) -- Christopher R. Palmer fixed Curl_base64_encode() to deal with zeroes in the - data to encode. - -Daniel (4 Feb) -- Jean-Philippe added the first code that enables the 'share' system. This - should now enable sharing of DNS data between two curl easy handles. - -- Incorporated Nico Baggus' fixes to again compile flawlessly on VMS. - -- James Bursa corrected a bad comment in the public include file curl/multi.h - -- Peter Forret reported one of those error:00000000 cases in libcurl again - when connecting to a HTTPS site, and this time I did discover some oddities - in how curl reports SSL errors back. It could miss showing the actual error. - -Version 7.10.4-pre1 (3 Feb 2003) - -Daniel (3 Feb) -- Removed things in the docs saying capath doesn't work on Windows, as Julian - Noble told us it works fine. - -Daniel (31 Jan) -- Kevin Roth fixed the zlib build stuff in the Mingw32 makefile. - -Daniel (30 Jan) -- Kevin Roth found out that curl on Windows always checked for the CA cert - bundle using the environment variable and the path scan, even though - -k/--insecure was used. - -- Hamish Mackenzie pointed out that curl only did strict host name verifying - if capath or cainfo was used. Now it'll always do it unless -k / --insecure - is used! - -- Pavel Cenek pointed out that the Content-Type extraction was done wrongly - as the full string was not fetched. Added test case 57 to verify that curl - does it right now. - -Daniel (29 Jan) -- Jamie Wilkinson provided a patch that now makes curl attempt to clear out - "sensitive" command line arguments so that they don't appear in ps outputs - (only on platforms that allow writing to argv[]). - -- John McGowan found out that the DEBUGFUNCTION could be called with bad - arguments and thus cause the --trace outputs to go wrong. - -- Removed all the emacs local variables from all files. Mats Lidell provided - the new sample.emacs file (for a sample of what to include in your .emacs) - and the curl-style.el that sets a better c-style for editing curl sources. - -- Dave Halbakken found a problem with FTP downloads that could accidently - return CURLE_PARTIAL_FILE when curl_easy_perform() was called with NOBODY - set TRUE. - -Daniel (27 Jan) -- The fopen.c example was flawed as Nick Humfrey noticed, and I fixed it to - work again. - -Daniel (24 Jan) -- Bertrand Demiddelaer found and fixed a memory leak (the content-type string) - when following locations. - -Daniel (22 Jan 2003) -- Ian Wilkes and Legoff Vincent both independently provided fixes for making - curl/multi.h work properly when compiled with a C++ compiler. - -Daniel (20 Jan 2003) -- Fixed 'buildconf' to check version number of the required tools before - they're actually used. - -- Wrote 'testcurl.sh', a script targeted for automatic and distributed curl - tests on various platforms. - -- David Thiel pointed out that the .netrc file was not being dealt with - properly anymore. I broke this in the password prompting "fix". - -- Markus F.X.J. Oberhumer patched libcurl to allocate the scratch buffer only - on demand and thus we save 32KB in each curl handle that don't use that - buffer. This need appeared when some people started using thousands of - simultaneous curl handles... :-) - -Daniel (16 Jan 2003) -- Markus Oberhumer fixed curl-config --cflags when the includedir was not - /usr/include. - -- Markus Oberhumer fixed CURLINFO_PRIVATE to properly return NULL if it was - set to NULL! - -Version 7.10.3 (14 Jan 2003) - -Daniel (10 Jan 2003) -- Steve Oliphant pointed out that test case 105 did not work anymore and this - was due to a missing fix for the password prompting. - -Version 7.10.3-pre6 (10 Jan 2003) - -Daniel (9 Jan 2003) -- Bryan Kemp pointed out that curl -u could not provide a blank password - without prompting the user. It can now. -u username: makes the password - empty, while -u username makes curl prompt the user for a password. - -- Kjetil Jacobsen found a remaining connect problem in the multi interface on - ipv4 systems (Linux only?), that I fixed and Kjetil verified that it fixed - his problems. - -- memanalyze.pl now reads a file name from the command line, and no longer - takes the data on stdin as before. - -Version 7.10.3-pre5 (9 Jan 2003) - -Daniel (9 Jan 2003) -- Fixed tests/memanalyze.pl to work with file names that contain colons (as on - Windows). - -- Kjetil Jacobsen quickly pointed out that lib/share.h was missing... - -Version 7.10.3-pre4 (9 Jan 2003) - -Daniel (9 Jan 2003) -- Updated lib/share.c quite a bit to match the design document at - http://curl.haxx.se/dev/sharing.txt a lot more. - - I'll try to update the document soonish. share.c is still not actually used - by libcurl, but the API is slowly getting there and we can start - implementing code that takes advantage of this system. - -Daniel (8 Jan 2003) -- Updated share stuff in curl/curl.h, including data types, structs and - function prototypes. The corresponding files in lib/ were also modified - of course to remain compilable. Based on input from Jean-Philippe and also - to make it more in line with the design document. - -- Jean-Philippe Barrette-LaPierre patched a very trivial memory leak in - curl_escape() that would happen when realloc() returns NULL... - -- Matthew Blain provided feedback to make the --create-dirs stuff build - properly on Windows. - -- Fixed the #include in tests/libtest/first.c as Legoff Vincent pointed out. - -Daniel (7 Jan 2003) -- Philippe Raoult provided a patch that now makes libcurl properly support - wildcard checks for certificate names. - -- Simon Liu added CURLOPT_HTTP200ALIASES, to let an application set other - strings recognized as "HTTP 200" to allow http-like protocols to get - downloaded fine by curl. - -- Now using autoconf 2.57 and automake 1.7.2 - -- Doing "curl -I ftp://domain/non-existing-file" still outputed a date! - Wayne Haigh reported. - -- The error message is now written properly with a newline in the --trace - file. - -Daniel (6 Jan 2003) -- Sterling Hughes fixed a possible bug: previously, if you called - curl_easy_perform and then set the global dns cache, the global cache - wouldn't be used. Pointed out by Jean-Philippe Barrette-LaPierre. - -- Matthew Blain's fixed the VC6 libcurl makefile to include better debug data - on debug builds. diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/COPYING b/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/COPYING deleted file mode 100644 index 50899e1f..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/COPYING +++ /dev/null @@ -1,21 +0,0 @@ -COPYRIGHT AND PERMISSION NOTICE - -Copyright (c) 1996 - 2003, Daniel Stenberg, . - -All rights reserved. - -Permission to use, copy, modify, and distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright -notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE -OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of a copyright holder shall not -be used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization of the copyright holder. diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/FAQ b/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/FAQ deleted file mode 100644 index 1e5244a2..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/FAQ +++ /dev/null @@ -1,782 +0,0 @@ -Updated: June 17, 2003 (http://curl.haxx.se/docs/faq.html) - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| - -FAQ - - 1. Philosophy - 1.1 What is cURL? - 1.2 What is libcurl? - 1.3 What is cURL not? - 1.4 When will you make curl do XXXX ? - 1.5 Who makes cURL? - 1.6 What do you get for making cURL? - 1.7 What about CURL from curl.com? - 1.8 I have a problem who do I mail? - - 2. Install Related Problems - 2.1 configure doesn't find OpenSSL even when it is installed - 2.1.1. native linker doesn't find openssl - 2.1.2. only the libssl lib is missing - 2.2 Does curl work/build with other SSL libraries? - 2.3 Where can I find a copy of LIBEAY32.DLL? - 2.4 Does cURL support Socks (RFC 1928) ? - - 3. Usage Problems - 3.1 curl: (1) SSL is disabled, https: not supported - 3.2 How do I tell curl to resume a transfer? - 3.3 Why doesn't my posting using -F work? - 3.4 How do I tell curl to run custom FTP commands? - 3.5 How can I disable the Pragma: nocache header? - 3.6 Does curl support ASP, XML, XHTML or HTML version Y? - 3.7 Can I use curl to delete/rename a file through FTP? - 3.8 How do I tell curl to follow HTTP redirects? - 3.9 How do I use curl in my favorite programming language? - 3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP? - 3.11 How do I POST with a different Content-Type? - 3.12 Why do FTP specific features over HTTP proxy fail? - 3.13 Why does my single/double quotes fail? - 3.14 Does curl support javascript or pac (automated proxy config)? - - 4. Running Problems - 4.1 Problems connecting to SSL servers. - 4.2 Why do I get problems when I use & or % in the URL? - 4.3 How can I use {, }, [ or ] to specify multiple URLs? - 4.4 Why do I get downloaded data even though the web page doesn't exist? - 4.5 Why do I get return code XXX from a HTTP server? - 4.5.1 "400 Bad Request" - 4.5.2 "401 Unauthorized" - 4.5.3 "403 Forbidden" - 4.5.4 "404 Not Found" - 4.5.5 "405 Method Not Allowed" - 4.5.6 "301 Moved Permanently" - 4.6 Can you tell me what error code 142 means? - 4.7 How do I keep user names and passwords secret in Curl command lines? - 4.8 I found a bug! - 4.9 Curl can't authenticate to the server that requires NTLM? - 4.10 My HTTP request using HEAD, PUT or DELETE doesn't work! - 4.11 Why does my HTTP range requests return the full document? - 4.12 Why do I get "certificate verify failed" ? - - 5. libcurl Issues - 5.1 Is libcurl thread-safe? - 5.2 How can I receive all data into a large memory chunk? - 5.3 How do I fetch multiple files with libcurl? - 5.4 Does libcurl do Winsock initing on win32 systems? - 5.5 Does CURLOPT_FILE and CURLOPT_INFILE work on win32 ? - 5.6 What about Keep-Alive or persistent connections? - 5.7 Link errors when building libcurl on Windows! - - 6. License Issues - 6.1 I have a GPL program, can I use the libcurl library? - 6.2 I have a closed-source program, can I use the libcurl library? - 6.3 I have a BSD licensed program, can I use the libcurl library? - 6.4 I have a program that uses LGPL libraries, can I use libcurl? - 6.5 Can I modify curl/libcurl for my program and keep the changes secret? - 6.6 Can you please change the curl/libcurl license to XXXX? - -============================================================================== - -1. Philosophy - - 1.1 What is cURL? - - cURL (or simply just 'curl') is a command line tool for getting or sending - files using URL syntax. The name is a play on 'Client for URLs', originally - with URL spelled in uppercase to make it obvious it deals with URLs. The - fact it can also be pronounced 'see URL' also helped, it works as an - abbrivation for "Client URL Request Library" or why not the recursive - version: "Curl is a URL Request Library". - - Curl supports a range of common Internet protocols, currently including - HTTP, HTTPS, FTP, FTPS, GOPHER, LDAP, DICT, TELNET and FILE. - - We spell it cURL or just curl. We pronounce it with an initial k sound: - [kurl]. - - NOTE: there are numerous sub-projects and related projects that also use the - word curl in the project names in various combinations, but you should take - notice that this FAQ is directed at the command-line tool named curl (and - libcurl the library), and may therefore not be valid for other curl - projects. - - 1.2 What is libcurl? - - libcurl is a reliable and portable library which provides you with an easy - interface to a range of common Internet protocols. - - You can use libcurl for free in your application even if it is commercial - or closed-source. - - 1.3 What is cURL not? - - Curl is *not* a wget clone even though that is a very common misconception. - Never, during curl's development, have we intended curl to replace wget or - compete on its market. Curl is targeted at single-shot file transfers. - - Curl is not a web site mirroring program. If you wanna use curl to mirror - something: fine, go ahead and write a script that wraps around curl to make - it reality (like curlmirror.pl does). - - Curl is not an FTP site mirroring program. Sure, get and send FTP with curl - but if you want systematic and sequential behavior you should write a - script (or write a new program that interfaces libcurl) and do it. - - Curl is not a PHP tool, even though it works perfectly well when used from - or with PHP. - - Curl is not a single-OS program. Curl exists, compiles, builds and runs - under a wide range of operating systems, including all modern Unixes (and a - bunch of older ones too), Windows, Amiga, BeOS, OS/2, OS X, QNX etc. - - 1.4 When will you make curl do XXXX ? - - We love suggestions of what to change in order to make curl and libcurl - better. We do however believe in a few rules when it comes to the future of - curl: - - * Curl -- the command line tool -- is to remain a non-graphical command line - tool. If you want GUIs or fancy scripting capabilities, you should look - for another tool that uses libcurl. - - * We do not add things to curl that other small and available tools already - do very fine at the side. Curl's output is fine to pipe into another - program or redirect to another file for the next program to interpret. - - * We focus on protocol related issues and improvements. If you wanna do more - magic with the supported protocols than curl currently does, chances are - big we will agree. If you wanna add more protocols, we may very well - agree. - - * If you want someone else to make all the work while you wait for us to - implement it for you, that is not a very friendly attitude. We spend a - considerable time already on maintaining and developing curl. In order to - get more out of us, you should consider trading in some of your time and - efforts in return. - - * If you write the code, chances are bigger that it will get into curl - faster. - - 1.5 Who makes cURL? - - cURL and libcurl are not made by any single individual. Sure, Daniel - Stenberg writes the major parts, but other persons' submissions are - important and crucial. Anyone can contribute and post their changes and - improvements and have them inserted in the main sources (of course on the - condition that developers agree on that the fixes are good). - - The list of contributors in the docs/THANKS file is only a small part of all - the people that every day provide us with bug reports, suggestions, ideas - and source code. - - curl is developed by a community, with Daniel at the wheel. - - 1.6 What do you get for making cURL? - - Project cURL is entirely free and open. No person gets paid for developing - curl. We do this voluntarily on our spare time. - - We get some help from companies. Contactor Data hosts the curl web site, - Haxx owns the curl web site's domain and sourceforge.net hosts several - project services we take advantage from, like the bug tracker, mailing lists - and more. - - If you want to support our project with a donation or similar, one way of - doing that would be to buy "gift certificates" at useful online shopping - sites, such as amazon.com or thinkgeek.com. Another way would be to sponsor - us through a banner-program or even better: by helping us coding, - documenting, testing etc. You're welcome to send us a buck using paypal, as - described here: http://curl.haxx.se/donation.html - - 1.7 What about CURL from curl.com? - - During the summer 2001, curl.com was busy advertising their client-side - programming language for the web, named CURL. - - We are in no way associated with curl.com or their CURL programming - language. - - Our project name curl has been in effective use since 1998. We were not the - first computer related project to use the name "curl" and do not claim any - first-hand rights to the name. - - We recognize that we will be living in parallel with curl.com and wish them - every success. - - 1.8 I have a problem who do I mail? - - Please do not mail any single individual unless you really need to. Keep - curl-related questions on a suitable mailing list. All available mailing - lists are listed in the MANUAL document and online at - http://curl.haxx.se/mail/ - - Keeping curl-related questions and discussions on mailing lists allows - others to join in and help, to share their ideas, contribute their - suggestions and spread their wisdom. Keeping discussions on public mailing - lists also allows for others to learn from this (both current and future - users thanks to the web based archives of the mailing lists), thus saving us - from having to repeat ourselves even more. Thanks for respecting this. - - -2. Install Related Problems - - 2.1. configure doesn't find OpenSSL even when it is installed - - This may be because of several reasons. - - 2.1.1. native linker doesn't find openssl - - Affected platforms: - Solaris (native cc compiler) - HPUX (native cc compiler) - SGI IRIX (native cc compiler) - SCO UNIX (native cc compiler) - - When configuring curl, I specify --with-ssl. OpenSSL is installed in - /usr/local/ssl Configure reports SSL in /usr/local/ssl, but fails to find - CRYPTO_lock in -lcrypto - - Cause: The cc for this test places the -L/usr/local/ssl/lib AFTER - -lcrypto, so ld can't find the library. This is due to a bug in the GNU - autoconf tool. - - Workaround: Specifying "LDFLAGS=-L/usr/local/ssl/lib" in front of - ./configure places the -L/usr/local/ssl/lib early enough in the command - line to make things work - - Solution submitted by: Bob Allison - - 2.1.2. only the libssl lib is missing - - If all include files and the libcrypto lib is present, with only the - libssl being missing according to configure, this is mostly likely because - a few functions are left out from the libssl. - - If the function names missing include RSA or RSAREF you can be certain - that this is because libssl requires the RSA and RSAREF libs to build. - - See the INSTALL file section that explains how to add those libs to - configure. Make sure that you remove the config.cache file before you - rerun configure with the new flags. - - 2.2. Does curl work/build with other SSL libraries? - - Curl has been written to use OpenSSL, although there should not be much - problems using a different library. If anyone does "port" curl to use a - different SSL library, we are of course very interested in getting the - patch! - - 2.3. Where can I find a copy of LIBEAY32.DLL? - - That is an OpenSSL binary built for Windows. - - Curl uses OpenSSL to do the SSL stuff. The LIBEAY32.DLL is what curl needs - on a windows machine to do https://. Check out the curl web site to find - accurate and up-to-date pointers to recent OpenSSL DLLs and other binary - packages. - - 2.4. Does cURL support Socks (RFC 1928) ? - - There is limited support for SOCKS5 for curl built with IPv6 support - disabled. - - -3. Usage problems - - 3.1. curl: (1) SSL is disabled, https: not supported - - If you get this output when trying to get anything from a https:// server, - it means that the configure script couldn't find all libs and include files - it requires for SSL to work. If the configure script fails to find them, - curl is simply built without SSL support. - - To get the https:// support into a curl that was previously built but that - reports that https:// is not supported, you should dig through the document - and logs and check out why the configure script doesn't find the SSL libs - and/or include files. - - Also, check out the other paragraph in this FAQ labeled "configure doesn't - find OpenSSL even when it is installed". - - 3.2. How do I tell curl to resume a transfer? - - Curl supports resumed transfers both ways on both FTP and HTTP. - - Try the -C option. - - 3.3. Why doesn't my posting using -F work? - - You can't simply use -F or -d at your choice. The web server that will - receive your post assumes one of the formats. If the form you're trying to - "fake" sets the type to 'multipart/form-data', then and only then you must - use the -F type. In all the most common cases, you should use -d which then - causes a posting with the type 'application/x-www-form-urlencoded'. - - This is described in some detail in the MANUAL and TheArtOfHttpScripting - documents, and if you don't understand it the first time, read it again - before you post questions about this to the mailing list. Also, try reading - through the mailing list archives for old postings and questions regarding - this. - - 3.4. How do I tell curl to run custom FTP commands? - - You can tell curl to perform optional commands both before and/or after a - file transfer. Study the -Q/--quote option. - - Since curl is used for file transfers, you don't use curl to just perform - FTP commands without transferring anything. Therefore you must always specify - a URL to transfer to/from even when doing custom FTP commands. - - 3.5. How can I disable the Pragma: nocache header? - - You can change all internally generated headers by adding a replacement with - the -H/--header option. By adding a header with empty contents you safely - disable that one. Use -H "Pragma:" to disable that specific header. - - 3.6. Does curl support ASP, XML, XHTML or HTML version Y? - - To curl, all contents are alike. It doesn't matter how the page was - generated. It may be ASP, PHP, Perl, shell-script, SSI or plain - HTML-files. There's no difference to curl and it doesn't even know what kind - of language that generated the page. - - See also item 3.14 regarding javascript. - - 3.7. Can I use curl to delete/rename a file through FTP? - - Yes. You specify custom FTP commands with -Q/--quote. - - One example would be to delete a file after you have downloaded it: - - curl -O ftp://download.com/coolfile -Q '-DELE coolfile' - - 3.8 How do I tell curl to follow HTTP redirects? - - Curl does not follow so-called redirects by default. The Location: header - that informs the client about this is only interpreted if you're using the - -L/--location option. As in: - - curl -L http://redirector.com - - 3.9 How do I use curl in my favorite programming language? - - There exist many language interfaces/bindings for curl that integrates it - better with various languages. If you are fluid in a script language, you - may very well opt to use such an interface instead of using the command line - tool. - - Find out more about which languages that support curl directly, and how to - install and use them, in the libcurl section of the curl web site: - - http://curl.haxx.se/libcurl/ - - In February 2003, there are interfaces available for the following - languages: Basic, C, C++, Cocoa, Dylan, Euphoria, Java, Lua, Object-Pascal, - Pascal, Perl, PHP, PostgreSQL, Python, Rexx, Ruby, Scheme and Tcl. By the - time you read this, additional ones may have appeared! - - 3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP? - - Curl adheres to the HTTP spec, which basically means you can play with *any* - protocol that is built on top of HTTP. Protocols such as SOAP, WEBDAV and - XML-RPC are all such ones. You can use -X to set custom requests and -H to - set custom headers (or replace internally generated ones). - - Using libcurl is of course just as fine and you'd just use the proper - library options to do the same. - - 3.11 How do I POST with a different Content-Type? - - You can always replace the internally generated headers with -H/--header. - To make a simple HTTP POST with text/xml as content-type, do something like: - - curl -d "datatopost" -H "Content-Type: text/xml" [URL] - - 3.12 Why do FTP specific features over HTTP proxy fail? - - Because when you use a HTTP proxy, the protocol spoken on the network will - be HTTP, even if you specify a FTP URL. This effectively means that you - normally can't use FTP specific features such as FTP upload and FTP quote - etc. - - There is one exception to this rule, and that is if you can "tunnel through" - the given HTTP proxy. Proxy tunneling is enabled with a special option (-p) - and is generally not available as proxy admins usually disable tunneling to - other ports than 443 (which is used for HTTPS access through proxies). - - 3.13 Why does my single/double quotes fail? - - To specify a command line option that includes spaces, you might need to - put the entire option within quotes. Like in: - - curl -d " with spaces " url.com - - or perhaps - - curl -d ' with spaces ' url.com - - Exactly what kind of quotes and how to do this is entirely up to the shell - or command line interpreter that you are using. For most unix shells, you - can more or less pick either single (') or double (") quotes. For - Windows/DOS prompts I believe you're forced to use double (") quotes. - - Please study the documentation for your particular environment. Examples in - the curl docs will use a mix of both these ones as shown above. You must - adjust them to work in your environment. - - Remember that curl works and runs on more operating systems than most single - individuals have ever tried. - - 3.14 Does curl support javascript or pac (automated proxy config)? - - Many web pages do magic stuff using embedded javascript. Curl and libcurl - have no built-in support for that, so it will be treated just like any other - contents. - - .pac files are a netscape invention and are sometimes used by organizations - to allow them to differentiate which proxies to use. The .pac contents is - just a javascript program that gets invoked by the browser and that returns - the name of the proxy to connect to. Since curl doesn't support javascript, - it can't support .pac proxy configuration either. - - Some work-arounds usually suggested to overcome this javascript dependency: - - - Depending on the javascript complexity, write up a script that - translates it to another language and execute that. - - - Read the javascript code and rewrite the same logic in another language. - - - Implement a javascript interpreted, people have successfully used the - Mozilla javascript engine in the past. - - - Ask your admins to stop this, for a static proxy setup or similar. - - -4. Running Problems - - 4.1. Problems connecting to SSL servers. - - It took a very long time before we could sort out why curl had problems to - connect to certain SSL servers when using SSLeay or OpenSSL v0.9+. The - error sometimes showed up similar to: - - 16570:error:1407D071:SSL routines:SSL2_READ:bad mac decode:s2_pkt.c:233: - - It turned out to be because many older SSL servers don't deal with SSLv3 - requests properly. To correct this problem, tell curl to select SSLv2 from - the command line (-2/--sslv2). - - There has also been examples where the remote server didn't like the SSLv2 - request and instead you had to force curl to use SSLv3 with -3/--sslv3. - - 4.2. Why do I get problems when I use & or % in the URL? - - In general unix shells, the & letter is treated special and when used, it - runs the specified command in the background. To safely send the & as a part - of a URL, you should quote the entire URL by using single (') or double (") - quotes around it. - - An example that would invoke a remote CGI that uses &-letters could be: - - curl 'http://www.altavista.com/cgi-bin/query?text=yes&q=curl' - - In Windows, the standard DOS shell treats the %-letter specially and you - need to use TWO %-letters for each single one you want to use in the URL. - - Also note that if you want the literal %-letter to be part of the data you - pass in a POST using -d/--data you must encode it as '%25' (which then also - needs the %-letter doubled on Windows machines). - - 4.3. How can I use {, }, [ or ] to specify multiple URLs? - - Because those letters have a special meaning to the shell, and to be used in - a URL specified to curl you must quote them. - - An example that downloads two URLs (sequentially) would do: - - curl '{curl,www}.haxx.se' - - To be able to use those letters as actual parts of the URL (without using - them for the curl URL "globbing" system), use the -g/--globoff option: - - curl -g 'www.site.com/weirdname[].html' - - 4.4. Why do I get downloaded data even though the web page doesn't exist? - - Curl asks remote servers for the page you specify. If the page doesn't exist - at the server, the HTTP protocol defines how the server should respond and - that means that headers and a "page" will be returned. That's simply how - HTTP works. - - By using the --fail option you can tell curl explicitly to not get any data - if the HTTP return code doesn't say success. - - 4.5 Why do I get return code XXX from a HTTP server? - - RFC2616 clearly explains the return codes. This is a short transcript. Go - read the RFC for exact details: - - 4.5.1 "400 Bad Request" - - The request could not be understood by the server due to malformed - syntax. The client SHOULD NOT repeat the request without modifications. - - 4.5.2 "401 Unauthorized" - - The request requires user authentication. - - 4.5.3 "403 Forbidden" - - The server understood the request, but is refusing to fulfill it. - Authorization will not help and the request SHOULD NOT be repeated. - - 4.5.4 "404 Not Found" - - The server has not found anything matching the Request-URI. No indication - is given of whether the condition is temporary or permanent. - - 4.5.5 "405 Method Not Allowed" - - The method specified in the Request-Line is not allowed for the resource - identified by the Request-URI. The response MUST include an Allow header - containing a list of valid methods for the requested resource. - - 4.5.6 "301 Moved Permanently" - - If you get this return code and an HTML output similar to this: - -

Moved Permanently

The document has moved here. - - it might be because you request a directory URL but without the trailing - slash. Try the same operation again _with_ the trailing URL, or use the - -L/--location option to follow the redirection. - - 4.6. Can you tell me what error code 142 means? - - All error codes that are larger than the highest documented error code means - that curl has exited due to a crash. This is a serious error, and we - appreciate a detailed bug report from you that describes how we could go - ahead and repeat this! - - 4.7. How do I keep user names and passwords secret in Curl command lines? - - This problem has two sides: - - The first part is to avoid having clear-text passwords in the command line - so that they don't appear in 'ps' outputs and similar. That is easily - avoided by using the "-K" option to tell curl to read parameters from a - file or stdin to which you can pass the secret info. - - To keep the passwords in your account secret from the rest of the world is - not a task that curl addresses. You could of course encrypt them somehow to - at least hide them from being read by human eyes, but that is not what - anyone would call security. - - Also note that regular HTTP and FTP passwords are sent in clear across the - network. All it takes for anyone to fetch them is to listen on the network. - Eavesdropping is very easy. - - 4.8 I found a bug! - - It is not a bug if the behavior is documented. Read the docs first. - - If it is a problem with a binary you've downloaded or a package for your - particular platform, try contacting the person who built the package/archive - you have. - - If there is a bug, read the BUGS document first. Then report it as described - in there. - - 4.9. Curl can't authenticate to the server that requires NTLM? - - This is supported in curl 7.10.6 or later. No earlier curl version knows - of this magic. - - NTLM is a Microsoft proprietary protocol. Proprietary formats are evil. You - should not use such ones. - - 4.10 My HTTP request using HEAD, PUT or DELETE doesn't work! - - Many web servers allow or demand that the administrator configures the - server properly for these requests to work on the web server. - - Some servers seem to support HEAD only on certain kinds of URLs. - - To fully grasp this, try the documentation for the particular server - software you're trying to interact with. This is not anything curl can do - anything about. - - 4.11 Why does my HTTP range requests return the full document? - - Because the range may not be supported by the server, or the server may - choose to ignore it and return the full document anyway. - - 4.12 Why do I get "certificate verify failed" ? - - You invoke curl 7.10 or later to communicate on a https:// URL and get an - error back looking something similar to this: - - curl: (35) SSL: error:14090086:SSL routines: - SSL3_GET_SERVER_CERTIFICATE:certificate verify failed - - Then it means that curl couldn't verify that the server's certificate was - good. Curl verifies the certificate using the CA cert bundle that comes with - the curl installation. - - To disable the verification (which makes it act like curl did before 7.10), - use -k. This does however enable man-in-the-middle attacks. - - If you get this failure but are having a CA cert bundle installed and used, - the server's certificate is not signed by one of the CA's in the bundle. It - might for example be self-signed. You then correct this problem by obtaining - a valid CA cert for the server. Or again, decrease the security by disabling - this check. - - Details are also in the SSLCERTS file in the release archives, found online - here: http://curl.haxx.se/docs/sslcerts.html - -5. libcurl Issues - - 5.1. Is libcurl thread-safe? - - Yes. - - We have written the libcurl code specificly adjusted for multi-threaded - programs. libcurl will use thread-safe functions instead of non-safe ones if - your system has such. - - We would appreciate some kind of report or README file from those who have - used libcurl in a threaded environment. - - 5.2 How can I receive all data into a large memory chunk? - - [ See also the examples/getinmemory.c source ] - - You are in full control of the callback function that gets called every time - there is data received from the remote server. You can make that callback do - whatever you want. You do not have to write the received data to a file. - - One solution to this problem could be to have a pointer to a struct that you - pass to the callback function. You set the pointer using the - curl_easy_setopt(CURLOPT_FILE) function. Then that pointer will be passed to - the callback instead of a FILE * to a file: - - /* imaginary struct */ - struct MemoryStruct { - char *memory; - size_t size; - }; - - /* imaginary callback function */ - size_t - WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data) - { - register int realsize = size * nmemb; - struct MemoryStruct *mem = (struct MemoryStruct *)data; - - mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1); - if (mem->memory) { - memcpy(&(mem->memory[mem->size]), ptr, realsize); - mem->size += realsize; - mem->memory[mem->size] = 0; - } - return realsize; - } - - 5.3 How do I fetch multiple files with libcurl? - - libcurl has excellent support for transferring multiple files. You should - just repeatedly set new URLs with curl_easy_setopt() and then transfer it - with curl_easy_perform(). The handle you get from curl_easy_init() is not - only reusable, but you're even encouraged to reuse it if you can, as that - will enable libcurl to use persistent connections. - - 5.4 Does libcurl do Winsock initialization on win32 systems? - - Yes, if told to in the curl_global_init() call. - - 5.5 Does CURLOPT_FILE and CURLOPT_INFILE work on win32 ? - - Yes, but you cannot open a FILE * and pass the pointer to a DLL and have - that DLL use the FILE *. If you set CURLOPT_FILE you must also use - CURLOPT_WRITEFUNCTION as well to set a function that writes the file, even - if that simply writes the data to the specified FILE*. Similarly, if you use - CURLOPT_INFILE you must also specify CURLOPT_READFUNCTION. - - (Provided by Joel DeYoung and Bob Schader) - - 5.6 What about Keep-Alive or persistent connections? - - curl and libcurl have excellent support for persistent connections when - transferring several files from the same server. Curl will attempt to reuse - connections for all URLs specified on the same command line/config file, and - libcurl will reuse connections for all transfers that are made using the - same libcurl handle. - - 5.7 Link errors when building libcurl on Windows! - - You need to make sure that your project, and all the libraries (both static - and dynamic) that it links against, are compiled/linked against the same run - time library. - - This is determined by the /MD, /ML, /MT (and their corresponding /M?d) - options to the command line compiler. /MD (linking against MSVCRT dll) seems - to be the most commonly used option. - - (Provided by Andrew Francis) - - -6. License Issues - - Curl and libcurl are released under a MIT/X derivate license. The license is - very liberal and should not impose a problem for your project. This section - is just a brief summary for the cases we get the most questions. (Parts of - this section was much enhanced by Bjorn Reese.) - - 6.1. I have a GPL program, can I use the libcurl library? - - Yes! - - Since libcurl may be distributed under the MIT/X derivate license, it can be - used together with GPL in any software. - - 6.2. I have a closed-source program, can I use the libcurl library? - - Yes! - - libcurl does not put any restrictions on the program that uses the library. - - 6.3. I have a BSD licensed program, can I use the libcurl library? - - Yes! - - libcurl does not put any restrictions on the program that uses the library. - - 6.4. I have a program that uses LGPL libraries, can I use libcurl? - - Yes! - - The LGPL license doesn't clash with other licenses. - - 6.5. Can I modify curl/libcurl for my program and keep the changes secret? - - Yes! - - The MIT/X derivate license practically allows you to do almost anything with - the sources, on the condition that the copyright texts in the sources are - left intact. - - 6.6. Can you please change the curl/libcurl license to XXXX? - - No. - - We have carefully picked this license after years of development and - discussions and a large amount of people have contributed with source code - knowing that this is the license we use. This license puts the restrictions - we want on curl/libcurl and it does not spread to other programs or - libraries that use it. It should be possible for everyone to use libcurl or - curl in their projects, no matter what license they already have in use. diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/FEATURES b/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/FEATURES deleted file mode 100644 index 261b37aa..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/FEATURES +++ /dev/null @@ -1,108 +0,0 @@ - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| - -FEATURES - -Misc - - full URL syntax - - custom maximum download time - - custom least download speed acceptable - - custom output result after completion - - multiple URLs - - guesses protocol from host name unless specified - - uses .netrc - - progress bar/time specs while downloading - - "standard" proxy environment variables support - - config file support - - compiles on win32 (reported builds on 40+ operating systems) - - redirectable stderr - - selectable network interface for outgoing traffic - - IPv6 support - - persistant connections - - socks5 support - - supports user name + password in proxy environment variables - - operations through proxy "tunnel" (using CONNECT) - -HTTP - - HTTP/1.1 compliant (optionally uses 1.0) - - GET - - PUT - - HEAD - - POST - - multipart formpost (RFC1867-style) - - authentication: Basic, Digest, NTLM(*1), GSS-Negotiate/Negotiate(*3) and - SPNEGO (*4) - - resume (both GET and PUT) - - follow redirects - - maximum amount of redirects to follow - - custom HTTP request - - cookie get/send fully parsed - - reads/writes the netscape cookie file format - - custom headers (replace/remove internally generated headers) - - custom user-agent string - - custom referer string - - range - - proxy authentication - - time conditions - - via http-proxy - - retrieve file modification date - - Content-Encoding support for deflate and gzip - - "Transfer-Encoding: chunked" support for "uploads" - -HTTPS (*1) - - (all the HTTP features) - - using certificates - - verify server certificate - - via http-proxy - - select desired encryption - - force usage of a specific SSL version (SSLv2, SSLv3 or TLSv1) - -FTP - - download - - authentication - - kerberos4 (*5) - - active/passive using PORT, EPRT, PASV or EPSV - - single file size information (compare to HTTP HEAD) - - 'type=' URL support - - dir listing - - dir listing names-only - - upload - - upload append - - upload via http-proxy as HTTP PUT - - download resume - - upload resume - - custom ftp commands (before and/or after the transfer) - - simple "range" support - - via http-proxy - - all operations can be tunneled through a http-proxy - - customizable to retrieve file modification date - -TELNET - - connection negotiation - - custom telnet options - - stdin/stdout I/O - -LDAP (*2) - - full LDAP URL support - -DICT - - extended DICT URL support - -GOPHER - - GET - - via http-proxy - -FILE - - URL support - -FOOTNOTES -========= - - *1 = requires OpenSSL - *2 = requires OpenLDAP - *3 = requires a GSSAPI-compliant library, such as Heimdal or similar. - *4 = requires FBopenssl - *5 = requires a krb4 library, such as the MIT one or similar. diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/LICENSE.OpenSSL.txt b/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/LICENSE.OpenSSL.txt deleted file mode 100644 index dddb0784..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/LICENSE.OpenSSL.txt +++ /dev/null @@ -1,127 +0,0 @@ - - LICENSE ISSUES - ============== - - The OpenSSL toolkit stays under a dual license, i.e. both the conditions of - the OpenSSL License and the original SSLeay license apply to the toolkit. - See below for the actual license texts. Actually both licenses are BSD-style - Open Source licenses. In case of any license issues related to OpenSSL - please contact openssl-core@openssl.org. - - OpenSSL License - --------------- - -/* ==================================================================== - * Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - - Original SSLeay License - ----------------------- - -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/README b/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/README deleted file mode 100644 index 9db626b9..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/README +++ /dev/null @@ -1,70 +0,0 @@ - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| - -README - - Curl is a command line tool for transfering data specified with URL - syntax. Find out how to use Curl by reading the curl.1 man page or the - MANUAL document. Find out how to install Curl by reading the INSTALL - document. - - libcurl is the library curl is using to do its job. It is readily - available to be used by your software. Read the libcurl.3 man page to - learn how! - - You find answers to the most frequent questions we get in the FAQ document. - - Study the COPYING file for distribution terms and similar. - -CONTACT - - If you have problems, questions, ideas or suggestions, please contact us - by posting to a suitable mailing list. See http://curl.haxx.se/mail/ - - Many major contributors to the project are listed in the THANKS document. - -WEB SITE - - Visit the curl web site or mirrors for the latest news: - - Sweden -- http://curl.haxx.se/ - Russia -- http://curl.tsuren.net/ - US -- http://curl.sf.net/ - Australia -- http://curl.planetmirror.com/ - -DOWNLOAD - - The official download mirror sites are: - - Sweden -- ftp://ftp.sunet.se/pub/www/utilities/curl/ - Sweden -- http://cool.haxx.se/curl/ - Germany -- ftp://ftp.fu-berlin.de/pub/unix/network/curl/ - Australia -- http://curl.planetmirror.com/download/ - US -- http://curl.sourceforge.net/download/ - Hongkong -- http://www.execve.net/curl/ - Russia -- http://curl.tsuren.net/download/ - -CVS - - To download the very latest source off the CVS server do this: - - cvs -d :pserver:cvsread@cvs.php.net:/repository login - - (enter "phpfi" when asked for password) - - cvs -d :pserver:cvsread@cvs.php.net:/repository co curl - - (you'll get a directory named curl created, filled with the source code) - - cvs -d :pserver:cvsread@cvs.php.net:/repository logout - - (you're off the hook!) - -NOTICE - - Curl contains pieces of source code that is Copyright (c) 1998, 1999 - Kungliga Tekniska Högskolan. This notice is included here to comply with the - distribution terms. diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/README.win32 b/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/README.win32 deleted file mode 100644 index 110af3c7..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/README.win32 +++ /dev/null @@ -1,22 +0,0 @@ - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| - -README.win32 - - Read the README file first. - - Curl has been compiled, built and run on all sorts of Windows and win32 - systems. While not being the main develop target, a fair share of curl users - are win32-based. - - The unix-style man pages are tricky to read on windows, so therefore are all - those pages converted to HTML as well as pdf, and included in the release - archives. - - The main curl.1 man page is also "built-in" in the command line tool. Use a - command line similar to this in order to extract a separate text file: - - curl -M >manual.txt diff --git a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/curl.html b/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/curl.html deleted file mode 100644 index ac8392a5..00000000 --- a/xemacs-packages/lisp/twittering-mode-3.0.0/win-curl/docs/curl.html +++ /dev/null @@ -1,1436 +0,0 @@ - - -
-
-       curl - transfer a URL
-
-
-
-

SYNOPSIS

-       curl [options] [URL...]
-
-
-
-

DESCRIPTION

-       curl is a tool to transfer data from or to a server, using
-       one of the supported protocols (HTTP,  HTTPS,  FTP,  FTPS,
-       GOPHER,  DICT,  TELNET,  LDAP  or  FILE).  The  command is
-       designed to work without user interaction.
-
-       curl offers a busload of useful tricks like proxy support,
-       user  authentication,  ftp upload, HTTP post, SSL (https:)
-       connections, cookies, file transfer resume  and  more.  As
-       you  will see below, the amount of features will make your
-       head spin!
-
-       curl is powered by libcurl for all  transfer-related  fea-
-       tures. See libcurl(3) for details.
-
-
-
-

URL

-       The  URL  syntax  is  protocol  dependent.  You'll  find a
-       detailed description in RFC 2396.
-
-       You can specify multiple URLs or parts of URLs by  writing
-       part sets within braces as in:
-
-        http://site.{one,two,three}.com
-
-       or  you  can get sequences of alphanumeric series by using
-       [] as in:
-
-        ftp://ftp.numericals.com/file[1-100].txt
-        ftp://ftp.numericals.com/file[001-100].txt    (with lead-
-       ing zeros)
-        ftp://ftp.letters.com/file[a-z].txt
-
-       No nesting of the sequences is supported at the moment:
-
-        http://www.any.org/archive[1996-1999]/vol-
-       ume[1-4]part{a,b,c,index}.html
-
-       You can specify any amount of URLs on  the  command  line.
-       They  will be fetched in a sequential manner in the speci-
-       fied order.
-
-       Curl will attempt to re-use connections for multiple  file
-       transfers, so that getting many files from the same server
-       will not do multiple connects / handshakes. This  improves
-       speed. Of course this is only done on files specified on a
-       single command line and cannot be  used  between  separate
-       curl invokes.
-       -a/--append
-              (FTP)  When  used  in an FTP upload, this will tell
-              curl to append to the target file instead of  over-
-              writing  it.  If the file doesn't exist, it will be
-              created.
-
-              If this option is used twice, the second  one  will
-              disable append mode again.
-
-       -A/--user-agent <agent string>
-              (HTTP) Specify the User-Agent string to send to the
-              HTTP server. Some badly done CGIs fail if  its  not
-              set  to  "Mozilla/4.0".   To  encode  blanks in the
-              string,  surround  the  string  with  single  quote
-              marks.   This  can also be set with the -H/--header
-              flag of course.
-
-              If this option is set more than once, the last  one
-              will be the one that's used.
-
-       --anyauth
-              (HTTP)  Tells  curl  to  figure  out authentication
-              method by itself, and use the most secure  one  the
-              remote  site  claims  it  supports. This is done by
-              first doing a request and  checking  the  response-
-              headers, thus inducing an extra network round-trip.
-              This is used instead of setting a specific  authen-
-              tication  method,  which  you can do with --digest,
-              --ntlm, and --negotiate. (Added in 7.10.6)
-
-              If this option is used several times, the following
-              occurrences make no difference.
-
-       -b/--cookie <name=data>
-              (HTTP)  Pass  the  data  to  the  HTTP  server as a
-              cookie.  It  is  supposedly  the  data   previously
-              received  from  the server in a "Set-Cookie:" line.
-              The data should be  in  the  format  "NAME1=VALUE1;
-              NAME2=VALUE2".
-
-              If no '=' letter is used in the line, it is treated
-              as a filename to  use  to  read  previously  stored
-              cookie  lines  from,  which  should be used in this
-              session if they match. Using this method also acti-
-              vates  the  "cookie  parser"  which  will make curl
-              record incoming cookies too, which may be handy  if
-              you're   using   this   in   combination  with  the
-              -L/--location option. The file format of  the  file
-              to  read  cookies from should be plain HTTP headers
-              or the Netscape/Mozilla cookie file format.
-
-              NOTE that the file specified  with  -b/--cookie  is
-              option or you could even save the HTTP headers to a
-              file using -D/--dump-header!
-
-              If this option is set more than once, the last  one
-              will be the one that's used.
-
-       -B/--use-ascii
-              Use ASCII transfer when getting an FTP file or LDAP
-              info. For FTP, this can also be enforced  by  using
-              an URL that ends with ";type=A". This option causes
-              data sent to stdout to be in text  mode  for  win32
-              systems.
-
-              If  this  option is used twice, the second one will
-              disable ASCII usage.
-
-       --basic
-              (HTTP) Tells curl to use HTTP Basic authentication.
-              This  is  the  default  and  this option is usually
-              pointless, unless you use it to override  a  previ-
-              ously  set option that sets a different authentica-
-              tion method (such as --ntlm, --digest and --negoti-
-              ate). (Added in 7.10.6)
-
-              If this option is used several times, the following
-              occurrences make no difference.
-
-       --ciphers <list of ciphers>
-              (SSL) Specifies which ciphers to use in the connec-
-              tion.  The  list  of  ciphers  must  be using valid
-              ciphers. Read up on SSL cipher list details on this
-              URL: http://www.openssl.org/docs/apps/ciphers.html
-
-              If  this option is used several times, the last one
-              will override the others.
-
-       --compressed
-              (HTTP) Request a compressed response using  one  of
-              the  algorithms  libcurl  supports,  and return the
-              uncompressed document.  If this option is used  and
-              the server sends an unsupported encoding, Curl will
-              report an error.
-
-              If this option is used several times,  each  occur-
-              rence will toggle it on/off.
-
-       --connect-timeout <seconds>
-              Maximum  time in seconds that you allow the connec-
-              tion to the server to take.  This only  limits  the
-              connection  phase,  once  curl  has  connected this
-              option is of no more use. See also  the  --max-time
-              option.
-              will be used.
-
-       -c/--cookie-jar <file name>
-              Specify to which file you want curl  to  write  all
-              cookies  after  a  completed operation. Curl writes
-              all cookies previously read from a  specified  file
-              as   well  as  all  cookies  received  from  remote
-              server(s). If no cookies are known, no file will be
-              written.   The  file  will  be  written  using  the
-              Netscape cookie file format. If you  set  the  file
-              name  to  a  single  dash, "-", the cookies will be
-              written to stdout.
-
-              NOTE If the cookie jar can't be created or  written
-              to,  the  whole  curl  operation won't fail or even
-              report an error clearly. Using -v will get a  warn-
-              ing  displayed,  but that is the only visible feed-
-              back you get about this possibly lethal  situation.
-
-              If  this  option  is  used  several times, the last
-              specfied file name will be used.
-
-       -C/--continue-at <offset>
-              Continue/Resume a previous  file  transfer  at  the
-              given  offset. The given offset is the exact number
-              of bytes that will  be  skipped  counted  from  the
-              beginning  of  the  source file before it is trans-
-              fered to the destination.  If  used  with  uploads,
-              the  ftp  server  command  SIZE will not be used by
-              curl.
-
-              Use "-C -" to tell curl to automatically  find  out
-              where/how  to resume the transfer. It then uses the
-              given output/input files to figure that out.
-
-              If this option is used several times, the last  one
-              will be used.
-
-       --create-dirs
-              When  used  in conjunction with the -o option, curl
-              will create the necessary local directory hierarchy
-              as needed.
-
-       --crlf (FTP)  Convert LF to CRLF in upload. Useful for MVS
-              (OS/390).
-
-              If this option is used twice, the second will again
-              disable crlf converting.
-
-       -d/--data <data>
-              (HTTP)  Sends  the specified data in a POST request
-              to the HTTP server, in a way that can emulate as if
-              as  specified  with  no  extra processing (with all
-              newlines cut off).  The  data  is  expected  to  be
-              "url-encoded".  This  will  cause  curl to pass the
-              data to the server using the content-type  applica-
-              tion/x-www-form-urlencoded.  Compare to -F. If more
-              than one -d/--data option is used on the same  com-
-              mand line, the data pieces specified will be merged
-              together with a separating  &-letter.  Thus,  using
-              '-d  name=daniel  -d  skill=lousy' would generate a
-              post       chunk       that       looks        like
-              'name=daniel&skill=lousy'.
-
-              If  you  start the data with the letter @, the rest
-              should be a file name to read the data from,  or  -
-              if  you want curl to read the data from stdin.  The
-              contents of the file must already  be  url-encoded.
-              Multiple  files can also be specified. Posting data
-              from a file named 'foobar' would thus be done  with
-              "--data @foobar".
-
-              To  post data purely binary, you should instead use
-              the --data-binary option.
-
-              -d/--data is the same as --data-ascii.
-
-              If this option is used several times, the ones fol-
-              lowing the first will append data.
-
-       --data-ascii <data>
-              (HTTP) This is an alias for the -d/--data option.
-
-              If this option is used several times, the ones fol-
-              lowing the first will append data.
-
-       --data-binary <data>
-              (HTTP) This posts  data  in  a  similar  manner  as
-              --data-ascii  does, although when using this option
-              the entire context of the posted data is  kept  as-
-              is.  If  you want to post a binary file without the
-              strip-newlines feature of the --data-ascii  option,
-              this is for you.
-
-              If this option is used several times, the ones fol-
-              lowing the first will append data.
-
-       --digest
-              (HTTP) Enables HTTP Digest authentication. This  is
-              a  authentication  that  prevents the password from
-              being sent over the wire in clear text. Use this in
-              combination with the normal -u/--user option to set
-              user name and password. See also --ntlm,  --negoti-
-              ate  and  --anyauth  for related options. (Added in
-              occurrences make no difference.
-
-       --disable-eprt
-              (FTP)  Tell curl to disable the use of the EPRT and
-              LPRT commands when doing active FTP transfers. Curl
-              will  normally  always  first  attempt to use EPRT,
-              then LPRT before using PORT, but with this  option,
-              it  will  use  PORT  right  away. EPRT and LPRT are
-              extensions to the original FTP  protocol,  may  not
-              work  on  all servers but enable more functionality
-              in a better way than the traditional PORT  command.
-              (Aded in 7.10.5)
-
-              If  this  option is used several times, each occur-
-              rence will toggle this on/off.
-
-       --disable-epsv
-              (FTP) Tell curl to disable the use of the EPSV com-
-              mand  when  doing  passive FTP transfers. Curl will
-              normally always first attempt to  use  EPSV  before
-              PASV,  but  with this option, it will not try using
-              EPSV.
-
-              If this option is used several times,  each  occur-
-              rence will toggle this on/off.
-
-       -D/--dump-header <file>
-              Write the protocol headers to the specified file.
-
-              This  option is handy to use when you want to store
-              the headers that a HTTP site sends to you.  Cookies
-              from  the  headers  could  then be read in a second
-              curl invoke by using the  -b/--cookie  option!  The
-              -c/--cookie-jar  option  is however a better way to
-              store cookies.
-
-              When used on FTP, the ftp server response lines are
-              considered  being  "headers"  and  thus  are  saved
-              there.
-
-              If this option is used several times, the last  one
-              will be used.
-
-       -e/--referer <URL>
-              (HTTP)  Sends the "Referer Page" information to the
-              HTTP  server.  This  can  also  be  set  with   the
-              -H/--header   flag   of  course.   When  used  with
-              -L/--location you can append ";auto" to the referer
-              URL to make curl automatically set the previous URL
-              when it follows a  Location:  header.  The  ";auto"
-              string  can be used alone, even if you don't set an
-              initial referer.
-              will be used.
-
-       --environment
-              (RISC  OS  ONLY)  Sets a range of environment vari-
-              ables, using the names the -w option  supports,  to
-              easier allow extraction of useful information after
-              having run curl.
-
-              If this option is used several times,  each  occur-
-              rence will toggle this on/off.
-
-       --egd-file <file>
-              (HTTPS)  Specify the path name to the Entropy Gath-
-              ering Daemon socket. The socket is used to seed the
-              random  engine  for  SSL  connections. See also the
-              --random-file option.
-
-       -E/--cert <certificate[:password]>
-              (HTTPS) Tells curl to use the specified certificate
-              file  when  getting a file with HTTPS. The certifi-
-              cate must be in PEM format.  If the optional  pass-
-              word isn't specified, it will be queried for on the
-              terminal. Note that this certificate is the private
-              key and the private certificate concatenated!
-
-              If  this option is used several times, the last one
-              will be used.
-
-       --cacert <CA certificate>
-              (HTTPS) Tells curl to use the specified certificate
-              file  to verify the peer. The file may contain mul-
-              tiple CA certificates. The certificate(s)  must  be
-              in PEM format.
-
-              curl  recognizes  the  environment  variable  named
-              'CURL_CA_BUNDLE' if that is set, and uses the given
-              path  as  a  path  to a CA cert bundle. This option
-              overrides that variable.
-
-              The windows version of curl will automatically look
-              for  a  CA  certs  file named 'curl-ca-bundle.crt',
-              either in the same directory as curl.exe, or in the
-              Current  Working  Directory, or in any folder along
-              your PATH.
-
-              If this option is used several times, the last  one
-              will be used.
-
-       --capath <CA certificate directory>
-              (HTTPS) Tells curl to use the specified certificate
-              directory to verify the peer. The certificates must
-              be  in PEM format, and the directory must have been
-              https connections much more efficiently than  using
-              --cacert if the --cacert file contains many CA cer-
-              tificates.
-
-              If this option is used several times, the last  one
-              will be used.
-
-       -f/--fail
-              (HTTP)  Fail  silently (no output at all) on server
-              errors. This is mostly done  like  this  to  better
-              enable  scripts  etc  to  better  deal  with failed
-              attempts. In normal cases when a HTTP server  fails
-              to  deliver  a document, it returns a HTML document
-              stating so (which  often  also  describes  why  and
-              more).  This flag will prevent curl from outputting
-              that and fail silently instead.
-
-              If this option is used twice, the second will again
-              disable silent failure.
-
-       --ftp-create-dirs
-              (FTP)  When  an  FTP URL/operation uses a path that
-              doesn't currently exist on the server, the standard
-              behaviour  of  curl  is to fail. Using this option,
-              curl will instead attempt to create missing  direc-
-              tories. (Added in 7.10.7)
-
-              If this option is used twice, the second will again
-              disable silent failure.
-
-       -F/--form <name=content>
-              (HTTP) This lets curl emulate a filled in  form  in
-              which  a  user  has pressed the submit button. This
-              causes curl to POST  data  using  the  content-type
-              multipart/form-data   according  to  RFC1867.  This
-              enables uploading of binary files etc. To force the
-              'content'  part  to  be  be a file, prefix the file
-              name with an @ sign. To just get the  content  part
-              from  a  file, prefix the file name with the letter
-              <. The difference between @ and < is  then  that  @
-              makes  a  file  get  attached in the post as a file
-              upload, while the < makes a text field and just get
-              the contents for that text field from a file.
-
-              Example,  to send your password file to the server,
-              where 'password' is the name of the  form-field  to
-              which /etc/passwd will be the input:
-
-              curl -F password=@/etc/passwd www.mypasswords.com
-
-              To  read  the file's content from stdin insted of a
-              file, use - where the  file  name  should've  been.
-              the file upload part, by using 'type=', in a manner
-              similar to:
-
-              curl -F "web=@index.html;type=text/html" url.com
-
-              See further examples and details in the MANUAL.
-
-              This option can be used multiple times.
-
-       -g/--globoff
-              This option switches off the "URL globbing parser".
-              When you set this option, you can specify URLs that
-              contain  the letters {}[] without having them being
-              interpreted by curl itself. Note that these letters
-              are  not  normal legal URL contents but they should
-              be encoded according to the URI standard.
-
-       -G/--get
-              When used, this option will make all data specified
-              with  -d/--data  or  --data-binary  to be used in a
-              HTTP GET request instead of the POST  request  that
-              otherwise  would be used. The data will be appended
-              to the URL with a '?'  separator.
-
-              If used in combination with -I, the POST data  will
-              instead be appended to the URL with a HEAD request.
-
-              If used multiple times, nothing special happens.
-
-       -h/--help
-              Usage help.
-
-       -H/--header <header>
-              (HTTP) Extra header to use when getting a web page.
-              You  may  specify any number of extra headers. Note
-              that if you should add a custom header that has the
-              same  name  as  one of the internal ones curl would
-              use,  your  externally  set  header  will  be  used
-              instead  of  the  internal  one. This allows you to
-              make even trickier stuff than curl  would  normally
-              do.  You  should not replace internally set headers
-              without knowing perfectly well what  you're  doing.
-              Replacing  an internal header with one without con-
-              tent on the right side of the  colon  will  prevent
-              that header from appearing.
-
-              This   option   can   be  used  multiple  times  to
-              add/replace/remove multiple headers.
-
-       -i/--include
-              (HTTP) Include the HTTP-header in the  output.  The
-              HTTP-header  includes things like server-name, date
-              disable header include.
-
-       --interface <name>
-              Perform  an  operation using a specified interface.
-              You can enter interface name, IP  address  or  host
-              name. An example could look like:
-
-              curl --interface eth0:1 http://www.netscape.com/
-
-              If  this option is used several times, the last one
-              will be used.
-
-       -I/--head
-              (HTTP/FTP/FILE) Fetch the HTTP-header  only!  HTTP-
-              servers feature the command HEAD which this uses to
-              get nothing but the header of a document. When used
-              on  a FTP or FILE file, curl displays the file size
-              and last modification time only.
-
-              If this option is used twice, the second will again
-              disable header only.
-
-       -j/--junk-session-cookies
-              (HTTP)  When  curl  is  told to read cookies from a
-              given file, this option will make  it  discard  all
-              "session  cookies". This will basicly have the same
-              effect as if a  new  session  is  started.  Typical
-              browsers   always   discard  session  cookies  when
-              they're closed down. (Added in 7.9.7)
-
-              If this option is used several times,  each  occur-
-              rence will toggle this on/off.
-
-       -k/--insecure
-              (SSL) This option explicitly allows curl to perform
-              "insecure" SSL connections and transfers.  Starting
-              with   curl  7.10,  all  SSL  connections  will  be
-              attempted to be made secure by using  the  CA  cer-
-              tificate  bundle  installed  by default. This makes
-              all  connections  considered  "insecure"  to   fail
-              unless -k/--insecure is used.
-
-              This  option  is ignored if --cacert or --capath is
-              used!
-
-              If this option is used twice, the second time  will
-              again disable it.
-
-       --krb4 <level>
-              (FTP)  Enable kerberos4 authentication and use. The
-              level must be entered and should be one of 'clear',
-              'safe', 'confidential' or 'private'. Should you use
-
-              If  this option is used several times, the last one
-              will be used.
-
-       -K/--config <config file>
-              Specify which config file to  read  curl  arguments
-              from.  The config file is a text file in which com-
-              mand line arguments can be written which then  will
-              be  used as if they were written on the actual com-
-              mand line. Options and  their  parameters  must  be
-              specified  on  the  same  config  file line. If the
-              parameter is to contain white spaces, the parameter
-              must  be inclosed within quotes.  If the first col-
-              umn of a config line is a '#' character,  the  rest
-              of the line will be treated as a comment.
-
-              Specify  the  filename as '-' to make curl read the
-              file from stdin.
-
-              Note that to be able to specify a URL in the config
-              file,  you  need  to  specify  it  using  the --url
-              option, and not by simply writing the  URL  on  its
-              own line. So, it could look similar to this:
-
-              url = "http://curl.haxx.se/docs/"
-
-              This option can be used multiple times.
-
-       --limit-rate <speed>
-              Specify  the maximum transfer rate you want curl to
-              use. This feature is useful if you have  a  limited
-              pipe  and  you'd  like  your  transfer not use your
-              entire bandwidth.
-
-              The given speed is measured in bytes/second, unless
-              a  suffix  is  appended.  Appending 'k' or 'K' will
-              count the number as kilobytes, 'm' or M'  makes  it
-              megabytes  while  'g'  or  'G'  makes it gigabytes.
-              Examples: 200K, 3m and 1G.
-
-              This option was introduced in curl 7.10.
-
-              If this option is used several times, the last  one
-              will be used.
-
-       -l/--list-only
-              (FTP)  When  listing  an FTP directory, this switch
-              forces a name-only view.  Especially useful if  you
-              want to machine-parse the contents of an FTP direc-
-              tory since the normal directory view doesn't use  a
-              standard look or format.
-
-              to  NLST;  they  do  not include subdirectories and
-              symbolic links.
-
-              If this option is used twice, the second will again
-              disable list only.
-
-       -L/--location
-              (HTTP/HTTPS)   If   the  server  reports  that  the
-              requested page has a different location  (indicated
-              with  the header line Location:) this flag will let
-              curl attempt to reattempt the get on the new place.
-              If  used  together  with -i or -I, headers from all
-              requested pages will be shown. If authentication is
-              used,  curl  will  only send its credentials to the
-              initial host, so if a redirect takes curl to a dif-
-              ferent  host, it won't intercept the user+password.
-              See also --location-trusted on how to change  this.
-
-              If this option is used twice, the second will again
-              disable location following.
-
-       --location-trusted
-              (HTTP/HTTPS) Like --location, but will allow  send-
-              ing  the name + password to all hosts that the site
-              may redirect to. This may or may  not  introduce  a
-              security breach if the site redirects you do a site
-              to  which  you'll  send  your  authentication  info
-              (which  is  plaintext  in  the  case  of HTTP Basic
-              authentication).
-
-              If this option is used twice, the second will again
-              disable location following.
-
-       --max-filesize <bytes>
-              Specify  the  maximum  size (in bytes) of a file to
-              download. If the file requested is larger than this
-              value,  the  transfer  will not start and curl will
-              return with exit code 63.
-
-              NOTE: The file size is not always  known  prior  to
-              download,  and  for  such  files this option has no
-              effect even if the  file  transfer  ends  up  being
-              larger  than  this  given limit. This concerns both
-              FTP and HTTP transfers.
-
-       -m/--max-time <seconds>
-              Maximum time in seconds that you  allow  the  whole
-              operation  to  take.  This is useful for preventing
-              your batch jobs from hanging for hours due to  slow
-              networks  or  links  going down.  This doesn't work
-              fully in win32 systems.  See  also  the  --connect-
-              timeout option.
-              will be used.
-
-       -M/--manual
-              Manual. Display the huge help text.
-
-       -n/--netrc
-              Makes curl scan the .netrc file in the user's  home
-              directory for login name and password. This is typ-
-              ically used for ftp on unix.  If  used  with  http,
-              curl  will enable user authentication. See netrc(4)
-              or ftp(1) for details on the file format. Curl will
-              not  complain if that file hasn't the right permis-
-              sions (it should not be world nor group  readable).
-              The environment variable "HOME" is used to find the
-              home directory.
-
-              A quick and very simple example of how to  setup  a
-              .netrc   to  allow  curl  to  ftp  to  the  machine
-              host.domain.com with user name 'myself'  and  pass-
-              word 'secret' should look similar to:
-
-              machine   host.domain.com   login  myself  password
-              secret
-
-              If this option is used twice, the second will again
-              disable netrc usage.
-
-       --negotiate
-              (HTTP)  Enables  GSS-Negotiate  authentication. The
-              GSS-Negotiate method was designed by Microsoft  and
-              is  used  in their web aplications. It is primarily
-              meant as a support for Kerberos5 authentication but
-              may  be also used along with another authentication
-              methods. For more information see IETF draft draft-
-              brezak-spnego-http-04.txt. (Added in 7.10.6)
-
-              NOTE  that  this  option requiures that the library
-              was built with GSSAPI support.  This  is  not  very
-              common.  Use  curl --version to see if your version
-              supports GSS-Negotiate.
-
-              If this option is used several times, the following
-              occurrences make no difference.
-
-       -N/--no-buffer
-              Disables  the  buffering  of  the output stream. In
-              normal work situations, curl will  use  a  standard
-              buffered  output  stream  that will have the effect
-              that it will output the data in chunks, not  neces-
-              sarily  exactly  when the data arrives.  Using this
-              option will disable that buffering.
-
-
-       --ntlm (HTTP)   Enables   NTLM  authentication.  The  NTLM
-              authentication method was designed by Microsoft and
-              is  used  by  IIS  web servers. It is a proprietary
-              protocol, reversed engineered by clever people  and
-              implemented  in  curl  based on their efforts. This
-              kind of behavior should not be endorsed, you should
-              encourage  everyone  who  uses  NTLM to switch to a
-              public   and   documented   authentication   method
-              instead. Such as Digest. (Added in 7.10.6)
-
-              NOTE  that  this  option requiures that the library
-              was built with SSL support. Use curl  --version  to
-              see if your version supports NTLM.
-
-              If this option is used several times, the following
-              occurrences make no difference.
-
-       -o/--output <file>
-              Write output to <file> instead of  stdout.  If  you
-              are using {} or [] to fetch multiple documents, you
-              can use '#' followed by  a  number  in  the  <file>
-              specifier.  That variable will be replaced with the
-              current string for the URL being fetched. Like in:
-
-                curl http://{one,two}.site.com -o "file_#1.txt"
-
-              or use several variables like:
-
-                curl http://{site,host}.host[1-5].com -o "#1_#2"
-
-              You may use this option as many times as  you  have
-              number of URLs.
-
-              See  also  the  --create-dirs  option to create the
-              local directories dynamically.
-
-       -O/--remote-name
-              Write output to a local file named like the  remote
-              file we get. (Only the file part of the remote file
-              is used, the path is cut off.)
-
-              You may use this option as many times as  you  have
-              number of URLs.
-
-       -p/--proxytunnel
-              When  an HTTP proxy is used, this option will cause
-              non-HTTP protocols to attempt to tunnel through the
-              proxy  instead  of  merely using it to do HTTP-like
-              operations. The tunnel approach is  made  with  the
-              HTTP  proxy  CONNECT  request and requires that the
-              proxy allows direct connect to the remote port num-
-              disable proxy tunnel.
-
-       -P/--ftpport <address>
-              (FTP) Reverses the  initiator/listener  roles  when
-              connecting with ftp. This switch makes Curl use the
-              PORT command instead of  PASV.  In  practice,  PORT
-              tells  the server to connect to the client's speci-
-              fied address and port, while PASV asks  the  server
-              for an ip address and port to connect to. <address>
-              should be one of:
-
-              interface   i.e "eth0" to specify which interface's
-                          IP address you want to use  (Unix only)
-
-              IP address  i.e "192.168.10.1" to specify exact  IP
-                          number
-
-              host name   i.e "my.host.domain" to specify machine
-
-              -           (any single-letter string) to  make  it
-                          pick the machine's default
-
-       If this option is used several times, the last one will be
-       used.
-
-       -q     If used as the first parameter on the command line,
-              the $HOME/.curlrc file will not be read and used as
-              a config file.
-
-       -Q/--quote <comand>
-              (FTP) Send an arbitrary command to the  remote  FTP
-              server,  by  using the QUOTE command of the server.
-              Not all servers support this command, and  the  set
-              of  QUOTE  commands are server specific! Quote com-
-              mands are sent BEFORE the transfer is taking place.
-              To  make  commands  take  place  after a successful
-              transfer, prefix them with  a  dash  '-'.  You  may
-              specify any amount of commands to be run before and
-              after the transfer. If the server  returns  failure
-              for  one of the commands, the entire operation will
-              be aborted.
-
-              This option can be used multiple times.
-
-       --random-file <file>
-              (HTTPS) Specify the path name  to  file  containing
-              what will be considered as random data. The data is
-              used to seed the random engine for SSL connections.
-              See also the --edg-file option.
-
-       -r/--range <range>
-              (HTTP/FTP)  Retrieve  a  byte  range (i.e a partial
-
-              0-499     specifies the first 500 bytes
-
-              500-999   specifies the second 500 bytes
-
-              -500      specifies the last 500 bytes
-
-              9500      specifies  the bytes from offset 9500 and
-                        forward
-
-              0-0,-1    specifies  the  first   and   last   byte
-                        only(*)(H)
-
-              500-700,600-799
-                        specifies 300 bytes from offset 500(H)
-
-              100-199,500-599
-                        specifies    two   separate   100   bytes
-                        ranges(*)(H)
-
-       (*) = NOTE that this will cause the server to reply with a
-       multipart response!
-
-       You should also be aware that many HTTP/1.1 servers do not
-       have this feature enabled, so that when you attempt to get
-       a range, you'll instead get the whole document.
-
-       FTP range downloads only support the simple syntax 'start-
-       stop' (optionally with one of  the  numbers  omitted).  It
-       depends on the non-RFC command SIZE.
-
-       If this option is used several times, the last one will be
-       used.
-
-       -R/--remote-time
-              When used, this will make libcurl attempt to figure
-              out  the  timestamp of the remote file, and if that
-              is available make the  local  file  get  that  same
-              timestamp.
-
-              If  this option is used twice, the second time dis-
-              ables this again.
-
-       -s/--silent
-              Silent mode. Don't show  progress  meter  or  error
-              messages.  Makes Curl mute.
-
-              If this option is used twice, the second will again
-              disable mute.
-
-       -S/--show-error
-              When used with -s it makes curl show error  message
-              disable show error.
-
-       --stderr <file>
-              Redirect all writes to stderr to the specified file
-              instead.  If  the  file  name is a plain '-', it is
-              instead written to stdout. This option has no point
-              when  you're  using a shell with decent redirecting
-              capabilities.
-
-              If this option is used several times, the last  one
-              will be used.
-
-       -t/--telnet-option <OPT=val>
-              Pass  options  to  the  telnet  protocol. Supported
-              options are:
-
-              TTYPE=<term> Sets the terminal type.
-
-              XDISPLOC=<X display> Sets the X display location.
-
-              NEW_ENV=<var,val> Sets an environment variable.
-
-       -T/--upload-file <file>
-              This transfers the  specified  local  file  to  the
-              remote  URL. If there is no file part in the speci-
-              fied URL, Curl will append  the  local  file  name.
-              NOTE  that  you  must  use a trailing / on the last
-              directory to really prove to Curl that there is  no
-              file  name or curl will think that your last direc-
-              tory name is the remote file name to use. That will
-              most  likely cause the upload operation to fail. If
-              this is used on a http(s) server, the  PUT  command
-              will be used.
-
-              Use  the file name "-" (a single dash) to use stdin
-              instead of a given file.
-
-              Before 7.10.8, when this option  was  used  several
-              times, the last one was used.
-
-              In  curl  7.10.8  and later, you can specify one -T
-              for each URL on the command line.  Each  -T  +  URL
-              pair  specifies  what  to upload and to where. curl
-              also supports "globbing" of the -T argument,  mean-
-              ing  that you can upload multiple files to a single
-              URL by using the same URL globbing style  supported
-              in the URL, like this:
-
-              curl    -T    "{file1,file2}"    http://www.upload-
-              tothissite.com
-
-              or even
-              nia.com/upload/
-
-       --trace <file>
-              Enables  a full trace dump of all incoming and out-
-              going data, including descriptive  information,  to
-              the  given output file. Use "-" as filename to have
-              the output sent to stdout.
-
-              If this option is used several times, the last  one
-              will be used. (Added in 7.9.7)
-
-       --trace-ascii <file>
-              Enables  a full trace dump of all incoming and out-
-              going data, including descriptive  information,  to
-              the  given output file. Use "-" as filename to have
-              the output sent to stdout.
-
-              This is very similar to --trace, but leaves out the
-              hex part and only shows the ASCII part of the dump.
-              It makes smaller output that  might  be  easier  to
-              read for untrained humans.
-
-              If  this option is used several times, the last one
-              will be used. (Added in 7.9.7)
-
-       -u/--user <user:password>
-              Specify user and password  to  use  when  fetching.
-              Read the MANUAL for detailed examples of how to use
-              this. If no password is specified,  curl  will  ask
-              for it interactively.
-
-              You  can  also  use  the  --digest option to enable
-              Digest authentication when communicating with  HTTP
-              1.1 servers.
-
-              If  this option is used several times, the last one
-              will be used.
-
-       -U/--proxy-user <user:password>
-              Specify user and password to use for Proxy  authen-
-              tication.  If  no  password is specified, curl will
-              ask for it interactively.
-
-              If this option is used several times, the last  one
-              will be used.
-
-       --url <URL>
-              Specify a URL to fetch. This option is mostly handy
-              when you want to specify URL(s) in a config file.
-
-              This option may be used any  number  of  times.  To
-              control  where  this  URL is written, use the -o or
-              Makes the fetching more  verbose/talkative.  Mostly
-              usable for debugging. Lines starting with '>' means
-              data sent by curl, '<' means data received by  curl
-              that  is  hidden in normal cases and lines starting
-              with '*' means additional info provided by curl.
-
-              Note that if you want to see HTTP  headers  in  the
-              output, -i/--include might be option you're looking
-              for.
-
-              If you think this option  still  doesn't  give  you
-              enough  details, consider using --trace or --trace-
-              ascii instead.
-
-              If this option is used twice, the second will again
-              disable verbose.
-
-       -V/--version
-              Displays  information  about  curl  and the libcurl
-              version it uses.
-
-              The first line includes the full version  of  curl,
-              libcurl  and  other 3rd party libraries linked with
-              the executable.
-
-              The second line (starts  with  "Protocols:")  shows
-              all protocols that libcurl reports to support.
-
-              The third line (starts with "Features:") shows spe-
-              cific features libcurl reports to offer.
-
-
-       -w/--write-out <format>
-              Defines what to display after a completed and  suc-
-              cessful  operation. The format is a string that may
-              contain plain text mixed with any number  of  vari-
-              ables.  The string can be specified as "string", to
-              get read from a  particular  file  you  specify  it
-              "@filename"  and  to  tell  curl to read the format
-              from stdin you write "@-".
-
-              The variables present in the output format will  be
-              substituted  by  the value or text that curl thinks
-              fit, as described below. All variables  are  speci-
-              fied like %{variable_name} and to output a normal %
-              you just write them like %%. You can output a  new-
-              line  by  using \n, a carriage return with \r and a
-              tab space with \t.
-
-              NOTE: The %-letter  is  a  special  letter  in  the
-              win32-environment,  where all occurrences of % must
-              be doubled when using this option.
-
-              url_effective  The URL that was fetched last.  This
-                             is  mostly meaningful if you've told
-                             curl to follow location: headers.
-
-              http_code      The numerical code that was found in
-                             the last retrieved HTTP(S) page.
-
-              time_total     The total time, in seconds, that the
-                             full operation lasted. The time will
-                             be  displayed with millisecond reso-
-                             lution.
-
-              time_namelookup
-                             The time, in seconds, it  took  from
-                             the  start  until the name resolving
-                             was completed.
-
-              time_connect   The time, in seconds, it  took  from
-                             the  start  until the connect to the
-                             remote  host  (or  proxy)  was  com-
-                             pleted.
-
-              time_pretransfer
-                             The  time,  in seconds, it took from
-                             the start until the file transfer is
-                             just  about  to begin. This includes
-                             all pre-transfer commands and  nego-
-                             tiations  that  are  specific to the
-                             particular protocol(s) involved.
-
-              time_starttransfer
-                             The time, in seconds, it  took  from
-                             the  start  until  the first byte is
-                             just about to  be  transfered.  This
-                             includes  time_pretransfer  and also
-                             the time the server needs to  calcu-
-                             late the result.
-
-              size_download  The  total amount of bytes that were
-                             downloaded.
-
-              size_upload    The total amount of bytes that  were
-                             uploaded.
-
-              size_header    The  total  amount  of  bytes of the
-                             downloaded headers.
-
-              size_request   The total amount of bytes that  were
-                             sent in the HTTP request.
-
-              speed_download The average download speed that curl
-                             measured for the complete upload.
-
-              content_type   The Content-Type  of  the  requested
-                             document,  if  there was any. (Added
-                             in 7.9.5)
-
-       If this option is used several times, the last one will be
-       used.
-
-       -x/--proxy <proxyhost[:port]>
-              Use specified HTTP proxy. If the port number is not
-              specified, it is assumed at port 1080.
-
-              This option overrides  existing  environment  vari-
-              ables  that  sets proxy to use. If there's an envi-
-              ronment variable setting a proxy, you can set proxy
-              to "" to override it.
-
-              Note  that all operations that are performed over a
-              HTTP proxy will transparantly be converted to HTTP.
-              It  means that certain protocol specific operations
-              might not be available. This is not the case if you
-              can  tunnel  through  the  proxy,  as done with the
-              -p/--proxytunnel option.
-
-              If this option is used several times, the last  one
-              will be used.
-
-       -X/--request <command>
-              (HTTP)  Specifies a custom request to use when com-
-              municating with the  HTTP  server.   The  specified
-              request  will  be used instead of the standard GET.
-              Read the HTTP 1.1  specification  for  details  and
-              explanations.
-
-              (FTP) Specifies a custom FTP command to use instead
-              of LIST when doing file lists with ftp.
-
-              If this option is used several times, the last  one
-              will be used.
-
-       -y/--speed-time <time>
-              If  a download is slower than speed-limit bytes per
-              second during a  speed-time  period,  the  download
-              gets  aborted.  If  speed-time is used, the default
-              speed-limit will be 1 unless set with -y.
-
-              This option controls transfers and  thus  will  not
-              affect  slow connects etc. If this is a concern for
-              you, try the --connect-timeout option.
-
-              If this option is used several times, the last  one
-              If  a  download is slower than this given speed, in
-              bytes per second, for speed-time  seconds  it  gets
-              aborted. speed-time is set with -Y and is 30 if not
-              set.
-
-              If this option is used several times, the last  one
-              will be used.
-
-       -z/--time-cond <date expression>
-              (HTTP) Request to get a file that has been modified
-              later than the given time and date, or one that has
-              been modified before that time. The date expression
-              can be all sorts of date strings or if  it  doesn't
-              match  any  internal ones, it tries to get the time
-              from a given file name instead! See the GNU date(1)
-              or  curl_getdate(3)  man  pages for date expression
-              details.
-
-              Start the date expression with a dash (-)  to  make
-              it  request  for  a document that is older than the
-              given date/time, default  is  a  document  that  is
-              newer than the specified date/time.
-
-              If  this option is used several times, the last one
-              will be used.
-
-       -Z/--max-redirs <num>
-              Set  maximum   number   of   redirection-followings
-              allowed.  If -L/--location is used, this option can
-              be used to prevent curl from following redirections
-              "in absurdum".
-
-              If  this option is used several times, the last one
-              will be used.
-
-       -0/--http1.0
-              (HTTP) Forces curl to issue its requests using HTTP
-              1.0 instead of using its internally preferred: HTTP
-              1.1.
-
-       -1/--tlsv1
-              (HTTPS) Forces curl to use TSL version 1 when nego-
-              tiating with a remote TLS server.
-
-       -2/--sslv2
-              (HTTPS) Forces curl to use SSL version 2 when nego-
-              tiating with a remote SSL server.
-
-       -3/--sslv3
-              (HTTPS) Forces curl to use SSL version 3 when nego-
-              tiating with a remote SSL server.
-
-              If  libcurl  is  capable of resolving an address to
-              multiple  IP  versions  (which  it  is  if  it   is
-              ipv6-capable), this option tells libcurl to resolve
-              names to IPv4 addresses only. (Added in 7.10.8)
-
-       -6/--ipv6
-              If libcurl is capable of resolving  an  address  to
-              multiple   IP  versions  (which  it  is  if  it  is
-              ipv6-capable), this option tells libcurl to resolve
-              names to IPv6 addresses only. (Added in 7.10.8)
-
-       -#/--progress-bar
-              Make   curl   display  progress  information  as  a
-              progress bar instead of the default statistics.
-
-              If this option is used twice, the second will again
-              disable the progress bar.
-
-
-
-

FILES

-       ~/.curlrc
-              Default config file.
-
-
-
-
-

ENVIRONMENT

-       http_proxy [protocol://]<host>[:port]
-              Sets proxy server to use for HTTP.
-
-       HTTPS_PROXY [protocol://]<host>[:port]
-              Sets proxy server to use for HTTPS.
-
-       FTP_PROXY [protocol://]<host>[:port]
-              Sets proxy server to use for FTP.
-
-       GOPHER_PROXY [protocol://]<host>[:port]
-              Sets proxy server to use for GOPHER.
-
-       ALL_PROXY [protocol://]<host>[:port]
-              Sets  proxy  server  to use if no protocol-specific
-              proxy is set.
-
-       NO_PROXY <comma-separated list of hosts>
-              list of host names that shouldn't  go  through  any
-              proxy. If set to a asterisk
-
-
-
-

EXIT CODES

-       There  exists  a  bunch of different error codes and their
-       corresponding error messages that may  appear  during  bad
-       conditions.  At  the  time of this writing, the exit codes
-       are:
-
-       1      Unsupported protocol. This build  of  curl  has  no
-              support for this protocol.
-
-       3      URL malformat. The syntax was not correct.
-
-       4      URL  user  malformatted.  The  user-part of the URL
-              syntax was not correct.
-
-       5      Couldn't resolve proxy. The given proxy host  could
-              not be resolved.
-
-       6      Couldn't  resolve  host.  The given remote host was
-              not resolved.
-
-       7      Failed to connect to host.
-
-       8      FTP weird server reply. The server sent  data  curl
-              couldn't parse.
-
-       9      FTP access denied. The server denied login.
-
-       10     FTP  user/password  incorrect.  Either  one or both
-              were not accepted by the server.
-
-       11     FTP weird PASS reply. Curl couldn't parse the reply
-              sent to the PASS request.
-
-       12     FTP weird USER reply. Curl couldn't parse the reply
-              sent to the USER request.
-
-       13     FTP weird PASV reply, Curl couldn't parse the reply
-              sent to the PASV request.
-
-       14     FTP  weird  227  format.  Curl  couldn't  parse the
-              227-line the server sent.
-
-       15     FTP can't get host. Couldn't resolve the host IP we
-              got in the 227-line.
-
-       16     FTP  can't  reconnect. Couldn't connect to the host
-              we got in the 227-line.
-
-       17     FTP couldn't set binary. Couldn't  change  transfer
-              method to binary.
-
-       18     Partial  file.  Only  a part of the file was trans-
-              fered.
-
-       19     FTP couldn't download/access the  given  file,  the
-              RETR (or similar) command failed.
-
-       20     FTP  write  error. The transfer was reported bad by
-              the server.
-
-
-       22     HTTP  page not retrieved. The requested url was not
-              found or returned another error with the HTTP error
-              code  being  400  or  above.  This return code only
-              appears if --fail is used.
-
-       23     Write error. Curl couldn't write data  to  a  local
-              filesystem or similar.
-
-       24     Malformed user. User name badly specified.
-
-       25     FTP  couldn't STOR file. The server denied the STOR
-              operation, used for FTP uploading.
-
-       26     Read error. Various reading problems.
-
-       27     Out of memory. A memory allocation request  failed.
-
-       28     Operation  timeout.  The  specified time-out period
-              was reached according to the conditions.
-
-       29     FTP couldn't set  ASCII.  The  server  returned  an
-              unknown reply.
-
-       30     FTP  PORT  failed. The PORT command failed. Not all
-              FTP servers support the PORT command, try  doing  a
-              transfer using PASV instead!
-
-       31     FTP  couldn't  use  REST.  The REST command failed.
-              This command is used for resumed FTP transfers.
-
-       32     FTP couldn't use SIZE. The SIZE command failed. The
-              command  is  an  extension to the original FTP spec
-              RFC 959.
-
-       33     HTTP range error. The range "command" didn't  work.
-
-       34     HTTP  post  error. Internal post-request generation
-              error.
-
-       35     SSL connect error. The SSL handshaking failed.
-
-       36     FTP bad download resume. Couldn't continue an  ear-
-              lier aborted download.
-
-       37     FILE  couldn't  read file. Failed to open the file.
-              Permissions?
-
-       38     LDAP cannot bind. LDAP bind operation failed.
-
-       39     LDAP search failed.
-
-              not found.
-
-       42     Aborted by callback. An application  told  curl  to
-              abort the operation.
-
-       43     Internal  error.  A  function was called with a bad
-              parameter.
-
-       44     Internal error. A function  was  called  in  a  bad
-              order.
-
-       45     Interface  error.  A  specified  outgoing interface
-              could not be used.
-
-       46     Bad password entered. An error  was  signaled  when
-              the password was entered.
-
-       47     Too  many redirects. When following redirects, curl
-              hit the maximum amount.
-
-       48     Unknown TELNET option specified.
-
-       49     Malformed telnet option.
-
-       51     The remote peer's SSL certificate wasn't ok
-
-       52     The server didn't reply  anything,  which  here  is
-              considered an error.
-
-       53     SSL crypto engine not found
-
-       54     Cannot set SSL crypto engine as default
-
-       55     Failed sending network data
-
-       56     Failure in receiving network data
-
-       57     Share is in use (internal error)
-
-       58     Problem with the local certificate
-
-       59     Couldn't use specified SSL cipher
-
-       60     Problem with the CA cert (path? permission?)
-
-       61     Unrecognized transfer encoding
-
-       62     Invalid LDAP URL
-
-       63     Maximum file size exceeded
-
-       XX     There  will  appear more error codes here in future
-
-
-
-

AUTHORS / CONTRIBUTORS

-       Daniel  Stenberg is the main author, but the whole list of
-       contributors is found in the separate THANKS file.
-
-
-
-

WWW

-       http://curl.haxx.se
-
-
-
-

FTP

-       ftp://ftp.sunet.se/pub/www/utilities/curl/
-
-
-
-

SEE ALSO

-       ftp(1), wget(1), snarf(1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Man(1) output converted with -man2html -
- - -- 2.47.3

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 mX{@Uq5~b+_^ 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