X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fyenc.el;h=9fdf62d43b3e957c5c56788c7da48bb18ec22b7b;hb=0661509959b5bf873e14519923ed74ade86925ac;hp=37018d2fa196f6da0b3b7152b2eabcb7b16cc3a4;hpb=786d05e27f23ae1e1254d90a50f61487e168c616;p=gnus diff --git a/lisp/yenc.el b/lisp/yenc.el index 37018d2fa..9fdf62d43 100644 --- a/lisp/yenc.el +++ b/lisp/yenc.el @@ -1,16 +1,16 @@ ;;; yenc.el --- elisp native yenc decoder -;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ;; Author: Jesper Harder ;; Keywords: yenc news ;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; 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. +;; the Free Software Foundation, either version 3 of the License, 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 @@ -18,9 +18,7 @@ ;; 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. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -55,6 +53,25 @@ 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213]) +(defun yenc-first-part-p () + "Say whether the buffer contains the first part of a yEnc file." + (save-excursion + (goto-char (point-min)) + (re-search-forward "^=ybegin part=1 " nil t))) + +(defun yenc-last-part-p () + "Say whether the buffer contains the last part of a yEnc file." + (save-excursion + (goto-char (point-min)) + (let (total-size end-size) + (when (re-search-forward "^=ybegin.*size=\\([0-9]+\\)" nil t) + (setq total-size (match-string 1))) + (when (re-search-forward "^=ypart.*end=\\([0-9]+\\)" nil t) + (setq end-size (match-string 1))) + (and total-size + end-size + (string= total-size end-size))))) + ;;;###autoload (defun yenc-decode-region (start end) "Yenc decode region between START and END using an internal decoder." @@ -72,8 +89,9 @@ (when (re-search-forward "^=yend.*$" end t) (setq last (match-beginning 0)) (setq footer-alist (yenc-parse-line (match-string 0))) - (let (default-enable-multibyte-characters) - (setq work-buffer (generate-new-buffer " *yenc-work*"))) + (setq work-buffer (generate-new-buffer " *yenc-work*")) + (unless (featurep 'xemacs) + (with-current-buffer work-buffer (set-buffer-multibyte nil))) (while (< first last) (setq char (char-after first)) (cond ((or (eq char ?\r) @@ -118,5 +136,4 @@ (provide 'yenc) -;;; arch-tag: 74df17e8-6fa8-4071-9f7d-54d548d79d9a ;;; yenc.el ends here