[Mew-dist 06296] sample implementation: mailing list ([un]subscription, etc.) support
sen_ml at example.com
sen_ml at example.com
1998年 9月 5日 (土) 17:50:01 JST
hello-
attached is a sample implementation of minimal 'mailing list support' for
mew. (based on collected info about mailing lists, prepare [un]subscription,
posting messages, etc. [uses completion])
the attachment is a .shar file containing two files:
sen-iml.el -- the 'code'
sen-imldb.el -- the 'db/store' of mailing list info
instructions for use:
1) put sen-iml.el and sen-imldb.el in your load-path (or change your
load-path appropriately)
2) put:
(load "sen-iml")
(sen-iml-load-info-alist)
in your .emacs (start/restart emacs if necessary)
3) start mew
4) do 'M-x sen-iml-compose-message RET'. type TAB to use completion.
explore :-)
5) modify sen-imldb.el as you see fit to add info about more mailing
lists
... (continued in sen-iml.el)
please tell me what you think (about how bad the code is, ideas, etc.)
-sen
p.s. i'm not really partial to any of the names (files, functions,
variables, etc.) -- feel free to suggest any sorts of changes/deletions/etc.
p.p.s. congratulations on the release -- otsukaresama
-------------- next part --------------
#!/bin/sh
# This is a shell archive (produced by GNU sharutils 4.2).
# To extract the files from this archive, save it to some FILE, remove
# everything before the `!/bin/sh' line above, then type `sh FILE'.
#
# Made on 1998-09-05 17:29 JST by <sen at example.com>.
# Source directory was `/home/sen/lib/elisp/sen-iml-0.1'.
#
# Existing files will *not* be overwritten unless `-c' is specified.
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 8176 -rw-rw-r-- sen-iml.el
# 10421 -rw-rw-r-- sen-imldb.el
#
save_IFS="${IFS}"
IFS="${IFS}:"
gettext_dir=FAILED
locale_dir=FAILED
first_param="$1"
for dir in $PATH
do
if test "$gettext_dir" = FAILED && test -f $dir/gettext \
&& ($dir/gettext --version >/dev/null 2>&1)
then
set `$dir/gettext --version 2>&1`
if test "$3" = GNU
then
gettext_dir=$dir
fi
fi
if test "$locale_dir" = FAILED && test -f $dir/shar \
&& ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
then
locale_dir=`$dir/shar --print-text-domain-dir`
fi
done
IFS="$save_IFS"
if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED
then
echo=echo
else
TEXTDOMAINDIR=$locale_dir
export TEXTDOMAINDIR
TEXTDOMAIN=sharutils
export TEXTDOMAIN
echo="$gettext_dir/gettext -s"
fi
touch -am 1231235999 $$.touch >/dev/null 2>&1
if test ! -f 1231235999 && test -f $$.touch; then
shar_touch=touch
else
shar_touch=:
echo
$echo 'WARNING: not restoring timestamps. Consider getting and'
$echo "installing GNU \`touch', distributed in GNU File Utilities..."
echo
fi
rm -f 1231235999 $$.touch
#
if mkdir _sh00502; then
$echo 'x -' 'creating lock directory'
else
$echo 'failed to create lock directory'
exit 1
fi
# ============= sen-iml.el ==============
if test -f 'sen-iml.el' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'sen-iml.el' '(file already exists)'
else
$echo 'x -' extracting 'sen-iml.el' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'sen-iml.el' &&
; sen-iml.el 0.1
;
; (uses sen-imldb.el)
;
; have you ever:
;
; 1) found that you want to resubscribe to all the mailing lists you
; are subscribed to using a different email address?
;
; 2) forgotten how to subscribe/unsubscribe to/from a mailing list?
;
; 3) forgotten where the mailing list archives are for a particular
; mailing lists?
;
; if the answer is yes to any of the above questions, then this package
; may help you.
;
; this code is for facilitating the composition of subscription/
; unsubsription/etc. messages for various mailing lists -- it may also
; eventually support seaching mailing list archives.
;
; note: this is a sample implementation for desired functionality -- it is
; a quick hack by someone who doesn't really know elisp very well
;
; -sln
X
; to use this:
;
; 1) put sen-iml.el and sen-imldb.el in your load-path (or change your
; load-path appropriately)
;
; 2) put:
;
; (load "sen-iml")
; (sen-iml-load-info-alist)
;
; in your .emacs (start/restart emacs if necessary)
;
; 3) start mew
;
; 4) do 'M-x sen-iml-compose-message RET'. type TAB to use completion.
; explore :-)
;
; 5) modify sen-imldb.el as you see fit to add info about more mailing
; lists
;
; 6) if you feel like it, collect info about various mailing lists and
; send that to me so i can consolidate it for everyone to use :-)
; (need to consider adding information about what info you may or
; may not want to share w/ other people...?)
;
; 7) give me feedback?
X
; todo:
;
; 0) get feedback about the ideas and code
;
; 1) restructure the main data structure -- the current design is a hack
; to get stuff up and running
;
; 2) add the ability to search mailing list archives by constructing
; appropriate urls and using 'browse-url' -- is this really a good idea?
; whether it is or not, it's worth trying out...also add the ability
; to browse the list of urls/archives stored w/ each mailing list
;
; 3) try to move the mailing list data out into a format that is usable
; via perl/python/emacs/others -- sort of like what im does...?
;
; 4) look at the edb and forms packages for ideas about creating an
; interface for editting/viewing the mailing list data
;
; 5) implement parsing the 'variables' stored in main data structure and
; filling them in as necessary...
;
; X) read more of the mew source code to figure out how to integrate
; this better
;
; Y) become better at coding and elisp programming :-)
;
; Z) be nicer to people
X
; remember the rule:
;
; (a b) <=> (a . (b))
X
; the name of the 'to' field key in our data structure
(defconst sen-iml-to "To")
; the name of the 'subject' field key in our data structure
(defconst sen-iml-subject "Subject")
; the name of the 'body' field key in our data structure
(defconst sen-iml-body "Body")
X
; sen-iml-info-alist contains info for various mailing lists
; note: keys must(?) be strings (labels identifying the individual
; mailing lists) -- required for 'completing-read'(?)
(defvar sen-iml-info-alist nil)
X
; initialize and return mailing list data structure
(defun sen-iml-load-info-alist ()
X ; this has a side-effect of setting sen-iml-info-alist
X (load "sen-imldb"))
X
; prompt for and return a label which specifies a mailing list
(defun sen-iml-choose-ml ()
X (completing-read "Mailing List Label: "
X sen-iml-info-alist))
X
; is 'thing' an 'action'?
; that is, a cons-cell that has an alist as its cdr...
; for the moment, an action is something that looks like:
;
; ("subscribe" . (
; ("To" . "address at example.com")
; ("Subject" . "subscribe")
; ))
;
; definition of an action is subject to change
(defun sen-iml-actionp (thing)
X (and
X ;; is thing a cons-cell?
X (consp thing)
X ;; is the cdr of thing an alist?
X (sen-alistp (cdr thing))))
X
; this is my alistp -- i don't know if it's correct.
; it's quite likely that a more efficient/elegant thing
; could be written...
(defun sen-alistp (thing)
X (cond
X ;; thing better be a list
X ((listp thing)
X (cond
X ;; base case -- sort of
X ((null (cdr thing))
X (consp (car thing)))
X ;; (car thing) should be a con cell
X ((consp (car thing))
X (sen-alistp (cdr thing)))
X ;; otherwise it's not an alist
X (t nil)))
X ;; 'it' is not a list so it's not an alist
X (t nil)))
X
; return an alist containing possible actions
(defun sen-iml-enumerate-actions (label)
X (let ((iml-alist (cdr (assoc label sen-iml-info-alist)))
X (current-cons nil)
X (action-alist nil))
X ;; iterate over iml-alist (the mailing list's info alist)
X (while (not (null iml-alist))
X (setq current-cons (car iml-alist))
X ;; is current-cons an action?
X (if (sen-iml-actionp current-cons)
X ;; current-cons is an action so let's keep its key
X (setq action-alist
X (cons
X ;; cons cell -- e.g. ("subscribe" . "")
X (cons (car current-cons) "")
X action-alist)))
X (setq iml-alist (cdr iml-alist)))
X ;; this is our final product -- this is supposed
X ;; to be a return statement-like thing...
X (symbol-value 'action-alist)))
X
; prompt for the "action" based on the specified mailing list
(defun sen-iml-choose-action (label)
X (completing-read "Mailing List Action: "
X (sen-iml-enumerate-actions label)))
X
; use this to retrieve To:, Subject:, and/or Body:
; ugly -- i suck at elisp :-(
(defun sen-iml-get-part (label action part)
X (let (label-cons label-alist action-cons action-alist part-cons)
X (and
X ;; do we have info about the mailing list assoc w/ 'label'?
X (setq label-cons (assoc label sen-iml-info-alist))
X (setq label-alist (cdr label-cons))
X ;; do we have info about this action? (subscribe, confirm, etc.)
X (setq action-cons (assoc action label-alist))
X (setq action-alist (cdr action-cons))
X ;; is there information about 'To' for this action?
X (setq part-cons (assoc part action-alist))
X ;; return the value
X (cdr part-cons)
X )))
X
; function which sets up a message for the user to manipulate
; this is heavily based on code from mew-summary.el
(defun sen-mew-summary-send (&optional to subject body)
X "Write a message. A new draft is prepared in Draft mode."
X (interactive)
X (let ((file (mew-folder-new-message mew-draft-folder))
X (find-file-hooks nil)
X (inhibit-quit t))
X (mew-current-set 'window (current-window-configuration))
X (mew-window-configure (current-buffer) 'draft)
X (mew-summary-prepare-draft
X (switch-to-buffer (find-file-noselect file))
X (mew-draft-rename file)
X
X ; my changes start here
X ;(mew-draft-header subject nil to)
X ; add various header lines
X (mew-header-insert-here mew-from: mew-from)
X (mew-header-insert-here mew-to: to)
X (mew-header-insert-here mew-subj: subject)
X (mew-header-insert-here mew-fcc: mew-fcc)
X (mew-header-insert-here mew-reply-to: mew-reply-to)
X (mew-header-insert-here mew-x-mailer: mew-x-mailer)
X (mew-header-insert-here mew-mv: mew-mv:-num)
X ; when the header is ready...does highlighting, adds ---, etc.
X (mew-header-prepared)
X ; put the necessary body in (how do you do this properly?)
X ; isn't there something like mew-body-insert (cf. mew-header-insert)?
X (if (stringp body)
X (progn
X ; should really be beginning of the message body
X (goto-char (point-max))
X (insert-before-markers body)))
X
X (goto-char (point-min))
X
X ; the original code continues here
X (mew-draft-mode))))
X
;; allow the user to specify a mailing list and associated action which are
;; in turn used to compose and appropriate message skeleton
;; this function is the whole point of all of this code
(defun sen-iml-compose-message ()
X (interactive)
X (let (label action)
X ;; which mailing list?
X (setq label (sen-iml-choose-ml))
X ;; which action? (e.g. subscribe, unsubscribe, post, etc.)
X (setq action (sen-iml-choose-action label))
X ;; prepare an appropriate message
X (sen-mew-summary-send
X (sen-iml-get-part label action sen-iml-to)
X (sen-iml-get-part label action sen-iml-subject)
X (sen-iml-get-part label action sen-iml-body))))
SHAR_EOF
$shar_touch -am 090517291998 'sen-iml.el' &&
chmod 0664 'sen-iml.el' ||
$echo 'restore of' 'sen-iml.el' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'sen-iml.el:' 'MD5 check failed'
c3a5dc31e2e6856d4fd2d79d515cbf7b sen-iml.el
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'sen-iml.el'`"
test 8176 -eq "$shar_count" ||
$echo 'sen-iml.el:' 'original size' '8176,' 'current size' "$shar_count!"
fi
fi
# ============= sen-imldb.el ==============
if test -f 'sen-imldb.el' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'sen-imldb.el' '(file already exists)'
else
$echo 'x -' extracting 'sen-imldb.el' '(binary)'
sed 's/^X//' << 'SHAR_EOF' | uudecode &&
begin 600 sen-imldb.el
M.R!S96XM:6UL9&(N96P@,"XQ"CL*.R`H=7-E9"!B>2!S96XM:6UL+F5L*0H[
M"CL@)W-T;W)E+V1B)R!O9B!M86EL:6YG(&QI<W1S"CL*.R!S;W)R>2!A8F]U
M="!T:&4@;&%C:R!O9B!D;V-U;65N=&%T:6]N"CL@:2!H;W!E('1H:7, at example.com&%T
M82!S=')U8W1U<F4@:7,@<')E='1Y('-E;&8M97AP;&%N871O<GD*.R`M<VQN
M"@HH<V5T<2!S96XM:6UL+6EN9F\M86QI<W0*("`G*`H*("`@(#L@;65W+61I
M<W0*("`@("@B;65W+61I<W0B("X@"B`@("`@*"@B9FQA=F]R(B`N(")F;6PB
M*0H@("`@("`H(G-U8G-C<FEB92(@+B`H"@D)("`@("`@*")4;R(@+B`B;65W
M+61I<W0M8W1L0&UE=RYO<F<B*0H)"2`@("`@("@B0F]D>2(@+B`B<W5B<V-R
M:6)E("1[;F%M97TB*0H)"2`@("`@("DI"B`@("`@("@B=6YS=6)S8W)I8F4B
M("X@*`H)"0DH(E1O(B`N(")M97<M9&ES="UC=&Q`;65W+F]R9R(I"@D)"2 at example.com
M0F]D>2(@+B`B(R!B>64B*0H)"0DI*0H@("`@("`H(F-O;F9I<FTB("X@*`H)
M"2`@("`H(E1O(B`N(")M97<M9&ES="UC=&Q`;65W+F]R9R(I"@D)("`@("@B
M0F]D>2(@+B`B8V]N9FER;2`D>W!A<W-W;W)D?2`D>VYA;65](BD*"0D@("`@
M*2D*("`@("`@*")P;W-T(B`N("@*"0D@*")4;R(@+B`B;65W+61I<W1`;65W
M+F]R9R(I"@D)("DI"B`@("`@("@B=7)L<R(@+B`H(FAT='`Z+R]W=W<N;65W
M+F]R9R]&05$O1D%1,#8O:6YD97 at example.com:BYH=&UL(BDI"B`@("`@("@B87)C:&EV
M97,B("X@*")H='1P.B\O=W=W+FUE=RYO<F<O5VEN,S(O<V5A<F-H+6HN:'1M
M;"(I*0H@("`@("`I*0H*("`@(#L@<W)P+61E=@H@("`@*")S<G`M9&5V(B`N
M(`H@("`@("@H(F9L879O<B(@+B`B;6%J;W)D;VUO(BD*("`@("`@*")S=6)S
M8W)I8F4B("X@*`H)"2`@("`@("@B5&\B("X@(FUA:F]R9&]M;T!Q=6%S:6UO
M9&\N<W1A;F9O<F0N961U(BD*"0D@("`@("`H(D)O9'DB("X@(G-U8G-C<FEB
M92!S<G`M9&5V(BD*"0D@("`@("`I*0H@("`@("`H(G5N<W5B<V-R:6)E(B`N
M("@*"0D)*")4;R(@+B`B;6%J;W)D;VUO0'%U87-I;6]D;RYS=&%N9F]R9"YE
M9'4B*0H)"0DH(D)O9'DB("X@(G5N<W5B<V-R:6)E('-R<"UD978@)'MA9&1R
M97-S?2(I"@D)"2DI"B`@("`@("@B8V]N9FER;2(@+B!N:6PI"B`@("`@("@B
M<&]S="(@+B`H"@D)("@B5&\B("X@(G-R<"UD979`<75A<VEM;V1O+G-T86YF
M;W)D+F5D=2(I"@D)("DI"B`@("`@("@B=7)L<R(@+B`H(FAT='`Z+R]S<G`N
M<W1A;F9O<F0N961U+W-R<"\B*2D*("`@("`@*")A<F-H:79E<R(@+B`H(FAT
M='`Z+R]Q=6%S:6UO9&\N<W1A;F9O<F0N961U+V%R8VAI=F4O<W)P+61E=B\B
M*2D*("`@("`@*2D*"B`@("`[('%M86EL"B`@("`H(F1J8BUQ;6%I;"(@+B`*
M("`@("`H*")F;&%V;W(B("X@(F5Z;6QM(BD*("`@("`@*")S=6)S8W)I8F4B
M("X@*`H)"2`@("`@("@B5&\B("X@(F1J8BUQ;6%I;"US=6)S8W)I8F5`:V]O
M8F5R82YM871H+G5I8RYE9'4B*0H)"2`@("`@("DI"B`@("`@("@B=6YS=6)S
M8W)I8F4B("X@*`H)"0DH(E1O(B`N(")D:F(M<6UA:6PM=6YS=6)S8W)I8F5`
M:V]O8F5R82YM871H+G5I8RYE9'4B*0H)"0DI*0H@("`@("`H(F-O;F9I<FTB
M("X@*`H)"2`@("`H(E1O(B`N("(D>V-O;F9I<FU?861D<F5S<WTB*0H)"2`@
M("`I*0H@("`@("`H(G!O<W0B("X@*`H)"2`H(E1O(B`N(")D:F(M<6UA:6Q`
M:V]O8F5R82YM871H+G5I8RYE9'4B*0H)"2`I*0H@("`@("`H(G5R;',B("X@
M*")F='`Z+R]K;V]B97)A+FUA=&@N=6EC+F5D=2]W=W<O;&ES=',N:'1M;"-Q
M;6%I;"(I*0H@("`@("`H(F%R8VAI=F5S(B`N("@B:'1T<#HO+W=W=RYO<FYL
M+F=O=B]I=',O87)C:&EV97,O;6%I;&EN9RUL:7-T<R]Q;6%I;"\B*2D*("`@
M("`@*2D*"B`@("`[(&5Z;6QM"B`@("`H(F1J8BUE>FUL;2(@+B`*("`@("`H
M*")F;&%V;W(B("X@(F5Z;6QM(BD*("`@("`@*")S=6)S8W)I8F4B("X@*`H)
M"2`@("`@("@B5&\B("X@(F1J8BUE>FUL;2US=6)S8W)I8F5`:V]O8F5R82YM
M871H+G5I8RYE9'4B*0H)"2`@("`@("DI"B`@("`@("@B=6YS=6)S8W)I8F4B
M("X@*`H)"0DH(E1O(B`N(")D:F(M97IM;&TM=6YS=6)S8W)I8F5`:V]O8F5R
M82YM871H+G5I8RYE9'4B*0H)"0DI*0H@("`@("`H(F-O;F9I<FTB("X@*`H)
M"2`@("`H(E1O(B`N("(D>V-O;F9I<FU?861D<F5S<WTB*0H)"2`@("`I*0H@
M("`@("`H(G!O<W0B("X@*`H)"2`H(E1O(B`N(")D:F(M97IM;&U`:V]O8F5R
M82YM871H+G5I8RYE9'4B*0H)"2`I*0H@("`@("`H(G5R;',B("X@*")H='1P
M.B\O=W=W+F5Z;6QM+F]R9R\B"@D)(")F='`Z+R]K;V]B97)A+FUA=&@N=6EC
M+F5D=2]W=W<O;&ES=',N:'1M;"-E>FUL;2(I*0H@("`@("`H(F%R8VAI=F5S
M(B`N("@B:'1T<#HO+W=W=RYF:6YD;6%I;"YC;VTO;&ES="]D:F(M97IM;&TO
M(BDI"B`@("`@("DI"@H@("`@.R!Q;6%I;"UA;FYO=6YC90H@("`@*")D:F(M
M<6UA:6PM86YN;W5N8V4B("X@"B`@("`@*"@B9FQA=F]R(B`N(")E>FUL;2(I
M"B`@("`@("@B<W5B<V-R:6)E(B`N("@*"0D@("`@("`H(E1O(B`N(")D:F(M
M<6UA:6PM86YN;W5N8V4M<W5B<V-R:6)E0&MO;V)E<F$N;6%T:"YU:6,N961U
M(BD*"0D@("`@("`I*0H@("`@("`H(G5N<W5B<V-R:6)E(B`N("@*"0D)*")4
M;R(@+B`B9&IB+7%M86EL+6%N;F]U;F-E+75N<W5B<V-R:6)E0&MO;V)E<F$N
M;6%T:"YU:6,N961U(BD*"0D)*2D*("`@("`@*")C;VYF:7)M(B`N("@*"0D@
M("`@*")4;R(@+B`B)'MC;VYF:7)M7V%D9')E<W-](BD*"0D@("`@*2D*("`@
M("`@*")P;W-T(B`N(&YI;"D*("`@("`@*")U<FQS(B`N(&YI;"D*("`@("`@
M*")A<F-H:79E<R(@+B!N:6PI"B`@("`@("DI"@H@("`@.R!G;G4@<')I=F%C
M>2!G=6%R9`H@("`@*")G;G5P9R(@+B`*("`@("`H*")F;&%V;W(B("X@(G5N
M:VYO=VXB*0H@("`@("`H(G-U8G-C<FEB92(@+B`H"@D)("`@("`@*")4;R(@
M+B`B9S$P+7)E<75E<W1`;F5T+FQU="YA8RYU:R(I"@D)("`@("`@*")";V1Y
M(B`N(")S=6)S8W)I8F4B*0H)"2`@("`@("DI"B`@("`@("@B=6YS=6)S8W)I
M8F4B("X@*`H)"0DH(E1O(B`N(")G,3`M<F5Q=65S=$!N970N;'5T+F%C+G5K
M(BD*"0D)*")";V1Y(B`N(")U;G-U8G-C<FEB92(I"@D)"2DI"B`@("`@("@B
M8V]N9FER;2(@+B`H"@D)("`@("@B5&\B("X@(F<Q,"UR97%U97-T0&YE="YL
M=70N86,N=6LB*0H)"2`@("`H(D)O9'DB("X@(F%U=&@@)'MP87-S=V]R9'T@
M<W5B<V-R:6)E(&<Q,"`D>V%D9')E<W-](BD*"0D@("`@*2D*("`@("`@*")P
M;W-T(B`N("@*"0D@*")4;R(@+B`B9S$P0&YE="YL=70N86,N=6LB*0H)"2`I
M*0H@("`@("`H(G5R;',B("X@*")H='1P.B\O=W=W+F0N<VAU='1L92YD92]I
M<VEL+V-R>7!T+V=N=7!G+FAT;6PB*2D*("`@("`@*")A<F-H:79E<R(@+B!N
M:6PI"B`@("`@("DI"@H@("`@.R!S<V@*("`@("@B<W-H(B`N(`H@("`@("@H
M(F9L879O<B(@+B`B;6%J;W)D;VUO(BD*("`@("`@*")S=6)S8W)I8F4B("X@
M*`H)"2`@("`@("@B5&\B("X@(FUA:F]R9&]M;T!C;&EN970N9FDB*0H)"2`@
M("`@("@B0F]D>2(@+B`B<W5B<V-R:6)E('-S:"(I"@D)("`@("`@*2D*("`@
M("`@*")U;G-U8G-C<FEB92(@+B`H"@D)"2 at example.com&\B("X@(FUA:F]R9&]M;T!C
M;&EN970N9FDB*0H)"0DH(D)O9'DB("X@(G-U8G-C<FEB92!S<V at example.com*0H)"0DI
M*0H@("`@("`H(F-O;F9I<FTB("X@;FEL*0H@("`@("`H(G!O<W0B("X@*`H)
M"2`H(E1O(B`N(")S<VA`8VQI;F5T+F9I(BD*"0D@*2D*("`@("`@*")U<FQS
M(B`N("@B:'1T<#HO+W=W=RYC<RYH=70N9FDO<W-H+R-M86EL:6YG+6QI<W0B
M*2D*("`@("`@*")A<F-H:79E<R(@+B`H(FAT='`Z+R]W=W<N8W,N:'5T+F9I
M+W-S:"UA<F-H:79E(BDI*2D*"B`@("`[(&1E8FEA;BUU<V5R"B`@("`H(F1E
M8FEA;BUU<V5R(B`N(`H@("`@("@H(F9L879O<B(@+B`B<VUA<G1L:7-T(BD*
M("`@("`@*")S=6)S8W)I8F4B("X@*`H)"2`@("`@("@B5&\B("X@(F1E8FEA
M;BUU<V5R+7)E<75E<W1`;&ES=',N9&5B:6%N+F]R9R(I"@D)("`@("`@*")3
M=6)J96-T(B`N(")S=6)S8W)I8F4B*0H)"2`@("`@("DI"B`@("`@("@B=6YS
M=6)S8W)I8F4B("X@*`H)"0DH(E1O(B`N(")D96)I86XM=7-E<BUR97%U97-T
M0&QI<W1S+F1E8FEA;BYO<F<B*0H)"0DH(E-U8FIE8W0B("X@(G5N<W5B<V-R
M:6)E(BD*"0D)*2D*("`@("`@*")C;VYF:7)M(B`N(&YI;"D*("`@("`@*")P
M;W-T(B`N("@*"0D@*")4;R(@+B`B9&5B:6%N+75S97)`;&ES=',N9&5B:6%N
M+F]R9R(I"@D)("DI"B`@("`@("@B=7)L<R(@+B`H(FAT='`Z+R]W=W<N9&5B
M:6%N+F]R9R]-86EL:6YG3&ES=',O<W5B<V-R:6)E(BDI"B`@("`@("@B87)C
M:&EV97,B("X@*")H='1P.B\O=W=W+F1E8FEA;BYO<F<O3&ES=',M07)C:&EV
M97,O(BDI"B`@("`@("DI"@H@("`@.R!D96)I86XM8VAA;F=E<RUD:6=E<W0*
M("`@("@B9&5B:6%N+6-H86YG97,M9&EG97-T(B`N(`H@("`@("@H(F9L879O
M<B(@+B`B<VUA<G1L:7-T(BD*("`@("`@*")S=6)S8W)I8F4B("X@*`H)"2`@
M("`@("@B5&\B("X@(F1E8FEA;BUC:&%N9V5S+61I9V5T+7)E<75E<W1`;&ES
M=',N9&5B:6%N+F]R9R(I"@D)("`@("`@*")3=6)J96-T(B`N(")S=6)S8W)I
M8F4B*0H)"2`@("`@("DI"B`@("`@("@B=6YS=6)S8W)I8F4B("X@*`H)"0DH
M(E1O(B`N(")D96)I86XM8VAA;F=E<RUD:6=E="UR97%U97-T0&QI<W1S+F1E
M8FEA;BYO<F<B*0H)"0DH(E-U8FIE8W0B("X@(G5N<W5B<V-R:6)E(BD*"0D)
M*2D*("`@("`@*")C;VYF:7)M(B`N(&YI;"D*("`@("`@*")P;W-T(B`N(&YI
M;"D*("`@("`@*")U<FQS(B`N("@B:'1T<#HO+W=W=RYD96)I86XN;W)G+TUA
M:6QI;F=,:7-T<R]S=6)S8W)I8F4B*2D*("`@("`@*")A<F-H:79E<R(@+B`H
M(FAT='`Z+R]W=W<N9&5B:6%N+F]R9R],:7-T<RU!<F-H:79E<R\B*2D*("`@
M("`@*2D*"B`@("`[('1E<F%T97)M"B`@("`H(G1E<F%T97)M+6UL(B`N(`H@
M("`@("@H(F9L879O<B(@+B`B=6YK;F]W;B(I"B`@("`@("@B<W5B<V-R:6)E
M(B`N("@*"0D@("`@("`H(E1O(B`N(")T97)A=&5R;2UM;"UR97%U97-T0'!H
M>7,N<RYU+71O:WEO+F%C+FIP(BD*"0D@("`@("`H(D)O9'DB("X@(G-U8G-C
M<FEB92(I"@D)("`@("`@*2D*("`@("`@*")U;G-U8G-C<FEB92(@+B`H"@D)
M"2 at example.com&\B("X@(G1E<F%T97)M+6UL+7)E<75E<W1`<&AY<RYS+G4M=&]K>6\N
M86,N:G`B*0H)"0DH(D)O9'DB("X@(G5N<W5B<V-R:6)E(BD*"0D)*2D*("`@
M("`@*")C;VYF:7)M(B`N(&YI;"D*("`@("`@*")P;W-T(B`N("@*"0D@*")4
M;R(@+B`B=&5R871E<FTM;6Q`<&AY<RYS+G4M=&]K>6\N86,N:G`B*0H)"2`I
M*0H@("`@("`H(G5R;',B("X@;FEL*0H@("`@("`H(F%R8VAI=F5S(B`N(&YI
M;"D*("`@("`@*2D*"B`@("`[('!Y=&AO;B!A;FYO=6YC90H@("`@*")P>71H
M;VXM86YN;W5N8V4B("X@"B`@("`@*"@B9FQA=F]R(B`N(")H=6UA;B(I"B`@
M("`@("@B<W5B<V-R:6)E(B`N("@*"0D@("`@("`H(E1O(B`N(")P>71H;VXM
M86YN;W5N8V4M;&ES="UR97%U97-T0&-W:2YN;"(I"@D)("`@("`@*")";V1Y
M(B`N(")P;&5A<V4@<W5B<V-R:6)E(&UE(%P@=&AA;FL@>6]U(BD*"0D@("`@
M("`I*0H@("`@("`H(G5N<W5B<V-R:6)E(B`N("@*"0D)*")4;R(@+B`B<'ET
M:&]N+6%N;F]U;F-E+6QI<W0M<F5Q=65S=$!C=VDN;FPB*0H)"0DH(D)O9'DB
M("X@(G!L96%S92!U;G-U8G-C<FEB92!M92!<('1H86YK('EO=2(I"@D)"2DI
M"B`@("`@("@B8V]N9FER;2(@+B!N:6PI"B`@("`@("@B<&]S="(@+B!N:6PI
M"B`@("`@("@B=7)L<R(@+B`H(FYE=W,Z8V]M<&PN;&%N9RYP>71H;VXN86YN
M;W5N8V4B"@D)(")H='1P.B\O=W=W+G!Y=&AO;BYO<F<O(BDI"B`@("`@("@B
M87)C:&EV97,B("X@;FEL*0H@("`@("`I*0H*("`@(#L at example.com=')A<0H@("`@
M*")B=6=T<F%Q(B`N(`H@("`@("@H(F9L879O<B(@+B`B;&ES='-E<G8B*0H@
M("`@("`H(G-U8G-C<FEB92(@+B`H"@D)("`@("`@*")4;R(@+B`B;&ES='-E
M<G9`;F5T<W!A8V4N;W)G(BD*"0D@("`@("`H(D)O9'DB("X@(G-U8G-C<FEB
M92!B=6=T<F%Q(BD*"0D@("`@("`I*0H@("`@("`H(G5N<W5B<V-R:6)E(B`N
M("@*"0D)*")4;R(@+B`B;&ES='-E<G9`;F5T<W!A8V4N;W)G(BD*"0D)*")"
M;V1Y(B`N(")U;G-U8G-C<FEB92!B=6=T<F%Q(BD*"0D)*2D*("`@("`@*")C
M;VYF:7)M(B`N("@*"0D@("`@*")4;R(@+B`B;&ES='-E<G9`;F5T<W!A8V4N
M;W)G(BD*"0D@("`@*")";V1Y(B`N(")O:R`D>W!A<W-W;W)D?2(I"@D)("`@
M("DI"B`@("`@("@B<&]S="(@+B`H"@D)("@B5&\B("X@(F)U9W1R87%`;F5T
M<W!A8V4N;W)G(BD*"0D@*2D*("`@("`@*")U<FQS(B`N(&YI;"D*("`@("`@
M*")A<F-H:79E<R(@+B`H(FAT='`Z+R]W=W<N9V5E:RUG:7)L+F-O;2]B=6=T
M<F%Q+VEN9&5X+FAT;6PB*2D*("`@("`@*2D*"B`@("`[(&9R97-H;65A=`H@
M("`@*")F<F5S:&UE870B("X@"B`@("`@*"@B9FQA=F]R(B`N(")E>FUL;2(I
M"B`@("`@("@B<W5B<V-R:6)E(B`N("@*"0D@("`@("`H(E1O(B`N(")F<F5S
M:&UE870M;F5W<RUS=6)S8W)I8F5`9G)E<VAM96%T+FYE="(I"@D)("`@("`@
M*2D*("`@("`@*")U;G-U8G-C<FEB92(@+B`H"@D)"2 at example.com&\B("X@(F9R97-H
M;65A="UN97=S+75N<W5B<V-R:6)E0&9R97-H;65A="YN970B*0H)"0DI*0H@
M("`@("`H(F-O;F9I<FTB("X@*`H)"2`@("`H(E1O(B`N("(D>V-O;F9I<FU?
M861D<F5S<WTB*0H)"2`@("`I*0H@("`@("`H(G!O<W0B("X@;FEL*0H@("`@
M("`H(G5R;',B("X@*")H='1P.B\O9G)E<VAM96%T+FYE="\B*2D*("`@("`@
M*")A<F-H:79E<R(@+B!N:6PI"B`@("`@("DI"@H@("`@.R!P8G-D+61E=@H@
M("`@.R!T:&ES(&UI9VAT(&)E(&AU;6%N+6UA:F]R9&]M;R!C;VUB:6YA=&EO
M;@H@("`@*")P8G-D+61E=B(@+B`*("`@("`H*")F;&%V;W(B("X@(FUA:F]R
M9&]M;R(I"B`@("`@("@B<W5B<V-R:6)E(B`N("@*"0D@("`@("`H(E1O(B`N
M(")M86IO<F1O;6]`87)S965D+F-O+FIP(BD*"0D@("`@("`H(D)O9'DB("X@
M(G-U8G-C<FEB92!P8G-D+61E=B(I"@D)("`@("`@*2D*("`@("`@*")U;G-U
M8G-C<FEB92(@+B`H"@D)"2 at example.com&\B("X@(FUA:F]R9&]M;T!A<G-E960N8V\N
M:G`B*0H)"0DH(D)O9'DB("X@(G5N<W5B<V-R:6)E('!B<V0M9&5V(BD*"0D)
M*2D*("`@("`@*")C;VYF:7)M(B`N("@*"0D@("`@*")4;R(@+B`B;6%J;W)D
M;VUO0&%R<V5E9"YC;RYJ<"(I"@D)("`@("@B0F]D>2(@+B`B875T:"`D>W!A
M<W-W;W)D?2!S=6)S8W)I8F4@<&)S9"UD978@)'MA9&1R97-S?2(I"@D)("`@
M("DI"B`@("`@("@B<&]S="(@+B`H"@D)("@B5&\B("X@(G!B<V0M9&5V0&%R
M<V5E9"YC;RYJ<"(I"@D)("DI"B`@("`@("@B=7)L<R(@+B`H(FAT='`Z+R]W
M=W<P,BYU+7!A9V4N<V\M;F5T+F]R+FIP+V-A,B]T86ME;75R82\B"@D)(")H
M='1P.B\O=W=W,#(N=2UP86=E+G-O+6YE="YO<BYJ<"]C83(O=&%K96UU<F$O
M;6PN:'1M;"(I*0H@("`@("`H(F%R8VAI=F5S(B`N(&YI;"D*("`@("`@*2D*
M"B`@("`[(&9R965B<V0M86YN;W5N8V4*("`@("@B9G)E96)S9"UA;FYO=6YC
M92(@+B`*("`@("`H*")F;&%V;W(B("X@(FUA:F]R9&]M;R(I"B`@("`@("@B
M<W5B<V-R:6)E(B`N("@*"0D@("`@("`H(E1O(B`N(")M86IO<F1O;6]`9G)E
M96)S9"YO<F<B*0H)"2`@("`@("@B0F]D>2(@+B`B<W5B<V-R:6)E(&9R965B
M<V0M86YN;W5N8V4B*0H)"2`@("`@("DI"B`@("`@("@B=6YS=6)S8W)I8F4B
M("X@*`H)"0DH(E1O(B`N(")M86IO<F1O;6]`9G)E96)S9"YO<F<B*0H)"0DH
M(D)O9'DB("X@(G5N<W5B<V-R:6)E(&9R965B<V0M86YN;W5N8V4B*0H)"0DI
M*0H@("`@("`H(F-O;F9I<FTB("X@*`H)"2`@("`H(E1O(B`N(")M86IO<F1O
M;6]`9G)E96)S9"YO<F<B*0H)"2`@("`H(D)O9'DB("X@(F%U=&@@)'MP87-S
M=V]R9'T@<W5B<V-R:6)E(&9R965B<V0M86YN;W5N8V4@)'MA9&1R97-S?2(I
M"@D)("`@("DI"B`@("`@("@B<&]S="(@+B!N:6PI"B`@("`@("@B=7)L<R(@
M+B`H(FAT='`Z+R]W=W<N9G)E96)S9"YO<F<O:&%N9&)O;VLO97)E<V]U<F-E
M<SIM86EL+FAT;6PB*2D*("`@("`@*")A<F-H:79E<R(@+B!N:6PI"B`@("`@
M("DI"@H@("`@.R!F<F5E8G-D+71E8V at example.com:G`*("`@("@B9G)E96)S9"UT96-H
M+6IP(B`N(`H@("`@("@H(F9L879O<B(@+B`B;6%J;W)D;VUO(BD*("`@("`@
M*")S=6)S8W)I8F4B("X@*`H)"2`@("`@("@B5&\B("X@(FUA:F]R9&]M;T!J
M<"YF<F5E8G-D+F]R9R(I"@D)("`@("`@*")";V1Y(B`N(")S=6)S8W)I8F4@
M9G)E96)S9"UT96-H+6IP(BD*"0D@("`@("`I*0H@("`@("`H(G5N<W5B<V-R
M:6)E(B`N("@*"0D)*")4;R(@+B`B;6%J;W)D;VUO0&IP+F9R965B<V0N;W)G
M(BD*"0D)*")";V1Y(B`N(")U;G-U8G-C<FEB92!F<F5E8G-D+71E8V at example.com:G`B
M*0H)"0DI*0H@("`@("`H(F-O;F9I<FTB("X@*`H)"2`@("`H(E1O(B`N(")M
M86IO<F1O;6]`:G`N9G)E96)S9"YO<F<B*0H)"2`@("`H(D)O9'DB("X@(F%U
M=&@@)'MP87-S=V]R9'T@<W5B<V-R:6)E(&9R965B<V0M=&5C:"UJ<"`D>V%D
M9')E<W-](BD*"0D@("`@*2D*("`@("`@*")P;W-T(B`N("@*"0D@*")4;R(@
M+B`B9G)E96)S9"UT96-H+6IP0&IP+F9R965B<V0N;W)G(BD*"0D@*2D*("`@
M("`@*")U<FQS(B`N("@B:'1T<#HO+W=W=RYJ<"YF<F5E8G-D+F]R9R\B*2D*
M("`@("`@*")A<F-H:79E<R(@+B`H(F9T<#HO+VIA>BYJ<"YF<F5E8G-D+F]R
M9R]P=6(O1G)E94)31"UJ<"]T96-H+6IP+V%R8VAI=F5S(BDI"B`@("`@("DI
M"@H@("`@.R!D96)I86XM=7-E<BUJ<`H@("`@*")D96)I86XM=7-E<BUJ<"(@
M+B`*("`@("`H*")F;&%V;W(B("X@(F9M;"(I"B`@("`@("@B<W5B<V-R:6)E
M(B`N("@*"0D@("`@("`H(E1O(B`N(")D96)I86XM=7-E<G,M8W1L0&1E8FEA
M;BYO<BYJ<"(I"@D)("`@("`@*")";V1Y(B`N(")S=6)S8W)I8F4@)'MN86UE
M?2(I"@D)("`@("`@*2D*("`@("`@*")U;G-U8G-C<FEB92(@+B`H"@D)"2 at example.com
M5&\B("X@(F1E8FEA;BUU<V5R<RUC=&Q`9&5B:6%N+F]R+FIP(BD*"0D)*")"
M;V1Y(B`N("(C(&)Y92(I"@D)"2DI"B`@("`@("@B8V]N9FER;2(@+B`H"@D)
M("`@("@B5&\B("X@(F1E8FEA;BUU<V5R<RUC=&Q`9&5B:6%N+F]R+FIP(BD*
M"0D@("`@*")";V1Y(B`N(")C;VYF:7)M("1[<&%S<W=O<F1]("1[;F%M97TB
M*0H)"2`@("`I*0H@("`@("`H(G!O<W0B("X@*`H)"2`H(E1O(B`N(")D96)I
M86XM=7-E<G-`9&5B:6%N+F]R+FIP(BD*"0D@*2D*("`@("`@*")U<FQS(B`N
M("@B:'1T<#HO+W=W=RYD96)I86XN;W(N:G`O(@H)"2`B:'1T<#HO+V9U:W5D
M82YA:7-T+6YA<F$N86,N:G`O)3=%>6%S=6AI+6$O;&EN=7 at example.com(BDI"B`@("`@
M("@B87)C:&EV97,B("X@*")H='1P.B\O=V%I<RYM97<N;W)G+V%R8VAI=F4O
M9&5B:6%N+75S97)S+S$O(BDI"B`@("`@("DI"@H@("`@.R!O<&5N8G-D+6%N
M;F]U;F-E"B`@("`H(F]P96YB<V0M86YN;W5N8V4B("X@"B`@("`@*"@B9FQA
M=F]R(B`N(")M86IO<F1O;6\B*0H@("`@("`H(G-U8G-C<FEB92(@+B`H"@D)
M("`@("`@*")4;R(@+B`B;6%J;W)D;VUO0&]P96YB<V0N;W)G("(I"@D)("`@
M("`@*")";V1Y(B`N(")S=6)S8W)I8F4 at example.com;W5N8V4B*0H)"2`@("`@("DI
M"B`@("`@("@B=6YS=6)S8W)I8F4B("X@*`H)"0DH(E1O(B`N(")M86IO<F1O
M;6]`;W!E;F)S9"YO<F<@(BD*"0D)*")";V1Y(B`N(")U;G-U8G-C<FEB92!A
M;FYO=6YC92(I"@D)"2DI"B`@("`@("@B8V]N9FER;2(@+B!N:6PI"B`@("`@
M("@B<&]S="(@+B!N:6PI"B`@("`@("@B:&5L<"(@+B`H"@D)("@B5&\B("X@
M(FUA:F]R9&]M;T!O<&5N8G-D+F]R9R`B*0H)"2`H(D)O9'DB("X@(FAE;'`B
M*0H)"2`I*0H@("`@("`H(G5R;',B("X@*")H='1P.B\O=W=W+F]P96YB<V0N
M;W)G+R(I*0H@("`@("`H(F%R8VAI=F5S(B`N("@B:'1T<#HO+W=W=RYS:6=M
M87-O9G0N8V]M+WYO<&5N8G-D+R(@"@D)("`@("`B:'1T<#HO+W=W=RYT<GEC
M+F]N+F-A+V]B<V0M;&ES=',N:'1M;"(I*2DI"@H@("`@.R!E;7!T>2!R96-O
M<F0 at example.com]R(&-O;G9E;FEE;F-E"CL@("`@*"(B("X@"CL@("`@("@H(F9L879O
M<B(@+B`B(BD*.R`@("`@("@B<W5B<V-R:6)E(B`N("@*.PD)("`@("`@*")4
M;R(@+B`B(BD*.PD)("`@("`@*")";V1Y(B`N("(B*0H["0D@("`@("`I*0H[
M("`@("`@*")U;G-U8G-C<FEB92(@+B`H"CL)"0DH(E1O(B`N("(B*0H["0D)
M*")";V1Y(B`N("(B*0H["0D)*2D*.R`@("`@("@B8V]N9FER;2(@+B`H"CL@
M("`@("`@("`@("`@("`@("`@("@B5&\B("X@(B(I"0D)"0D*.R`@("`@("`@
M("`@("`@("`@("`@*2D*.R`@("`@("@B<&]S="(@+B`H"CL)"2`H(E1O(B`N
M("(B*0H["0D@*2D*.R`@("`@("@B=7)L<R(@+B`H(B(I*0H[("`@("`@*")A
:<F-H:79E<R(@+B`H(B(I*2DI"@H@("`@*2D@
`
end
SHAR_EOF
$shar_touch -am 090516531998 'sen-imldb.el' &&
chmod 0664 'sen-imldb.el' ||
$echo 'restore of' 'sen-imldb.el' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'sen-imldb.el:' 'MD5 check failed'
5bdaeef8da654f721b298e9c9a8539ed sen-imldb.el
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'sen-imldb.el'`"
test 10421 -eq "$shar_count" ||
$echo 'sen-imldb.el:' 'original size' '10421,' 'current size' "$shar_count!"
fi
fi
rm -fr _sh00502
exit 0
Mew-dist メーリングリストの案内