diff options
Diffstat (limited to 'contrib/nvi/tcl_scripts/mailprocs.tcl')
-rw-r--r-- | contrib/nvi/tcl_scripts/mailprocs.tcl | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/contrib/nvi/tcl_scripts/mailprocs.tcl b/contrib/nvi/tcl_scripts/mailprocs.tcl new file mode 100644 index 0000000..eccb9cd --- /dev/null +++ b/contrib/nvi/tcl_scripts/mailprocs.tcl @@ -0,0 +1,115 @@ +# @(#)mailprocs.tcl 8.3 (Berkeley) 4/29/96 +# +proc validLine {} { + global viScreenId + set line [viGetLine $viScreenId [lindex [viGetCursor $viScreenId] 0]] + if {[string compare [lindex [split $line :] 0] "To"] == 0} { + set addrs [lindex [split $line :] 1] + foreach name [split $addrs ,] { + isValid [string trim $name] + } + } +} + +proc valid {target} { + set found 0 + set aliasFile [open "~/Mail/aliases" r] + while {[gets $aliasFile line] >= 0} { + set name [lindex [split $line :] 0] + set address [lindex [split $line :] 1] + if {[string compare $target $name] == 0} { + set found 1 + break + } + } + close $aliasFile + if {$found == 1} { + return $address + } else { + return $found + } +} + +proc isValid {target} { + global viScreenId + set address [valid $target] + if {$address != 0} { + viMsg $viScreenId "$target is [string trim $address]" + } else { + viMsg $viScreenId "$target not found" + } +} + +proc isAliasedLine {} { + global viScreenId + set line [viGetLine $viScreenId [lindex [viGetCursor $viScreenId] 0]] + if {[string match [lindex [split $line :] 0] "*To"] == 0} { + set addrs [lindex [split $line :] 1] + foreach name [split $addrs ,] { + isAliased [string trim $name] + } + } +} + +proc aliased {target} { + set found 0 + set aliasFile [open "~/Mail/aliases" r] + while {[gets $aliasFile line] >= 0} { + set name [lindex [split $line :] 0] + set address [lindex [split $line :] 1] + if {[string compare $target [string trim $address]] == 0} { + set found 1 + break + } + } + close $aliasFile + + return $found +} + +proc isAliased {target} { + global viScreenId + set found [aliased $target] + + if {$found} { + viMsg $viScreenId "$target is aliased to [string trim $name]" + } else { + viMsg $viScreenId "$target not aliased" + } +} + +proc appendAlias {target address} { + if {![aliased $target]} { + set aliasFile [open "~/Mail/aliases" a] + puts $aliasFile "$target: $address" + } + close $aliasFile +} + +proc expand {} { + global viScreenId + set row [lindex [viGetCursor $viScreenId] 0]] + set column [lindex [viGetCursor $viScreenId] 1]] + set line [viGetLine $viScreenId $row] + while {$column < [string length $line] && \ + [string index $line $column] != ' '} { + append $target [string index $line $column] + incr $column + } + set found [isValid $target] +} + +proc cite {} { + global viScreenId + global viStartLine + global viStopLine + for {set i $viStartLine} {$i <= $viStopLine} {incr i} { + set newLine "> " + append newLine [viGetLine $viScreenId $i] + viSetLine $viScreenId $i $newLine + } +} + +global viScreenId +viMapKey $viScreenId isAliasedLine +viMapKey $viScreenId validLine |