;ELC   
;;; compiled by amu@mit.edu on Sat Sep 13 16:20:01 1997
;;; from file /afs/sipb.mit.edu/contrib/emacs/packages/gnus-5.4.67/lisp/gnus-util.el
;;; emacs version 19.30.1.
;;; bytecomp version FSF 2.10
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`gnus-util.el' was compiled for Emacs 19.29 or later"))


(byte-code "ÀÁ!ˆÀÂ!ˆÀÃ!ˆÀÄ!ˆÅÆÇ\"‡" [require custom nnheader timezone message autoload nnmail-date-to-time "nnmail"] 3)
#@50 Return non-nil if VARIABLE is bound and non-nil.
(defalias 'gnus-boundp #[(variable) "À	!… 	J‡" [boundp variable] 2 (#$ . 616)])
#@72 Pop to BUFFER, evaluate FORMS, and then return to the original window.
(defalias 'gnus-eval-in-buffer-window '(macro . #[(buffer &rest forms) "ÀÁ!ÀÂ!ÀÃ!ÇÈB\f	DÊ\fËBBDEÌÍÎÍÏDÐÑDDEÒ\fDFBBÏDEE+‡" [make-symbol "GnusStartBufferWindow" "w" "buf" buf w tempvar let* ((selected-window)) buffer get-buffer-window ((quote visible)) unwind-protect progn if select-window set-buffer window-buffer pop-to-buffer forms] 11 (#$ . 752)]))
(byte-code "ÀÁÂÃ#ˆÀÁÄÅ#‡" [put gnus-eval-in-buffer-window lisp-indent-function 1 edebug-form-spec (form body)] 4)
#@62 Set hash value.  Arguments are STRING, VALUE, and HASHTABLE.
(defalias 'gnus-intern-safe '(macro . #[(string hashtable) "ÀÁÂ\fEDCÅBB‡" [let symbol intern string hashtable ((or (boundp symbol) (set symbol nil)) symbol)] 5 (#$ . 1310)]))
(defalias 'gnus-truncate-string #[(str width) "Á\nO‡" [str 0 width] 3])
(defalias 'gnus-limit-string #[(str width) "G	Vƒ\f Â	O‡‡" [str width 0] 3])
(put (quote gnus-limit-string) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@40 Return non-nil if FORM is funcallable.
(defalias 'gnus-functionp #[(form) "9ƒ Á!† <ƒ @Â=† Ã!‡" [form fboundp lambda compiled-function-p] 2 (#$ . 1795)])
(put (quote gnus-functionp) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'gnus-goto-char #[(point) "… b‡" [point] 1])
(put (quote gnus-goto-char) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'gnus-buffer-exists-p '(macro . #[(buffer) "ÀÁ	DCÂBB‡" [let buffer ((when buffer (funcall (if (stringp buffer) (quote get-buffer) (quote buffer-name)) buffer)))] 3]))
(defalias 'gnus-kill-buffer '(macro . #[(buffer) "ÀÁ\nDCÃBB‡" [let buf buffer ((when (gnus-buffer-exists-p buf) (kill-buffer buf)))] 3]))
(byte-code "ÀÁ!ƒ ÂÁMˆ‚ ÂÃMˆÀÄ!ƒ ÅÄMˆ‚\" ÅÆMˆÀ‡" [fboundp point-at-bol gnus-point-at-bol #[nil "`Áyˆ`bˆ)‡" [p 0] 2 "Return point at the beginning of the line."] point-at-eol gnus-point-at-eol #[nil "`Áˆ`bˆ)‡" [p nil] 2 "Return point at the end of the line."]] 2)
#@72 Delete by side effect the first occurrence of ELT as a member of LIST.
(defalias 'gnus-delete-first #[(elt list) "@	šƒ\n A‡Aƒ  A@	š„  A‰‚ Aƒ+ ‰AA¡ˆ\n)‡" [list elt total] 3 (#$ . 2780)])
(defalias 'gnus-delete-line '(macro . #[(&optional n) "ÀÁÂÃ\f†	 ÅDÆBBE‡" [delete-region (progn (beginning-of-line) (point)) progn forward-line n 1 ((point))] 5]))
#@51 Return a form that can be `eval'ed based on FUNC.
(defalias 'gnus-byte-code #[(func) "KÂ	!ƒ Ã	Ä\"‰Æ ˆ)‚ Ç	AAB)‡" [func fval compiled-function-p append nil flist byte-code progn] 4 (#$ . 3146)])
(defalias 'gnus-extract-address-components #[(from) "À‰ÃÄ\"ƒ Æ”Æ•O	ƒ: ÃÇÈ	!ÉQ\"ƒ: Æ‰”O‰ƒ: ÃÊ\n\"ƒ: \nËÆ•SO\n„n ÃÌ\"ƒR Æ”TÆ•SO‰„n ÃÍ\"ƒ_ 	‰„n ÃÎ\"ƒn Æ”TÆ•O\n†s 	†x *D‡" [nil address name string-match "\\b[^@ 	<>]+[!@][^@ 	<>]+\\b" from 0 "[ 	]*<" regexp-quote ">" "\".*\"" 1 "(.+)" "()" "(.*"] 4])
#@58 Return the value of the header FIELD of current article.
(defalias 'gnus-fetch-field #[(field) "ŠŒÀ‰Ã ˆÄ!,‡" [t inhibit-point-motion-hooks case-fold-search nnheader-narrow-to-headers message-fetch-field field] 2 (#$ . 3669)])
(defalias 'gnus-goto-colon #[nil "ÀyˆÁÂÃ Ä#‡" [0 search-forward ":" gnus-point-at-eol t] 4])
#@64 Delete all text in the current buffer with text property PROP.
(defalias 'gnus-remove-text-with-property #[(prop) "Šebˆm?…\" À`	\"ƒ ÂÃ!ˆ‚	 Ä`	Åd$bˆ‚ )‡" [get-text-property prop delete-char 1 next-single-property-change nil] 5 (#$ . 3997)])
#@55 Make hierarchical directory name from NEWSGROUP name.
(defalias 'gnus-newsgroup-directory-form #[(newsgroup) "À	!	GÂÅÆ	\"‰ƒ 	ÇIˆ‚ È\fWƒ6 	HÉUƒ/ 	ÇIˆT‰‚ 	+‡" [gnus-newsgroup-savable-name newsgroup nil idx len string-match ":" 47 0 46] 4 (#$ . 4245)])
(defalias 'gnus-newsgroup-savable-name #[(group) "À	ÂÃ#‡" [nnheader-replace-chars-in-string group 47 46] 4])
(defalias 'gnus-string> #[(s1 s2) "	™†	 	˜?‡" [s1 s2] 2])
(defalias 'gnus-days-between #[(date1 date2) "À	!À\n!Z‡" [gnus-day-number date1 date2] 3])
(defalias 'gnus-day-number #[(date) "ÀÁÂ!\"Å\fA@Æ\f8\f@#)‡" [mapcar #[(s) "… Á!‡" [s string-to-int] 2] timezone-parse-date date dat timezone-absolute-from-gregorian 2] 4])
#@29 Convert TIME to day number.
(defalias 'gnus-time-to-day #[(time) "À	!ÃÄ\n8Å\n8Æ\n8#)‡" [decode-time time tim timezone-absolute-from-gregorian 4 3 5] 5 (#$ . 4952)])
#@32 Convert DATE to internal time.
(defalias 'gnus-encode-date #[(date) "À	!ÃÄ\n\"ÃÅÆ\nÇH!\"ÉAA@A@@	AA@	A@	@ÊË	8!Ì_&+‡" [timezone-parse-date date parse mapcar #[(d) "… Á!‡" [d string-to-int] 2] string-to-int timezone-parse-time 3 time encode-time timezone-zone-to-minute 4 60] 10 (#$ . 5124)])
#@30 Subtract two internal times.
(defalias 'gnus-time-minus #[(t1 t2) "A@	A@W@	@Z\nƒ Ã‚ ÄZ\nƒ Å‚  ÄA@\\	A@Z)D‡" [t1 t2 borrow 1 0 65536] 3 (#$ . 5434)])
#@43 Say whether time T1 is less than time T2.
(defalias 'gnus-time-less #[(t1 t2) "@	@W† @	@U… A@	A@W‡" [t1 t2] 2 (#$ . 5596)])
(defalias 'gnus-file-newer-than #[(file date) "ÀÁ\n!8‰@\f@V† @\f@U… A@\fA@V)‡" [5 file-attributes file fdate date] 4])
#@46 Set the keys in PLIST in the current keymap.
(defalias 'gnus-local-set-keys '(macro . #[(&rest plist) "ÀÁÂDE‡" [gnus-define-keys-1 (current-local-map) quote plist] 4 (#$ . 5855)]))
#@37 Define all keys in PLIST in KEYMAP.
(defalias 'gnus-define-keys '(macro . #[(keymap &rest plist) "ÀÁ\nDÁDE‡" [gnus-define-keys-1 quote keymap plist] 4 (#$ . 6043)]))
#@78 Define all keys in PLIST in KEYMAP without overwriting previous definitions.
(defalias 'gnus-define-keys-safe '(macro . #[(keymap &rest plist) "ÀÁ\nDÁDÄBBB‡" [gnus-define-keys-1 quote keymap plist (t)] 4 (#$ . 6216)]))
(byte-code "ÀÁÂÃ#ˆÀÄÂÃ#ˆÀÅÂÃ#‡" [put gnus-define-keys lisp-indent-function 1 gnus-define-keys-safe gnus-local-set-keys] 4)
#@37 Define all keys in PLIST in KEYMAP.
(defalias 'gnus-define-keymap '(macro . #[(keymap &rest plist) "À	ÂDE‡" [gnus-define-keys-1 keymap quote plist] 4 (#$ . 6565)]))
(put (quote gnus-define-keymap) (quote lisp-indent-function) 1)
(defalias 'gnus-define-keys-1 #[(keymap plist &optional safe) "„ ÁÂ!ˆ9ƒ J‚9 Ã!„9 <ƒ9 @ÄLˆÅ@!ˆÆAA@JA@@#ˆ@JÄ…} ‰A@‰9ƒT J	ƒc Ê\"Ë=ƒs Æ‰A@#ˆ‚< ‰Aˆ‚< )‡" [keymap error "Can't set keys in a null keymap" keymapp nil define-prefix-command define-key key plist safe lookup-key undefined] 5])
(defalias 'gnus-completing-read #[(default prompt &rest args) "ƒ\f 	ÂÃR‚ 	ÄPÅÆ	#‰ƒ$ GÉUƒ( ‚* *‡" [default prompt " (default " ") " " " apply completing-read args answer 0] 5])
(defalias 'gnus-y-or-n-p #[(prompt) "À	!ÂÃ!ˆ‡" [y-or-n-p prompt message ""] 3])
(defalias 'gnus-yes-or-no-p #[(prompt) "À	!ÂÃ!ˆ‡" [yes-or-no-p prompt message ""] 3])
#@53 Return a string like DD-MMM from a big messy string
(defalias 'gnus-dd-mmm #[(messy-date) "ÀÁÂ�‰„ Ä‚$ ÅÆÇÈÉ�ÊËÌH!S8@†\" Î!#)‡" [G77697 (timezone-parse-date messy-date) ((error)) datevec "??-???" format "%2s-%s" nil (byte-code "ÀÁ\nÃH!!‡" [number-to-string string-to-number datevec 2] 4) ((error "??")) capitalize string-to-number 1 timezone-months-assoc "???"] 8 (#$ . 7483)])
#@88 Convert DATE string to Emacs time.
Cache the result as a text property stored in DATE.
(defalias 'gnus-date-get-time '(macro . #[(date) "ÀÁ\nDCÃBB‡" [let d date ((if (equal "" d) (quote (0 0)) (or (get-text-property 0 (quote gnus-time) d) (let ((time (nnmail-date-to-time d))) (put-text-property 0 1 (quote gnus-time) time d) time))))] 3 (#$ . 7871)]))
#@50 Return a string of TIME in YYMMDDTHHMMSS format.
(defalias 'gnus-time-iso8601 #[(time) "ÀÁ\n\"‡" [format-time-string "%Y%m%dT%H%M%S" time] 3 (#$ . 8230)])
(put (quote gnus-time-iso8601) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@51 Convert the date field in HEADER to YYMMDDTHHMMSS
(defalias 'gnus-date-iso8601 #[(header) "ÀÁÂ�‡" [nil (byte-code "ÁH‰Ãšƒ Ä‚' ÅÆÇ\n#†' È\n!	ÊÆËÇ	\n%ˆ	))	ÌÍ	\")‡" [header 3 d "" (0 0) get-text-property 0 gnus-time nnmail-date-to-time time put-text-property 1 format-time-string "%Y%m%dT%H%M%S"] 7) ((error ""))] 3 (#$ . 8481)])
#@28 Quote all "%"'s in STRING.
(defalias 'gnus-mode-string-quote #[(string) "ŠÀ ˆ	cˆebˆÂÃÄÅ#ƒ Ãcˆ‚\n Æ )‡" [gnus-set-work-buffer string search-forward "%" nil t buffer-string] 4 (#$ . 8822)])
(defalias 'gnus-make-hashtable #[(&optional hashsize) "À	ƒ Â	!Ã]‚ ÃÄ\"‡" [make-vector hashsize gnus-create-hash-size 256 0] 3])
(defalias 'gnus-create-hash-size #[(min) "ÀÀ\nWƒ 	‰\\‰‚ 	)‡" [1 i min] 3])
(custom-declare-variable (quote gnus-verbose) 7 "*Integer that says how verbose Gnus should be.\nThe higher the number, the more messages Gnus will flash to say what\nit's doing.  At zero, Gnus will be totally mute; at five, Gnus will\ndisplay most important messages; and at ten, Gnus will keep on\njabbering all the time." :group (quote gnus-start) :type (quote integer))
(defalias 'gnus-message #[(level &rest args) "	Xƒ ÂÃ\f\"‡ÂÅ\f\"‡" [level gnus-verbose apply message args format] 3])
#@65 Beep an error if LEVEL is equal to or less than `gnus-verbose'.
(defalias 'gnus-error #[(level &rest args) "À	!\nXƒ. ÃÄ\"ˆÆ ˆÇÉ	!ƒ- 	À	!ZÊ_‰ËU„- Ì!ˆ)Ç‡" [floor level gnus-verbose apply message args ding nil duration floatp 10 0 sit-for] 3 (#$ . 9719)])
#@45 Return a list of Message-IDs in REFERENCES.
(defalias 'gnus-split-references #[(references) "ÀÁÄÅ#ƒ À”À•‰O\nB‚ \nŸ*‡" [0 nil ids beg string-match "<[^>]+>" references] 4 (#$ . 9985)])
#@82 Return the last Message-ID in REFERENCES.
If N, return the Nth ancestor instead.
(defalias 'gnus-parent-id #[(references &optional n) "…8 ÁÂÅÆ\f#ƒ  Á”Á•‰OB‚\n Ÿ+†* È›ƒ5 A‚$ @)‡" [references 0 nil ids beg string-match "<[^>]+>" n 1] 4 (#$ . 10186)])
#@37 Say whether BUFFER is alive or not.
(defalias 'gnus-buffer-live-p #[(buffer) "… Á!… ÂÁ!!‡" [buffer get-buffer buffer-name] 3 (#$ . 10459)])
(put (quote gnus-buffer-live-p) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@43 Recenter the current buffer horizontally.
(defalias 'gnus-horizontal-recenter #[nil "iÀ Á¥Wƒ ÂÃpÄ\"Å\"‡`ÇÃpÄ\"!Å	Ê bˆm„= `Wƒ= Ëˆ	i]	Ìyˆ‚# bˆ	À Vƒa ÂÃpÄ\"iÀ Í¥Z	À ZÁ\\^\"ˆ‚i ÂÃpÄ\"Å\"ˆ	+‡" [window-width 2 set-window-hscroll get-buffer-window t 0 orig window-end end max window-start nil 1 3] 5 (#$ . 10701)])
#@21 Get the next event.
(defalias 'gnus-read-event-char #[nil "À ‰§…	 		)B‡" [read-event event] 3 (#$ . 11031)])
#@75 Make sortable string by string-lessp from DATE.
Timezone package is used.
(defalias 'gnus-sortable-date #[(date) "ÀÁÂ�‡" [nil (byte-code "Á‰;ƒ' ÂÃ\"„ ÄÃ\"ƒ' Å!‰ƒ' ÆÃGÁ$ˆ†, ÇÁ‰‰‰‰	\n\fÍÎ\"ƒU Ï\fÐÑ\nÒ	Á‚ÍÓ\"ƒn Ï\fÐÑ\nÒ	Ô‚ÍÕ\"ƒ‡ Ð\fÑÖ\nÒ	Á‚Í×\"ƒ  Ð\fÑÖ\nÒ	Ø‚ÍÙ\"ƒ¹ Ò\fÖÑ\nÐ	Á‚ÍÚ\"ƒÒ Ø\fÖÑ\nÐ	Ò‚ÍÛ\"ƒë Ð\fÑÖ\nÒ	Ø‚ÍÜ\"ƒÐ\fÑÖ\nÒ	Á\fƒM\f”\f•O‰\fGÒWƒ Ý\fÞÁOP\f””Ð\\Oàá–\"\"A!)\n”\n•O\n	”	•O	ƒ\\”•O\fƒpã\f\n	%‚wãä‰‰‰Á%.ÒH%&ç!èÃH!‰\féWƒ˜\fê\\‚¨\fëWƒ¦\fì\\‚¨\f\fèÖH!èÑH!\níÐH!	è	ÃH!.è	ÖH!/è	ÑH!0ÒH†ß&&%†üñò\n\f#0/.ó_\\ó_\\\"%ô%!ô&!Z5/5\\/ö/ó\"7.7\\./7ó_Z/ø.Xƒ_.øZ.\nT\nù\f\"\nWƒ”TÖ\núWƒ”Ö\fT\f‚”Ã.Vƒ”.ø\\.\nS\nÖ\nVƒ”SÖVƒŒú\fS\fù\f\"\nã\f\n./0%&.‰ÃHÖHÑHÐHÒHØH0/.ûü./0$+	\n\fûý\f\n	%,‡" [date nil text-properties-at 0 next-property-change copy-sequence set-text-properties "" zone time day month year string-match "\\([^ 	,]+\\),[ 	]+\\([0-9]+\\)[ 	]+\\([^ 	,]+\\)[ 	]+\\([0-9]+:[0-9:]+\\)[ 	]+\\(T[ 	]+\\|\\)\\([0-9]+\\)[ 	]*\\'" 6 3 2 4 "\\([^ 	,]+\\),[ 	]+\\([0-9]+\\)[ 	]+\\([^ 	,]+\\)[ 	]+\\([0-9]+:[0-9:]+\\)[ 	]+\\(T[ 	]+\\|\\)\\([0-9]+\\)[ 	]*\\([-+a-zA-Z0-9]+\\)" 7 "\\([0-9]+\\)[ 	]+\\([^ 	,]+\\)[ 	]+\\([0-9]+\\)[ 	]+\\([0-9]+:[0-9:]+\\)[ 	]*\\'" 1 "\\([0-9]+\\)[ 	]+\\([^ 	,]+\\)[ 	]+\\([0-9]+\\)[ 	]+\\([0-9]+:[0-9:]+\\)[ 	]*\\([-+a-zA-Z0-9]+\\)" 5 "\\([^ 	,]+\\)[ 	]+\\([0-9]+\\)[ 	]+\\([0-9]+:[0-9:]+\\)[ 	]+\\([0-9]+\\)" "\\([^ 	,]+\\)[ 	]+\\([0-9]+\\)[ 	]+\\([0-9]+:[0-9:]+\\)[ 	]+\\([-+a-zA-Z0-9]+\\)[ 	]+\\([0-9]+\\)" "\\([0-9]+\\)[ 	]+\\([^ 	,]+\\)[ 	]+\\([0-9]+\\)[ 	]+\\([0-9]+\\)[ 	]*\\([-+a-zA-Z0-9]+\\)" "\\([0-9]+\\)-\\([A-Za-z]+\\)-\\([0-9]+\\)[ 	]+\\([0-9]+:[0-9]+:[0-9]+\\)\\.[0-9]+" "19" -2 string int-to-string assoc timezone-months-assoc vector "0" timezone local timezone-parse-date string-to-int 50 2000 100 1900 timezone-parse-time hour minute second timezone-time-zone-from-absolute timezone-absolute-from-gregorian 60 timezone-zone-to-minute diff floor hour-fix 24 timezone-last-day-of-month 12 format "%02d:%02d:%02d" "%4d%02d%02d%s"] 10) ((error ""))] 3 (#$ . 11147)])
#@18 Copy FILE to TO.
(defalias 'gnus-copy-file #[(file &optional to) "„	 ÁÂ\"Ä!ƒ Å!Æ!PÈ\"‡" [to read-file-name "Copy file to: " default-directory file-directory-p file-name-as-directory file-name-nondirectory file copy-file] 3 (#$ . 13433) (list (read-file-name "Copy file: " default-directory) (read-file-name "Copy file to: " default-directory))])
#@44 Delete all overlays in the current buffer.
(defalias 'gnus-kill-all-overlays #[nil "?…' Á ÃÅÃ\n@\nA¤\"…& Ç‰A@!ˆ‚ +‡" [gnus-xemacs overlay-lists overlayss nil buffer-read-only delq overlays delete-overlay] 4 (#$ . 13797)])
(byte-code "ÀÁ!„ ÂÁBÀ‡" [boundp gnus-work-buffer " *gnus work*" current-load-list] 2)
#@42 Put point in the empty Gnus work buffer.
(defalias 'gnus-set-work-buffer #[nil "À	!ƒ\f 	qˆÂ ‡Ã	!qˆÄ ˆÅp!‡" [get-buffer gnus-work-buffer erase-buffer get-buffer-create kill-all-local-variables buffer-disable-undo] 2 (#$ . 14127)])
#@44 Find the real name of a foreign newsgroup.
(defalias 'gnus-group-real-name '(macro . #[(group) "ÀÁ\nDCÃBB‡" [let gname group ((if (string-match "^[^:]+:" gname) (substring gname (match-end 0)) gname))] 3 (#$ . 14363)]))
#@67 Return a composite sort condition based on the functions in FUNC.
(defalias 'gnus-make-sort-function #[(funs) "<„ ‡„ ‡Aƒ ÁÂÃÄ!!E‡@‡" [funs lambda (t1 t2) gnus-make-sort-function-1 reverse] 5 (#$ . 14589)])
#@67 Return a composite sort condition based on the functions in FUNC.
(defalias 'gnus-make-sort-function-1 #[(funs) "Aƒ Á@ÂBÃÄ@ÅBDÆA!EE‡@ÇB‡" [funs or (t1 t2) and not (t2 t1) gnus-make-sort-function-1 (t1 t2)] 6 (#$ . 14811)])
#@45 Turn off edit menu in `gnus-TYPE-mode-map'.
(defalias 'gnus-turn-off-edit-menu #[(type) "ÀÁÂÃ\f\"!JÅÆ#‡" [define-key intern format "gnus-%s-mode-map" type [menu-bar edit] undefined] 5 (#$ . 15046)])
#@85 Use `prin1' on FORM in the current buffer.
Bind `print-quoted' to t while printing.
(defalias 'gnus-prin1 #[(form) "ÀÁ‰Åp\"+‡" [t nil print-length print-level print-quoted prin1 form] 3 (#$ . 15251)])
#@51 The same as `prin1', but but `print-quoted' to t.
(defalias 'gnus-prin1-to-string #[(form) "ÀÂ!)‡" [t print-quoted prin1-to-string form] 2 (#$ . 15463)])
#@59 Make DIRECTORY (and all its parents) if it doesn't exist.
(defalias 'gnus-make-directory #[(directory) "ƒ Á!„ ÂÃ\"ˆÃ‡" [directory file-exists-p make-directory t] 3 (#$ . 15625)])
#@46 Write the current buffer's contents to FILE.
(defalias 'gnus-write-buffer #[(file) "ÀÁ\n!!ˆÃed\nÄÅ%‡" [gnus-make-directory file-name-directory file write-region nil quietly] 6 (#$ . 15815)])
(defalias 'gnus-delete-assq '(macro . #[(key list) "ÀÁÂDDCÄÅÆÈBBÉBBEE‡" [let listval eval list setq delq assq key (listval) (listval)] 8]))
(defalias 'gnus-delete-assoc '(macro . #[(key list) "ÀÁ\nDCÃ\nÄÅÇBBÈBBEE‡" [let listval list setq delq assoc key (listval) (listval)] 8]))
#@27 Delete FILE if it exists.
(defalias 'gnus-delete-file #[(file) "À	!…	 Â	!‡" [file-exists-p file delete-file] 2 (#$ . 16297)])
#@43 Return STRING stripped of all whitespace.
(defalias 'gnus-strip-whitespace #[(string) "ÀÁ\n\"ƒ ÃÄÅ‰\n$‚  \n‡" [string-match "[\n	 ]+" string replace-match "" t] 5 (#$ . 16429)])
#@89 The same as `put-text-property', but don't put this prop on any newlines in the region.
(defalias 'gnus-put-text-property-excluding-newlines #[(beg end prop val) "À ÂŽŠŒbˆÄÅÇ#ƒ\" ÈÉ”\n$ˆ`‚\n È`\n$,‡" [match-data match-data ((store-match-data match-data)) beg re-search-forward "[ 	]*\n" end move put-text-property 0 prop val] 5 (#$ . 16616)])
#@70 If t, certain operations will be protected from interruption by C-g.
(defvar gnus-atomic-be-safe t (#$ . 16978))
#@457 Evaluate FORMS atomically, which means to protect the evaluation
from being interrupted by the user.  An error from the forms themselves
will return without finishing the operation.  Since interrupts from
the user are disabled, it is recommended that only the most minimal
operations are performed by FORMS.  If you wish to assign many
complicated values atomically, compute the results into temporary
variables and then do only the assignment atomically.
(defalias 'gnus-atomic-progn '(macro . #[(&rest forms) "ÀÁ\nBB‡" [let ((inhibit-quit gnus-atomic-be-safe)) forms] 3 (#$ . 17098)]))
(put (quote gnus-atomic-progn) (quote lisp-indent-function) 0)
#@456 Evaluate FORMS, but insure that the variables listed in PROTECT
are not changed if anything in FORMS signals an error or otherwise
non-locally exits.  The variables listed in PROTECT are updated atomically.
It is safe to use gnus-atomic-progn-assign with long computations.

Note that if any of the symbols in PROTECT were unbound, they will be
set to nil on a sucessful assignment.  In case of an error or other
non-local exit, it will still be unbound.
(defalias 'gnus-atomic-progn-assign '(macro . #[(protect &rest forms) "ÀÁ\n\"ÀÄ\"ÀÆ\"ÉÊ\"ÉÊ\"\fÍÎ!ÐÊC\"ÐÑÒBEÑBFÐÔÑ\fBE¯.‡" [mapcar #[(x) "ÀÁ\n!ÃP!\nD‡" [make-symbol symbol-name x "-tmp"] 3] protect temp-sym-map #[(x) "A@@D‡" [x] 2] sym-temp-map #[(x) "@ÁÂÃA@DDA@ED‡" [x and boundp quote] 5] temp-sym-let sym-temp-let apply append temp-sym-assign sym-temp-assign make-symbol "result-tmp" result let setq progn forms ((inhibit-quit gnus-atomic-be-safe))] 8 (#$ . 17756)]))
(put (quote gnus-atomic-progn-assign) (quote lisp-indent-function) 1)
#@317 Similar to setq, except that the real symbols are only assigned when
there are no errors.  And when the real symbols are assigned, they are
done so atomically.  If other variables might be changed via side-effect,
see gnus-atomic-progn-assign.  It is safe to use gnus-atomic-setq
with potentially long computations.
(defalias 'gnus-atomic-setq '(macro . #[(&rest pairs) "Á‰ƒ @\nBAA‰„ Ä\nÅBE*‡" [pairs nil syms tpairs gnus-atomic-progn-assign setq] 5 (#$ . 18797)]))
(byte-code "À	BÀ‡" [rmail-default-rmail-file current-load-list] 2)
#@61 Append the current article to an Rmail file named FILENAME.
(defalias 'gnus-output-to-rmail #[(filename &optional ask) "ÀÁ!ˆÂ!‰pÅÆ!ŠÉ!„O Ê!„O ƒ- ÌÍÎQ!ƒK Ï!ŠqˆÑ ˆÒÔ!ˆ*Õ!ˆ)‚O Ö×!ˆqˆØ ˆÙ!ˆÚ ˆÉ!‰„p Üed#ˆ‚± qˆÒÝÞ!…} ÞJ ƒŒ ~ˆdd}ˆÙ!ˆƒ° ebˆ~ˆáâ!ˆ`d}ˆeTbˆãä!ˆå!ˆ**Õ!*‡" [require rmail expand-file-name filename rmail-default-rmail-file get-buffer-create " *Gnus-output*" tmpbuf artbuf get-file-buffer file-exists-p ask gnus-yes-or-no-p "\"" "\" does not exist, create it? " create-file-buffer file-buffer rmail-insert-rmail-file-header nil require-final-newline gnus-write-buffer kill-buffer error "Output file does not exist" erase-buffer insert-buffer-substring gnus-convert-article-to-rmail outbuf append-to-file boundp rmail-current-message msg buffer-read-only search-backward "" rmail-count-new-messages t rmail-show-message] 5 (#$ . 19347)])
#@59 Append the current article to a mail file named FILENAME.
(defalias 'gnus-output-to-mail #[(filename &optional ask) "À	!pÂÃ!ŠÆ	!„D Ç	!„D ƒ% ÉÊ	ËQ!ƒ@ Ì	!ŠqˆÎÐ	!ˆ*Ñ!ˆ)‚D ÒÓ!ˆ\fqˆÔ ˆÕ!ˆebˆÖ×!ƒ] Øyˆ‚d ÙÚ Û±ˆÎÝÞÎß#ƒx àyˆácˆ‚g )Æ	!‰\"„¬ Î#ŠdbˆäuˆÖå!„Ÿ dbˆn„œ ÛcˆÛcˆdbˆæed	#ˆ*‚Å \"qˆÎ#dbˆm„½ ÛcˆÛcˆÕ\f!ˆ)*Ñ\f!*‡" [expand-file-name filename get-buffer-create " *Gnus-output*" tmpbuf artbuf get-file-buffer file-exists-p ask gnus-y-or-n-p "\"" "\" does not exist, create it? " create-file-buffer file-buffer nil require-final-newline gnus-write-buffer kill-buffer error "Output file does not exist" erase-buffer insert-buffer-substring looking-at "From " 1 "From nobody " current-time-string "\n" case-fold-search re-search-forward "^From " t 0 ">" outbuf buffer-read-only -2 "\n\n" append-to-file] 5 (#$ . 20239)])
#@60 Convert article in current buffer to Rmail message format.
(defalias 'gnus-convert-article-to-rmail #[nil "ÀebˆÂcˆÃÄÀÅ#ƒ ÆÇÅ‰#ˆ‚ dbˆÈc)‡" [nil buffer-read-only "\f\n0, unseen,,\n*** EOOH ***\n" search-forward "\n" t replace-match "\n^_" ""] 4 (#$ . 21073)])
(provide (quote gnus-util))
