From 875d76db1ce18d71adf8d3bc6b05a04ea78df6df Mon Sep 17 00:00:00 2001 From: agc Date: Wed, 25 Feb 1998 12:08:07 +0000 Subject: I have become bored waiting for exmh 2.0.2, and so have decided to force the issue, by committing a 2.0.1 package. This is taken from the FreeBSD port. --- mail/exmh/Makefile | 30 +-- mail/exmh/files/config | 2 + mail/exmh/files/md5 | 31 ++- mail/exmh/patches/patch-as | 32 +++ mail/exmh/patches/patch-at | 281 ++++++++++++++++++++++++++ mail/exmh/patches/patch-au | 477 +++++++++++++++++++++++++++++++++++++++++++++ mail/exmh/patches/patch-av | 19 ++ mail/exmh/pkg/PLIST | 332 +++++++++++++++---------------- 8 files changed, 1018 insertions(+), 186 deletions(-) create mode 100644 mail/exmh/patches/patch-as create mode 100644 mail/exmh/patches/patch-at create mode 100644 mail/exmh/patches/patch-au create mode 100644 mail/exmh/patches/patch-av (limited to 'mail/exmh') diff --git a/mail/exmh/Makefile b/mail/exmh/Makefile index f17077e2386..b0960dc24f9 100644 --- a/mail/exmh/Makefile +++ b/mail/exmh/Makefile @@ -1,23 +1,29 @@ # New ports collection Makefile for: exmh2 -# Version required: 2.0zeta -# Date created: 1 Jan 97 +# Version required: 2.0.1 +# Date released: 1 Jan 97 # Whom: Peter Wemm # -# $NetBSD: Makefile,v 1.3 1998/01/24 20:28:43 hubertf Exp $ -# FreeBSD Id: Makefile,v 1.17 1997/10/06 06:49:45 peter Exp +# $NetBSD: Makefile,v 1.4 1998/02/25 12:08:07 agc Exp $ +# FreeBSD Id: Makefile,v 1.25 1998/02/15 05:36:54 peter Exp # -DISTNAME= exmh-2.0zeta -PKGNAME= exmh-2.0z -CATEGORIES= mail tk41 +DISTNAME= exmh-2.0.1 +CATEGORIES= mail tk80 MASTER_SITES= ftp://ftp.sunlabs.com/pub/tcl/exmh/ EXTRACT_SUFX= .tar.Z -PATCH_SITES= http://www.sunlabs.com/~bwelch/exmh/patches/2.0zeta/ -PATCHFILES= ispell.patch koir.patch mime.patch seditMime.patch scan.patch \ - addr.patch html.patch html_dpackage.patch pgpExec.patch +PATCH_SITES= http://sunscript.sun.com/exmh/patches/2.0.1/ +PATCHFILES= utils.patch folderNew.patch extrasInit.patch exec.patch \ + app-defaults.patch pgpMisc.patch seditMime.patch mime.patch \ + bindings.patch html_bindings.patch find.patch mh.patch \ + pgp.patch -MAINTAINER= peter@FreeBSD.org +# User contributed and "new features". Some not useable as-is. +PATCHFILES+= seditpost.patch inc.patch next.patch +# XXX pgpExec.patch has got confused paths (supplied as patch-as) +# XXX newsgroups.patch is relative to a different directory (patch-at) +# XXX MDN.patch doesn't apply (patch-au) +# XXX post.from.patch doesn't apply (patch-av) .if defined(PATCH_DEBUG) PATCH_DIST_ARGS= -d ${WRKSRC}/lib -E ${PATCH_DIST_STRIP} @@ -25,6 +31,8 @@ PATCH_DIST_ARGS= -d ${WRKSRC}/lib -E ${PATCH_DIST_STRIP} PATCH_DIST_ARGS= -d ${WRKSRC}/lib --forward --quiet -E ${PATCH_DIST_STRIP} .endif +MAINTAINER= peter@FreeBSD.org + DIST_SUBDIR= ${PKGNAME} RUN_DEPENDS= wish8.0:${PORTSDIR}/x11/tk80 diff --git a/mail/exmh/files/config b/mail/exmh/files/config index 1cbbedf4b77..5693fe1682e 100644 --- a/mail/exmh/files/config +++ b/mail/exmh/files/config @@ -6,11 +6,13 @@ set mh_path !!PREFIX!!/bin set exmh(slocal) !!PREFIX!!/lib/mh/slocal set mime(dir) !!PREFIX!!/bin set mailcap_default !!PREFIX!!/etc/mailcap +set mimetypes_default !!PREFIX!!/lib/exmh-!!VERSION!!/mime.types set exmh(expect) !!EXPECT!! set exmh(expectk) !!EXPECTK!! set faces(dir) !!FACES!! set faces(set,user) {local users usenix misc} set faces(set,unknown) {domains unknown} +set faces(set,news) {news} set faces(defaultDomain) !!DOMAIN!! set faces(suffix) {xpm gif xbm} set pgp(path) !!PGP!! diff --git a/mail/exmh/files/md5 b/mail/exmh/files/md5 index 4d4530af4e1..9a93a8bb60a 100644 --- a/mail/exmh/files/md5 +++ b/mail/exmh/files/md5 @@ -1,10 +1,21 @@ -MD5 (exmh-2.0z/exmh-2.0zeta.tar.Z) = 9a8c1026c57357ce3b4aa9ae6f612d3c -MD5 (exmh-2.0z/ispell.patch) = ee3bdbdf2a1f3ef7fce911d5836bde27 -MD5 (exmh-2.0z/koir.patch) = faf27cf0a7e986631de58f872dd60f84 -MD5 (exmh-2.0z/mime.patch) = c4ca30bb6c553243a193850a192c8586 -MD5 (exmh-2.0z/seditMime.patch) = 74006191c5ed6fe50a0b38e90f9b1a56 -MD5 (exmh-2.0z/scan.patch) = 9f610082a0871fc35c6817b0f06ea234 -MD5 (exmh-2.0z/addr.patch) = 40ca1c843e953d1b80ac6d636d0192dc -MD5 (exmh-2.0z/html.patch) = 95fc62a5397bf22669c7436f1d0e89ae -MD5 (exmh-2.0z/html_dpackage.patch) = 8ba20db08bef2673cdfb4676000b5892 -MD5 (exmh-2.0z/pgpExec.patch) = 9dd6df806ba0df56c48350ce08037608 +MD5 (exmh-2.0.1/exmh-2.0.1.tar.Z) = e0149feead029e126ba25aef2646a26a +MD5 (exmh-2.0.1/utils.patch) = c67b738aa7156934688f3e59c08399f4 +MD5 (exmh-2.0.1/folderNew.patch) = 86cc61aa9033dc3a1a12c53f108e5a1a +MD5 (exmh-2.0.1/extrasInit.patch) = a9c9924e0b45da4beca954a86bf45e3d +MD5 (exmh-2.0.1/exec.patch) = ea6d9e009feea9c8a54760bf424d9585 +MD5 (exmh-2.0.1/app-defaults.patch) = c5fa0888d502431429ead6d224114387 +MD5 (exmh-2.0.1/pgpMisc.patch) = 6e4026cca4a3c4dfbb1c3ff49524f7b7 +MD5 (exmh-2.0.1/seditMime.patch) = 1658d362221930c00ac78d2021617ea0 +MD5 (exmh-2.0.1/mime.patch) = 0fdb9b1e93fec4c7a23556d530e3e2ac +MD5 (exmh-2.0.1/bindings.patch) = 7e14bb1ec615a905507bcc1f92f5e24f +MD5 (exmh-2.0.1/html_bindings.patch) = 6e45d4546d99b25988853c2b30b7a336 +MD5 (exmh-2.0.1/find.patch) = a411d6e8711acce0ccc8fd0bc3dd44bc +MD5 (exmh-2.0.1/mh.patch) = 3b3fcef52f70125479d7e2a305498268 +MD5 (exmh-2.0.1/pgp.patch) = da881fc50e4c0d6d92a9a4a2afc0763a +MD5 (exmh-2.0.1/pgpExec.patch) = 490c4caf26551bb86d867d8b8753cf66 +MD5 (exmh-2.0.1/seditpost.patch) = a3181a3878bb5705762b4f4954ea6c51 +MD5 (exmh-2.0.1/newsgroups.patch) = a1e8246f76f1629491f1064df73f88ae +MD5 (exmh-2.0.1/MDN.patch) = 39d279a8e52dc24a13ad15244e006253 +MD5 (exmh-2.0.1/inc.patch) = 075c71257a13c90d7e77ee46afa7b55b +MD5 (exmh-2.0.1/next.patch) = 9286b98e2967654cf864f0a889bbe8d7 +MD5 (exmh-2.0.1/post.from.patch) = c1ab6d5828aab6beca9460ab95248a07 diff --git a/mail/exmh/patches/patch-as b/mail/exmh/patches/patch-as new file mode 100644 index 00000000000..7f891a809b8 --- /dev/null +++ b/mail/exmh/patches/patch-as @@ -0,0 +1,32 @@ +*** exmh-2.0/lib/pgpExec.tcl Mon Dec 22 15:52:20 1997 +--- lib/pgpExec.tcl Tue Dec 23 12:33:36 1997 +*************** +*** 197,204 **** + set keylist [split $keylist "\n"] + set keys {} + set key {} + foreach line $keylist { +! if [regexp {^ *(pub|sec) +[0-9]+(/| +)([0-9A-F]+) +[0-9]+/ ?[0-9]+/[0-9]+ +(.*)$} $line {} {} {} keyid userid] { + set key [list "0x$keyid" [string trim $userid]] + lappend keys $key + } +--- 194,212 ---- + set keylist [split $keylist "\n"] + set keys {} + set key {} ++ set previousKeyId 0 + foreach line $keylist { +! if {$previousKeyId == 1} { +! Exmh_Debug "Entering case 1..." +! regexp {^ +(.*)$} $line {} userid +! if { $userid == "*** KEY REVOKED ***"} continue; +! set key [list "0x$keyid" [string trim $userid]] +! lappend keys $key +! set previousKeyId 0 +! } elseif [regexp {^ *(pub|sec) +[0-9]+(/| +)([0-9A-F]+) +[0-9]+/ ?[0-9]+/ ?[0-9]+ +days: +[0-9]+} $line {} {} {} keyid ] { +! set previousKeyId 1 +! } elseif [regexp {^ *(pub|sec) +[0-9]+(/| +)([0-9A-F]+) +[0-9]+/ ?[0-9]+/ ?[0-9]+ +(.*)$} $line {} {} {} keyid userid] { +! if { $userid == "*** KEY REVOKED ***"} continue; + set key [list "0x$keyid" [string trim $userid]] + lappend keys $key + } diff --git a/mail/exmh/patches/patch-at b/mail/exmh/patches/patch-at new file mode 100644 index 00000000000..f2fe301ce4f --- /dev/null +++ b/mail/exmh/patches/patch-at @@ -0,0 +1,281 @@ +*** exmh.install.orig Mon Dec 22 13:37:45 1997 +--- exmh.install Tue Dec 23 12:32:48 1997 +*************** +*** 45,50 **** +--- 45,51 ---- + {Search path for user faces} + install_var faces(set,unknown) {domains unknown} \ + {Search path for generic faces} ++ install_var faces(set,news) {news} {Search path for newsgroups faces} + install_var faces(defaultDomain) eng.sun.com {Your default domain} + install_var faces(suffix) {xpm gif xbm} {Faces file suffixes} + install_dirVar pgp(path) /usr/local/bin {PGP bin directory} +*** lib/faces.tcl.orig Mon Mar 24 13:15:34 1997 +--- lib/faces.tcl Mon Sep 29 13:20:26 1997 +*************** +*** 29,34 **** +--- 29,35 ---- + # backwards compatibility with old "exmh" script + set faces(set,user) $faces(set) + set faces(set,unknown) $faces(set) ++ set faces(set,news) $faces(set) + } + set faces(sets) {user unknown} + } +*************** +*** 36,41 **** +--- 37,43 ---- + # tail component for each set + set faces(name,user) {$user} + set faces(name,unknown) unknown ++ set faces(name,news) unknown + + set faces(defaultDomain) [string tolower \ + [string trim $faces(defaultDomain) ". "]] +*************** +*** 43,48 **** +--- 45,51 ---- + foreach set $faces(sets) { + set faces(path,$set) {} + } ++ set faces(path,news) {} + if [info exists env(FACEPATH)] { + set faces(base) "" + foreach dir [split $env(FACEPATH) :] { +*************** +*** 53,58 **** +--- 56,62 ---- + } else { + FaceAddPath user $dir + FaceAddPath unknown $dir ++ FaceAddPath news $dir + } + } + } +*************** +*** 64,69 **** +--- 68,77 ---- + FaceAddPath $set $dir + } + } ++ foreach dir $faces(set,news) { ++ if ![file isdirectory $faces(base)$dir] continue ++ FaceAddPath news $dir ++ } + } + } + proc FaceAddPath {set dir} { +*************** +*** 79,85 **** + } + + +! proc Face_Show { fromwho {xface {}} } { + global faces faceCache + + Face_Delete +--- 87,93 ---- + } + + +! proc Face_Show { fromwho {newsgrps {}} {xface {}} } { + global faces faceCache + + Face_Delete +*************** +*** 99,109 **** + } + + # Check for cached lookup result +! if [info exists faceCache($fromwho)] { +! if [Face_ShowFace $faceCache($fromwho)] { + return 1 + } +! unset faceCache($fromwho) + Face_Delete + } + +--- 107,117 ---- + } + + # Check for cached lookup result +! if [info exists faceCache($fromwho,$newsgrps)] { +! if [Face_ShowFace $faceCache($fromwho,$newsgrps)] { + return 1 + } +! unset faceCache($fromwho,$newsgrps) + Face_Delete + } + +*************** +*** 117,123 **** + set machine [string tolower $faces(defaultDomain)] + } elseif {[string first . $machine] == -1} { + append machine . $faces(defaultDomain) +! } + + set from [split $machine .] + set pathlist [FacePathlist $from] +--- 125,131 ---- + set machine [string tolower $faces(defaultDomain)] + } elseif {[string first . $machine] == -1} { + append machine . $faces(defaultDomain) +! } + + set from [split $machine .] + set pathlist [FacePathlist $from] +*************** +*** 124,129 **** +--- 132,147 ---- + + #Exmh_Debug \n$user ==> $pathlist + ++ set pathlistngfull {} ++ if {[string compare "" $newsgrps]} { ++ set newsgrplist [string tolower [split $newsgrps ,]] ++ foreach ng $newsgrplist { ++ set ngparts [split $ng .] ++ set pathlistng [FacePathNGlist $ngparts] ++ set pathlistngfull [concat $pathlistng $pathlistngfull] ++ } ++ } ++ + # Loop through Face path + #Tputs lookup: [time { + set matches {} +*************** +*** 152,158 **** + break + } + set path $dir/$part/$name +! # Exmh_Debug $path + # skip non-existent directories + if ![file exists $faces(base)$path] continue + +--- 170,176 ---- + break + } + set path $dir/$part/$name +! # Exmh_Debug $path + # skip non-existent directories + if ![file exists $faces(base)$path] continue + +*************** +*** 166,178 **** + } + } + # }] + + # Exmh_Debug Faces matches $matches + + if !$faces(rowEnabled) { + foreach face $matches { + if [Face_ShowFile $face] { +! set faceCache($fromwho) $face + Exmh_Status $msg + return 1 + } +--- 184,218 ---- + } + } + # }] ++ eval set tail $faces(name,news) ++ foreach dir $faces(path,news) { ++ set name $tail ++ set map {} ++ foreach part [concat $map $pathlistngfull] { ++ # if {([string match unknown* $dir] || [string match misc* $dir]) ++ # && [llength $matches]} { ++ # break ++ # } ++ set path $dir/$part/$name ++ # Exmh_Debug $path ++ # skip non-existent directories ++ if ![file exists $faces(base)$path] continue + ++ foreach suf $faces(suffix) { ++ if [file exists $faces(base)$path/face.$suf] { ++ lappend matches $path/face.$suf ++ break ++ } ++ } ++ } ++ } ++ + # Exmh_Debug Faces matches $matches + + if !$faces(rowEnabled) { + foreach face $matches { + if [Face_ShowFile $face] { +! set faceCache($fromwho,$newsgrps) $face + Exmh_Status $msg + return 1 + } +*************** +*** 179,185 **** + } + # braces around cmdsubst NECESSARY! + } elseif {[Face_ShowFace $matches]} { +! set faceCache($fromwho) $matches + Exmh_Status $msg + return 1 + } +--- 219,225 ---- + } + # braces around cmdsubst NECESSARY! + } elseif {[Face_ShowFace $matches]} { +! set faceCache($fromwho,$newsgrps) $matches + Exmh_Status $msg + return 1 + } +*************** +*** 200,205 **** +--- 240,258 ---- + append path $prefix [lindex $from $i] + set prefix / + set pathlist [concat $path $pathlist] ++ } ++ lappend pathlist {} ++ return $pathlist ++ } ++ ++ proc FacePathNGlist { ng } { ++ set path {} ++ set prefix {} ++ set pathlist {} ++ for {set i 0} {$i <= [expr [llength $ng]-1]} {incr i 1} { ++ append path $prefix [lindex $ng $i] ++ set prefix / ++ set pathlist [concat $path $pathlist] + } + lappend pathlist {} + return $pathlist +*** lib/msgShow.tcl.orig Fri Jan 31 15:15:31 1997 +--- lib/msgShow.tcl Sun Jun 29 22:42:57 1997 +*************** +*** 81,87 **** + set msg(curclear) 0 + set mime(stop) 0 + update idletasks ;# Faces display can be slow +! Face_Show [MsgParseFrom $mimeHdr(0=1,hdr,from)] $mimeHdr(0=1,hdr,x-face) + foreach cmd [info commands Hook_MsgShow*] { + $cmd $mhProfile(path)/$exmh(folder)/$msgid mimeHdr + } +--- 81,87 ---- + set msg(curclear) 0 + set mime(stop) 0 + update idletasks ;# Faces display can be slow +! Face_Show [MsgParseFrom $mimeHdr(0=1,hdr,from)] $mimeHdr(0=1,hdr,newsgroups) $mimeHdr(0=1,hdr,x-face) + foreach cmd [info commands Hook_MsgShow*] { + $cmd $mhProfile(path)/$exmh(folder)/$msgid mimeHdr + } +*************** +*** 109,114 **** +--- 109,115 ---- + set mimeHdr($part=$subpart,hdr,date) {} + set mimeHdr($part=$subpart,hdr,subject) {} + set mimeHdr($part=$subpart,hdr,x-face) {} ++ set mimeHdr($part=$subpart,hdr,newsgroups) {} + set mimeHdr($part=$subpart,fullHeaders) $mime(fullHeaders) + set mimeHdr($part=$subpart,yview) 1.0 + diff --git a/mail/exmh/patches/patch-au b/mail/exmh/patches/patch-au new file mode 100644 index 00000000000..b8cfb9f8b02 --- /dev/null +++ b/mail/exmh/patches/patch-au @@ -0,0 +1,477 @@ +diff -cr /nr/user/skr/lib/exmh2.0zeta/mime.tcl ./mime.tcl +*** /nr/user/skr/lib/exmh2.0zeta/mime.tcl Fri Oct 3 21:56:34 1997 +--- lib/mime.tcl Wed Dec 10 12:57:57 1997 +*************** +*** 176,181 **** +--- 176,191 ---- + {mime(mdnTo) dispositionNotificationTo {} {Disposition Notification To} + "The address where you want MDN receipts to end up. This normally your + own email address."} ++ {mime(mdnSend) dispositionNotificationSend ++ {CHOICE never deny {ask user} auto/ask auto/ignore } ++ {Send MDNs} ++ "This controls if and how to send MDNs. The options are: ++ - Never generate MDN, always ignore requests. ++ - Automatically generate a \"denied\" MDN when a MDN is requested. ++ - Ask user whether to generate a MDN when displaying the message. ++ - Automatically when displaying the message, but ask user in ++ certain cases where it may not be appropriate to generate MDNs. ++ - As above, but silently ignore potentially suspect MDN requests."} + } + set i 0 + foreach char {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 \ +*************** +*** 1016,1029 **** + } + MimeShowHeaders $tkw $part=1 [MimeLabel $part part] + MimeInsertSeparator $tkw $part 6 +! if {$part == 0 \ +! && ![info exists mimeHdr(0=1,hdr,x-exmhmdn)] \ +! && [info exists mimeHdr(0=1,hdr,disposition-notification-to)]} { +! if [info exists mime(mdnDone)] { +! unset mime(mdnDone) +! } else { +! MDNAsk $tkw $mimeHdr(0=1,hdr,disposition-notification-to) +! } + } + + MimeShowPart $tkw $part=1 [MimeLabel $part part] 1 +--- 1026,1033 ---- + } + MimeShowHeaders $tkw $part=1 [MimeLabel $part part] + MimeInsertSeparator $tkw $part 6 +! if {$part == 0} { +! MDNCheck $tkw + } + + MimeShowPart $tkw $part=1 [MimeLabel $part part] 1 +*************** +*** 1811,1824 **** + MimeShowMinHeaders $tkw $part 1 + } + MimeInsertSeparator $tkw $part 6 +! if {![info exists mimeHdr(0=1,hdr,x-exmhmdn)] && \ +! [info exists mimeHdr(0=1,hdr,disposition-notification-to)]} { +! if [info exists mime(mdnDone)] { +! unset mime(mdnDone) +! } else { +! MDNAsk $tkw $mimeHdr(0=1,hdr,disposition-notification-to) +! } +! } + if [info exists mimeHdr($part,param,charset)] { + set tag [MimeSetCharset $tkw $part] + $tkw tag remove noteTag "insert -1line" end +--- 1815,1821 ---- + MimeShowMinHeaders $tkw $part 1 + } + MimeInsertSeparator $tkw $part 6 +! MDNCheck $tkw + if [info exists mimeHdr($part,param,charset)] { + set tag [MimeSetCharset $tkw $part] + $tkw tag remove noteTag "insert -1line" end + +diff -cr /nr/user/skr/lib/exmh2.0zeta/receipt.tcl ./receipt.tcl +*** /nr/user/skr/lib/exmh2.0zeta/receipt.tcl Thu Oct 2 17:01:22 1997 +--- lib/receipt.tcl Thu Dec 11 09:12:39 1997 +*************** +*** 46,57 **** + $t insert 1.0 "Disposition-Notification-To: $mdnTo\n" + } + +! proc MDNGenerate { file address choice } { + global exwin mimeHdr + + if {$choice != "ignored"} { +! set mdnfile [MDNBuildDraft $file $address $choice] +! exec send $mdnfile + } + MDNAddHeaderToDraft $file "X-ExmhMDN: $choice" + MsgShowInText $exwin(mtext) $mimeHdr(0,rawfile) +--- 46,61 ---- + $t insert 1.0 "Disposition-Notification-To: $mdnTo\n" + } + +! proc MDNGenerate { file address choice mode } { + global exwin mimeHdr + + if {$choice != "ignored"} { +! set mdnfile [MDNBuildDraft $file $address $choice $mode] +! if [catch {exec send $mdnfile} result] { +! Exmh_Debug "send result: $result" +! Exmh_Status "Could not send message disposition notification" error +! return +! } + } + MDNAddHeaderToDraft $file "X-ExmhMDN: $choice" + MsgShowInText $exwin(mtext) $mimeHdr(0,rawfile) +*************** +*** 82,109 **** + Mh_Rename $draft.new $draft + } + +! proc MDNAsk {tkw address} { + global mimeHdr exmh + +! $tkw insert insert " The sender wants you to acknowledge that you have \ +! seen this mail. Do you want to send a receipt to $address?\n" +! $tkw insert insert " " +! TextButton $tkw "Confirm now" \ + [list MDNGenerate $mimeHdr(0,rawfile) \ +! $mimeHdr(0=1,hdr,disposition-notification-to) "displayed"] + $tkw insert insert " " + TextButton $tkw "Send denial" \ + [list MDNGenerate $mimeHdr(0,rawfile) \ +! $mimeHdr(0=1,hdr,disposition-notification-to) "denied"] + $tkw insert insert " " + TextButton $tkw "Ignore silently" \ + [list MDNGenerate $mimeHdr(0,rawfile) \ +! $mimeHdr(0=1,hdr,disposition-notification-to) "ignored"] + $tkw insert insert "\n" + MimeInsertSeparator $tkw 0 6 + } + + proc MDNReportDialog { tkw from date disp parts } { + if {$parts == 2} { + $tkw insert insert "This mail contains a message disposition \ + notification, regarding the message to $from.\n\n" +--- 86,238 ---- + Mh_Rename $draft.new $draft + } + +! proc MDNAsk {tkw address explain} { + global mimeHdr exmh + +! $tkw insert insert " The sender wants you to acknowledge that you have\ +! seen this mail." +! if {[string compare $explain {}] != 0} { +! $tkw insert insert "\n\n NOTE! For the reason(s) listed below, it may\ +! be unsafe to send the disposition notification. Please check the\ +! message carefully. Unless you are sure that it is safe to send\ +! the notification, press \"Ignore silently\"" +! $tkw insert insert $explain +! } +! +! $tkw insert insert "\n\n Do you want to send a disposition notification\ +! (receipt) to \n $address?" +! $tkw insert insert "\n\n " +! TextButton $tkw "Send confirmation" \ + [list MDNGenerate $mimeHdr(0,rawfile) \ +! $mimeHdr(0=1,hdr,disposition-notification-to) \ +! "displayed" "manual-action/MDN-sent-manually"] + $tkw insert insert " " + TextButton $tkw "Send denial" \ + [list MDNGenerate $mimeHdr(0,rawfile) \ +! $mimeHdr(0=1,hdr,disposition-notification-to) \ +! "denied" "manual-action/MDN-sent-manually"] + $tkw insert insert " " + TextButton $tkw "Ignore silently" \ + [list MDNGenerate $mimeHdr(0,rawfile) \ +! $mimeHdr(0=1,hdr,disposition-notification-to) \ +! "ignored" {}] + $tkw insert insert "\n" + MimeInsertSeparator $tkw 0 6 + } + ++ proc MDNCheck { tkw } { ++ global mimeHdr mime ++ ++ if {![info exists mimeHdr(0=1,hdr,x-exmhmdn)] && \ ++ [info exists mimeHdr(0=1,hdr,disposition-notification-to)]} { ++ if [info exists mime(mdnDone)] { ++ unset mime(mdnDone) ++ } else { ++ set dnt $mimeHdr(0=1,hdr,disposition-notification-to) ++ ++ switch $mime(mdnSend) { ++ "never" { ++ set mdnAction1 "ignored" ++ set mdnAction2 "ignored" ++ } ++ "deny" { ++ set mdnAction1 "denied" ++ set mdnAction2 "ignored" ++ } ++ "ask user" { ++ set mdnAction1 "ask" ++ set mdnAction2 "ask" ++ } ++ "auto/ask" { ++ set mdnAction1 "displayed" ++ set mdnAction2 "ask" ++ } ++ "auto/ignore" { ++ set mdnAction1 "displayed" ++ set mdnAction2 "ignored" ++ } ++ default { ++ set mdnAction1 "ask" ++ set mdnAction2 "ask" ++ } ++ } ++ ++ set mdnExplain {} ++ ++ set line [string trim $dnt] ++ if [regsub {\(.*\)} $line {} newline] { ++ set line $newline ++ } ++ ++ if {[string first "|" $line] != -1} { ++ set mdnAction1 "ignore" ++ set mdnExplain "$mdnExplain ++ ++ * The address(es) for the disposition notification contains a pipe symbol (|) ++ *** THIS MAY BE A SERIOUS SECURITY HOLE." ++ } ++ ++ if {[string first "," $line] != -1} { ++ set mdnAction1 $mdnAction2 ++ set mdnExplain "$mdnExplain ++ ++ * The sender appears to have requested a disposition notification to be ++ sent to more than one address. If you are not sure that there is a valid ++ reason to send disposition notifications to each of these addresses, ++ the request should be ignored and no disposition notifications sent." ++ } ++ ++ if [info exists mimeHdr(0=1,hdr,return-path)] { ++ if {[string compare \ ++ [MsgParseFrom $mimeHdr(0=1,hdr,return-path) {}] \ ++ [MsgParseFrom $line {}]] != 0} { ++ set mdnAction1 $mdnAction2 ++ set mdnExplain "$mdnExplain ++ ++ * The disposition notification appears to be directed somewhere else than ++ to the sender of the message. If you are not sure that there is a valid ++ reason for this, the request should be ignored and no disposition ++ notifications sent." ++ } ++ } else { ++ set mdnAction1 $mdnAction2 ++ set mdnExplain "$mdnExplain ++ ++ * The message does not have a Return-path header field, and therefore it ++ is not possible to verify that the disposition notification address(es) ++ is valid." ++ } ++ ++ if [info exists mimeHdr(0=1,hdr,disposition-notification-options)]\ ++ { ++ set mdnAction1 $mdnAction2 ++ set mdnExplain "$mdnExplain ++ ++ * The message has a Disposition-notification-options header requesting ++ some special processing which exmh does not know about." ++ if [regexp -nocase {=[ ]*required[ ]*,} \ ++ $mimeHdr(0=1,hdr,disposition-notification-options)] { ++ set mdnAction1 "ignored" ++ set mdnExplain "$mdnExplain ++ ++ Since one or more of the unknown options are required to be taken into ++ account for generating a proper disposition notification, no disposition ++ notification at all should be generated." ++ } ++ } ++ ++ if {[string compare $mdnAction1 "ask"] == 0} { ++ MDNAsk $tkw $dnt $mdnExplain ++ } else { ++ MDNGenerate $mimeHdr(0,rawfile) $dnt $mdnAction1 \ ++ "manual-action/MDN-sent-automatically" ++ } ++ } ++ } ++ } ++ + proc MDNReportDialog { tkw from date disp parts } { ++ + if {$parts == 2} { + $tkw insert insert "This mail contains a message disposition \ + notification, regarding the message to $from.\n\n" +*************** +*** 111,163 **** + $tkw insert insert "This mail contains a message disposition \ + notification, regarding the message to $from on $date.\n\n" + } +! switch [string tolower $disp] { +! "displayed" { +! set jtext \ +! "The mail was displayed by the user agent to someone reading the recipient's \ +! mailbox. This does not guarantee that it is read or understood." +! } +! "denied" { +! set jtext \ +! "The recipient does not wish you to be informed of the message's disposition." +! } +! "processed" { +! set jtext \ +! "The message has been processed in some manner (e.g. printed, faxed, \ +! forwarded) in response to a user command, without being displayed to the \ +! user. The user may or may not see the message later." +! } +! "autoprocessed" { +! "The message has been processed automatically in some manner (e.g. printed, \ +! faxed, forwarded, gatewayed) in response to some user request made in \ +! advance, without being displayed to the user. The user may or may not see the \ +! message later." +! } +! "deleted" { +! "The message has manually been deleted. The recipient may or may not have \ +! seen the message." +! } +! "autodeleded" { +! "The message has been automatically deleted without being displayed to the \ +! recipient." +! } +! "obsoleted" { +! "The message has been automatically rendered obsolete by another message \ +! received. The recipient may still access and read the message later." +! } +! "terminated" { +! "The recipient's mailbox has been terminated and all messagess in it \ +! automatically deleted." +! } +! "autodenied" { +! "The recipient does not wish the sender to be informed of the message's \ +! disposition, and has requested that this MDN be sent automatically." + } +! default { +! set jtext "The reciept type is $disp." + } + } +! $tkw insert insert $jtext\n\n + if {$parts != 2} { + $tkw insert insert " " + TextButton $tkw "View requesting message" \ +--- 240,336 ---- + $tkw insert insert "This mail contains a message disposition \ + notification, regarding the message to $from on $date.\n\n" + } +! +! $tkw insert insert "The disposition of the message is: \n $disp\n\n" +! +! if [regsub -all {(\(.*\))|([ ]+)} $disp {} newline] { +! set disp $newline +! } +! +! if [regexp -nocase {^([-a-z]+)/([-a-z]+);([-a-z]+)(/(.*))?$} $disp match \ +! action_mode sending_mode disp_type match2 disp_modifiers] { +! +! $tkw insert insert "This means:\n" +! +! switch [string tolower $action_mode] { +! "manual-action" { +! $tkw insert insert " +! A manual action happened to the message:\n" +! } +! "automatic-action" { +! $tkw insert insert " +! An automatic action happened to the message:\n" +! } +! default { +! $tkw insert insert " +! An action (described as $action_mode) happened to the message:\n" +! } + } +! +! switch [string tolower $disp_type] { +! "displayed" { +! set jtext " +! The mail was displayed by the user agent to someone reading the +! recipient's mailbox. (This does not guarantee that it is read +! or understood.)" +! } +! "denied" { +! set jtext " +! The recipient does not wish you to be informed of the message's +! disposition." +! } +! "dispatched" { +! set jtext " +! The mail has been sent somewhere (e.g. printed, faxed, forwarded) +! without being displayed to the user. (The user may or may not see +! the message later.)" +! } +! "processed" { +! set jtext " +! The message has been processed in some manner (i.e. by some sort of +! rules or server) without being displayed to the user. (The user may +! or may not see the message later, or there may not even be a human +! user associated with the mailbox.)" +! } +! "failed" { +! set jtext " +! A failure occurred that prevented the proper generation of an MDN." +! } +! "deleted" { +! set jtext " +! The message has been deleted. (The recipient may or may not have +! seen the message. The recipient might \"undelete\" the message at a +! later time and read the message.)" +! } +! default { +! set jtext " +! Unknown disposition type $disp_type." +! } +! } +! $tkw insert insert $jtext\n +! +! switch [string tolower $sending_mode] { +! "mdn-sent-manually" { +! $tkw insert insert " +! The recipient manually caused this MDN to be sent." +! } +! "mdn-sent-automatically" { +! $tkw insert insert " \ +! This MDN was generated automatically." +! } +! default { +! $tkw insert insert " +! The way the MDN was sent is described as: $sending_mode +! (which is not a valid code)." +! } + } ++ } else { ++ $tkw insert insert " ++ The format of the disposition string is not recognized, cannot ++ explain it further." + } +! +! $tkw insert insert "\n\n\n" + if {$parts != 2} { + $tkw insert insert " " + TextButton $tkw "View requesting message" \ +*************** +*** 181,187 **** + } + } + +! proc MDNBuildDraft { draft address doit } { + global env mimeHdr faces exmh + set host [exec hostname] + +--- 354,360 ---- + } + } + +! proc MDNBuildDraft { draft address doit choice} { + global env mimeHdr faces exmh + set host [exec hostname] + +*************** +*** 226,232 **** + if [info exists mimeHdr(0=1,hdr,message-id)] { + puts $out "Original-Message-ID: $mimeHdr(0=1,hdr,message-id)" + } +! puts $out "Disposition: $doit" + + FvMimeAddPart $out $bdry "message/rfc822\n" + +--- 399,405 ---- + if [info exists mimeHdr(0=1,hdr,message-id)] { + puts $out "Original-Message-ID: $mimeHdr(0=1,hdr,message-id)" + } +! puts $out "Disposition: $choice; $doit" + + FvMimeAddPart $out $bdry "message/rfc822\n" + diff --git a/mail/exmh/patches/patch-av b/mail/exmh/patches/patch-av new file mode 100644 index 00000000000..453e2cd27ae --- /dev/null +++ b/mail/exmh/patches/patch-av @@ -0,0 +1,19 @@ +*** lib/post.tcl Tue Dec 23 18:41:31 1997 +--- lib/post.tcl.new Fri Jan 9 11:40:29 1998 +*************** +*** 59,65 **** + # and CNews which get upset when they can't do it + set header_throwAway \ + {{return-path:} {received:} {path:} {date:} {message-id:} {to:} \ +! {lines:} {x-exmh-isig-} {cc:}} + + # Headers INN wants to add itself get X-original- shoved in front + # if we want to keep them +--- 59,65 ---- + # and CNews which get upset when they can't do it + set header_throwAway \ + {{return-path:} {received:} {path:} {date:} {message-id:} {to:} \ +! {lines:} {x-exmh-isig-} {cc:} {from }} + + # Headers INN wants to add itself get X-original- shoved in front + # if we want to keep them diff --git a/mail/exmh/pkg/PLIST b/mail/exmh/pkg/PLIST index 348f489bef7..7969ab97152 100644 --- a/mail/exmh/pkg/PLIST +++ b/mail/exmh/pkg/PLIST @@ -1,170 +1,172 @@ -@comment $NetBSD: PLIST,v 1.2 1997/11/19 14:50:47 agc Exp $ +@comment $NetBSD: PLIST,v 1.3 1998/02/25 12:08:08 agc Exp $ bin/exmh bin/exmh-async bin/exmh-bg bin/ftp.expect -lib/exmh-2.0zeta/addr.tcl -lib/exmh-2.0zeta/aliases.tcl -lib/exmh-2.0zeta/app-defaults -lib/exmh-2.0zeta/app-defaults-color -lib/exmh-2.0zeta/app-defaults-mono -lib/exmh-2.0zeta/audit.tcl -lib/exmh-2.0zeta/autorefile.tcl -lib/exmh-2.0zeta/background.tcl -lib/exmh-2.0zeta/base64.tcl -lib/exmh-2.0zeta/bindings.tcl -lib/exmh-2.0zeta/busy.tcl -lib/exmh-2.0zeta/buttons.tcl -lib/exmh-2.0zeta/clink.au -lib/exmh-2.0zeta/crypt.tcl -lib/exmh-2.0zeta/cutbuffer.tcl -lib/exmh-2.0zeta/dragNdrop.tcl -lib/exmh-2.0zeta/drip.au -lib/exmh-2.0zeta/editor.tcl -lib/exmh-2.0zeta/env.tcl -lib/exmh-2.0zeta/error.tcl -lib/exmh-2.0zeta/exmh.bitmap -lib/exmh-2.0zeta/extrasInit.tcl -lib/exmh-2.0zeta/exwin.tcl -lib/exmh-2.0zeta/faces.tcl -lib/exmh-2.0zeta/fcache.tcl -lib/exmh-2.0zeta/fdisp.tcl -lib/exmh-2.0zeta/fdispColor.tcl -lib/exmh-2.0zeta/fdispPopup.tcl -lib/exmh-2.0zeta/fileselect.tcl -lib/exmh-2.0zeta/find.tcl -lib/exmh-2.0zeta/flag.tcl -lib/exmh-2.0zeta/flagdown.bitmap -lib/exmh-2.0zeta/flagup.bitmap -lib/exmh-2.0zeta/flist.tcl -lib/exmh-2.0zeta/folder.tcl -lib/exmh-2.0zeta/folderNew.tcl -lib/exmh-2.0zeta/fontsel.tcl -lib/exmh-2.0zeta/ftoc.tcl -lib/exmh-2.0zeta/ftocColor.tcl -lib/exmh-2.0zeta/ftocFind.tcl -lib/exmh-2.0zeta/getnews.tcl -lib/exmh-2.0zeta/glimpse.tcl -lib/exmh-2.0zeta/help.tcl -lib/exmh-2.0zeta/hourglass.bitmap -lib/exmh-2.0zeta/hourglass.mask -lib/exmh-2.0zeta/hourglass1.bitmap -lib/exmh-2.0zeta/hourglass2.bitmap -lib/exmh-2.0zeta/hourglass2.mask -lib/exmh-2.0zeta/html.tcl -lib/exmh-2.0zeta/html/AddrEdit.html -lib/exmh-2.0zeta/html/AddressBk.html -lib/exmh-2.0zeta/html/AliasAddr.html -lib/exmh-2.0zeta/html/Aliases.html -lib/exmh-2.0zeta/html/Bindings.html -lib/exmh-2.0zeta/html/Font.html -lib/exmh-2.0zeta/html/Import.html -lib/exmh-2.0zeta/html/Intro.html -lib/exmh-2.0zeta/html/Keys.html -lib/exmh-2.0zeta/html/Lists.html -lib/exmh-2.0zeta/html/PGP.html -lib/exmh-2.0zeta/html/Preferences.html -lib/exmh-2.0zeta/html/Reply.html -lib/exmh-2.0zeta/html/Search.html -lib/exmh-2.0zeta/html/Sedit.html -lib/exmh-2.0zeta/html/Seditpref.html -lib/exmh-2.0zeta/html/blu-ball.gif -lib/exmh-2.0zeta/html/copyright.html -lib/exmh-2.0zeta/html/exmh-custom.n.html -lib/exmh-2.0zeta/html/exmh-fans.html -lib/exmh-2.0zeta/html/exmh-faq.html -lib/exmh-2.0zeta/html/exmh-ref.n.html -lib/exmh-2.0zeta/html/exmh-use.n.html -lib/exmh-2.0zeta/html/exmh.README.html -lib/exmh-2.0zeta/html/exmh.n.html -lib/exmh-2.0zeta/html/exmh.pref.gif -lib/exmh-2.0zeta/html/exmh.snap1.gif -lib/exmh-2.0zeta/html/index.html -lib/exmh-2.0zeta/html/left-arrow.gif -lib/exmh-2.0zeta/html/maillist.html -lib/exmh-2.0zeta/html/overview.html -lib/exmh-2.0zeta/html/red-ball.gif -lib/exmh-2.0zeta/html/right-arrow.gif -lib/exmh-2.0zeta/html/software.html -lib/exmh-2.0zeta/html/whatis.html -lib/exmh-2.0zeta/html/yel-ball.gif -lib/exmh-2.0zeta/html_cache.tcl -lib/exmh-2.0zeta/html_content.tcl -lib/exmh-2.0zeta/html_dpackage.tcl -lib/exmh-2.0zeta/html_formtag.tcl -lib/exmh-2.0zeta/html_frame.tcl -lib/exmh-2.0zeta/html_get_http.tcl -lib/exmh-2.0zeta/html_head.tcl -lib/exmh-2.0zeta/html_hr.tcl -lib/exmh-2.0zeta/html_images.tcl -lib/exmh-2.0zeta/html_links.tcl -lib/exmh-2.0zeta/html_maps.tcl -lib/exmh-2.0zeta/html_stubs.tcl -lib/exmh-2.0zeta/html_tags.tcl -lib/exmh-2.0zeta/html_text.tcl -lib/exmh-2.0zeta/http_proxy.tcl -lib/exmh-2.0zeta/import.tcl -lib/exmh-2.0zeta/inc.tcl -lib/exmh-2.0zeta/ispell.tcl -lib/exmh-2.0zeta/labels.tcl -lib/exmh-2.0zeta/linethru.bitmap -lib/exmh-2.0zeta/mailcap.tcl -lib/exmh-2.0zeta/main.tcl -lib/exmh-2.0zeta/mbempty.bitmap -lib/exmh-2.0zeta/mbtidy.bitmap -lib/exmh-2.0zeta/mbuntidy.bitmap -lib/exmh-2.0zeta/mh.tcl -lib/exmh-2.0zeta/mime.tcl -lib/exmh-2.0zeta/mime.types -lib/exmh-2.0zeta/mimeSun.tcl -lib/exmh-2.0zeta/mosaic.tcl -lib/exmh-2.0zeta/msg.tcl -lib/exmh-2.0zeta/msgShow.tcl -lib/exmh-2.0zeta/partial.tcl -lib/exmh-2.0zeta/pgp.tcl -lib/exmh-2.0zeta/pgpEWN.tcl -lib/exmh-2.0zeta/pgpExec.tcl -lib/exmh-2.0zeta/pgpMatch.tcl -lib/exmh-2.0zeta/pgpMisc.tcl -lib/exmh-2.0zeta/pgpwww.tcl -lib/exmh-2.0zeta/pick.tcl -lib/exmh-2.0zeta/post.tcl -lib/exmh-2.0zeta/preferences.tcl -lib/exmh-2.0zeta/print.tcl -lib/exmh-2.0zeta/ps.tcl -lib/exmh-2.0zeta/quote.tcl -lib/exmh-2.0zeta/receipt.tcl -lib/exmh-2.0zeta/report.tcl -lib/exmh-2.0zeta/rich2tk.tcl -lib/exmh-2.0zeta/scan.tcl -lib/exmh-2.0zeta/sedit.tcl -lib/exmh-2.0zeta/seditBind.tcl -lib/exmh-2.0zeta/seditCompose.tcl -lib/exmh-2.0zeta/seditEnriched.tcl -lib/exmh-2.0zeta/seditExtras.tcl -lib/exmh-2.0zeta/seditMime.tcl -lib/exmh-2.0zeta/seditQP.tcl -lib/exmh-2.0zeta/seditSel.tcl -lib/exmh-2.0zeta/select.tcl -lib/exmh-2.0zeta/send.tcl -lib/exmh-2.0zeta/sound.tcl -lib/exmh-2.0zeta/tclIndex -lib/exmh-2.0zeta/text.tcl -lib/exmh-2.0zeta/textButton.tcl -lib/exmh-2.0zeta/textSelect.tcl -lib/exmh-2.0zeta/thread.tcl -lib/exmh-2.0zeta/timer.bitmap -lib/exmh-2.0zeta/tioga.tcl -lib/exmh-2.0zeta/unseenwin.tcl -lib/exmh-2.0zeta/uri.tcl -lib/exmh-2.0zeta/url.bitmap -lib/exmh-2.0zeta/user.tcl -lib/exmh-2.0zeta/utils.tcl -lib/exmh-2.0zeta/widgetMenu.tcl -lib/exmh-2.0zeta/widgetText.tcl -lib/exmh-2.0zeta/widgets.tcl -lib/exmh-2.0zeta/xns.tcl -lib/exmh-2.0zeta/xnsgetmail.exp +lib/exmh-2.0.1/addr.tcl +lib/exmh-2.0.1/aliases.tcl +lib/exmh-2.0.1/app-defaults +lib/exmh-2.0.1/app-defaults-color +lib/exmh-2.0.1/app-defaults-mono +lib/exmh-2.0.1/audit.tcl +lib/exmh-2.0.1/autorefile.tcl +lib/exmh-2.0.1/background.tcl +lib/exmh-2.0.1/base64.tcl +lib/exmh-2.0.1/bindings.tcl +lib/exmh-2.0.1/busy.tcl +lib/exmh-2.0.1/buttons.tcl +lib/exmh-2.0.1/clink.au +lib/exmh-2.0.1/crypt.tcl +lib/exmh-2.0.1/cutbuffer.tcl +lib/exmh-2.0.1/dragNdrop.tcl +lib/exmh-2.0.1/drip.au +lib/exmh-2.0.1/editor.tcl +lib/exmh-2.0.1/env.tcl +lib/exmh-2.0.1/error.tcl +lib/exmh-2.0.1/exec.tcl +lib/exmh-2.0.1/exmh.bitmap +lib/exmh-2.0.1/extrasInit.tcl +lib/exmh-2.0.1/exwin.tcl +lib/exmh-2.0.1/faces.tcl +lib/exmh-2.0.1/fcache.tcl +lib/exmh-2.0.1/fdisp.tcl +lib/exmh-2.0.1/fdispColor.tcl +lib/exmh-2.0.1/fdispPopup.tcl +lib/exmh-2.0.1/fileselect.tcl +lib/exmh-2.0.1/find.tcl +lib/exmh-2.0.1/flag.tcl +lib/exmh-2.0.1/flagdown.bitmap +lib/exmh-2.0.1/flagup.bitmap +lib/exmh-2.0.1/flist.tcl +lib/exmh-2.0.1/folder.tcl +lib/exmh-2.0.1/folderNew.tcl +lib/exmh-2.0.1/fontsel.tcl +lib/exmh-2.0.1/ftoc.tcl +lib/exmh-2.0.1/ftocColor.tcl +lib/exmh-2.0.1/ftocFind.tcl +lib/exmh-2.0.1/getnews.tcl +lib/exmh-2.0.1/glimpse.tcl +lib/exmh-2.0.1/help.tcl +lib/exmh-2.0.1/hourglass.bitmap +lib/exmh-2.0.1/hourglass.mask +lib/exmh-2.0.1/hourglass1.bitmap +lib/exmh-2.0.1/hourglass2.bitmap +lib/exmh-2.0.1/hourglass2.mask +lib/exmh-2.0.1/html.tcl +lib/exmh-2.0.1/html/AddrEdit.html +lib/exmh-2.0.1/html/AddressBk.html +lib/exmh-2.0.1/html/AliasAddr.html +lib/exmh-2.0.1/html/Aliases.html +lib/exmh-2.0.1/html/Bindings.html +lib/exmh-2.0.1/html/Font.html +lib/exmh-2.0.1/html/Import.html +lib/exmh-2.0.1/html/Intro.html +lib/exmh-2.0.1/html/Keys.html +lib/exmh-2.0.1/html/Lists.html +lib/exmh-2.0.1/html/PGP.html +lib/exmh-2.0.1/html/Preferences.html +lib/exmh-2.0.1/html/Reply.html +lib/exmh-2.0.1/html/Search.html +lib/exmh-2.0.1/html/Sedit.html +lib/exmh-2.0.1/html/Seditpref.html +lib/exmh-2.0.1/html/blu-ball.gif +lib/exmh-2.0.1/html/copyright.html +lib/exmh-2.0.1/html/exmh-custom.n.html +lib/exmh-2.0.1/html/exmh-fans.html +lib/exmh-2.0.1/html/exmh-faq.html +lib/exmh-2.0.1/html/exmh-ref.n.html +lib/exmh-2.0.1/html/exmh-use.n.html +lib/exmh-2.0.1/html/exmh.README.html +lib/exmh-2.0.1/html/exmh.n.html +lib/exmh-2.0.1/html/exmh.pref.gif +lib/exmh-2.0.1/html/exmh.snap1.gif +lib/exmh-2.0.1/html/index.html +lib/exmh-2.0.1/html/left-arrow.gif +lib/exmh-2.0.1/html/maillist.html +lib/exmh-2.0.1/html/overview.html +lib/exmh-2.0.1/html/ppp.howto.html +lib/exmh-2.0.1/html/red-ball.gif +lib/exmh-2.0.1/html/right-arrow.gif +lib/exmh-2.0.1/html/software.html +lib/exmh-2.0.1/html/whatis.html +lib/exmh-2.0.1/html/yel-ball.gif +lib/exmh-2.0.1/html_cache.tcl +lib/exmh-2.0.1/html_content.tcl +lib/exmh-2.0.1/html_dpackage.tcl +lib/exmh-2.0.1/html_formtag.tcl +lib/exmh-2.0.1/html_frame.tcl +lib/exmh-2.0.1/html_get_http.tcl +lib/exmh-2.0.1/html_head.tcl +lib/exmh-2.0.1/html_hr.tcl +lib/exmh-2.0.1/html_images.tcl +lib/exmh-2.0.1/html_links.tcl +lib/exmh-2.0.1/html_maps.tcl +lib/exmh-2.0.1/html_stubs.tcl +lib/exmh-2.0.1/html_tags.tcl +lib/exmh-2.0.1/html_text.tcl +lib/exmh-2.0.1/http_proxy.tcl +lib/exmh-2.0.1/import.tcl +lib/exmh-2.0.1/inc.tcl +lib/exmh-2.0.1/ispell.tcl +lib/exmh-2.0.1/labels.tcl +lib/exmh-2.0.1/linethru.bitmap +lib/exmh-2.0.1/mailcap.tcl +lib/exmh-2.0.1/main.tcl +lib/exmh-2.0.1/mbempty.bitmap +lib/exmh-2.0.1/mbtidy.bitmap +lib/exmh-2.0.1/mbuntidy.bitmap +lib/exmh-2.0.1/mh.tcl +lib/exmh-2.0.1/mime.tcl +lib/exmh-2.0.1/mime.types +lib/exmh-2.0.1/mimeSun.tcl +lib/exmh-2.0.1/mosaic.tcl +lib/exmh-2.0.1/msg.tcl +lib/exmh-2.0.1/msgShow.tcl +lib/exmh-2.0.1/partial.tcl +lib/exmh-2.0.1/pgp.tcl +lib/exmh-2.0.1/pgpEWN.tcl +lib/exmh-2.0.1/pgpExec.tcl +lib/exmh-2.0.1/pgpMatch.tcl +lib/exmh-2.0.1/pgpMisc.tcl +lib/exmh-2.0.1/pgpwww.tcl +lib/exmh-2.0.1/pick.tcl +lib/exmh-2.0.1/post.tcl +lib/exmh-2.0.1/preferences.tcl +lib/exmh-2.0.1/print.tcl +lib/exmh-2.0.1/ps.tcl +lib/exmh-2.0.1/quote.tcl +lib/exmh-2.0.1/receipt.tcl +lib/exmh-2.0.1/report.tcl +lib/exmh-2.0.1/rich2tk.tcl +lib/exmh-2.0.1/scan.tcl +lib/exmh-2.0.1/sedit.tcl +lib/exmh-2.0.1/seditBind.tcl +lib/exmh-2.0.1/seditCompose.tcl +lib/exmh-2.0.1/seditEnriched.tcl +lib/exmh-2.0.1/seditExtras.tcl +lib/exmh-2.0.1/seditMime.tcl +lib/exmh-2.0.1/seditQP.tcl +lib/exmh-2.0.1/seditSel.tcl +lib/exmh-2.0.1/select.tcl +lib/exmh-2.0.1/send.tcl +lib/exmh-2.0.1/sound.tcl +lib/exmh-2.0.1/tclIndex +lib/exmh-2.0.1/text.tcl +lib/exmh-2.0.1/textButton.tcl +lib/exmh-2.0.1/textSelect.tcl +lib/exmh-2.0.1/thread.tcl +lib/exmh-2.0.1/timer.bitmap +lib/exmh-2.0.1/tioga.tcl +lib/exmh-2.0.1/unseenwin.tcl +lib/exmh-2.0.1/uri.tcl +lib/exmh-2.0.1/url.bitmap +lib/exmh-2.0.1/user.tcl +lib/exmh-2.0.1/utils.tcl +lib/exmh-2.0.1/widgetMenu.tcl +lib/exmh-2.0.1/widgetText.tcl +lib/exmh-2.0.1/widgets.tcl +lib/exmh-2.0.1/xns.tcl +lib/exmh-2.0.1/xnsgetmail.exp man/man1/exmh.1.gz -@dirrm lib/exmh-2.0zeta/html -@dirrm lib/exmh-2.0zeta +@dirrm lib/exmh-2.0.1/html +@dirrm lib/exmh-2.0.1 -- cgit v1.2.3