116 lines
2.5 KiB
Tcl
116 lines
2.5 KiB
Tcl
|
# @(#)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
|