1*dbd550edSchristos# Id: mailprocs.tcl,v 8.3 1996/04/29 12:31:35 bostic Exp (Berkeley) Date: 1996/04/29 12:31:35 2*dbd550edSchristos# 3*dbd550edSchristosproc validLine {} { 4*dbd550edSchristos global viScreenId 5*dbd550edSchristos set line [viGetLine $viScreenId [lindex [viGetCursor $viScreenId] 0]] 6*dbd550edSchristos if {[string compare [lindex [split $line :] 0] "To"] == 0} { 7*dbd550edSchristos set addrs [lindex [split $line :] 1] 8*dbd550edSchristos foreach name [split $addrs ,] { 9*dbd550edSchristos isValid [string trim $name] 10*dbd550edSchristos } 11*dbd550edSchristos } 12*dbd550edSchristos} 13*dbd550edSchristos 14*dbd550edSchristosproc valid {target} { 15*dbd550edSchristos set found 0 16*dbd550edSchristos set aliasFile [open "~/Mail/aliases" r] 17*dbd550edSchristos while {[gets $aliasFile line] >= 0} { 18*dbd550edSchristos set name [lindex [split $line :] 0] 19*dbd550edSchristos set address [lindex [split $line :] 1] 20*dbd550edSchristos if {[string compare $target $name] == 0} { 21*dbd550edSchristos set found 1 22*dbd550edSchristos break 23*dbd550edSchristos } 24*dbd550edSchristos } 25*dbd550edSchristos close $aliasFile 26*dbd550edSchristos if {$found == 1} { 27*dbd550edSchristos return $address 28*dbd550edSchristos } else { 29*dbd550edSchristos return $found 30*dbd550edSchristos } 31*dbd550edSchristos} 32*dbd550edSchristos 33*dbd550edSchristosproc isValid {target} { 34*dbd550edSchristos global viScreenId 35*dbd550edSchristos set address [valid $target] 36*dbd550edSchristos if {$address != 0} { 37*dbd550edSchristos viMsg $viScreenId "$target is [string trim $address]" 38*dbd550edSchristos } else { 39*dbd550edSchristos viMsg $viScreenId "$target not found" 40*dbd550edSchristos } 41*dbd550edSchristos} 42*dbd550edSchristos 43*dbd550edSchristosproc isAliasedLine {} { 44*dbd550edSchristos global viScreenId 45*dbd550edSchristos set line [viGetLine $viScreenId [lindex [viGetCursor $viScreenId] 0]] 46*dbd550edSchristos if {[string match [lindex [split $line :] 0] "*To"] == 0} { 47*dbd550edSchristos set addrs [lindex [split $line :] 1] 48*dbd550edSchristos foreach name [split $addrs ,] { 49*dbd550edSchristos isAliased [string trim $name] 50*dbd550edSchristos } 51*dbd550edSchristos } 52*dbd550edSchristos} 53*dbd550edSchristos 54*dbd550edSchristosproc aliased {target} { 55*dbd550edSchristos set found 0 56*dbd550edSchristos set aliasFile [open "~/Mail/aliases" r] 57*dbd550edSchristos while {[gets $aliasFile line] >= 0} { 58*dbd550edSchristos set name [lindex [split $line :] 0] 59*dbd550edSchristos set address [lindex [split $line :] 1] 60*dbd550edSchristos if {[string compare $target [string trim $address]] == 0} { 61*dbd550edSchristos set found 1 62*dbd550edSchristos break 63*dbd550edSchristos } 64*dbd550edSchristos } 65*dbd550edSchristos close $aliasFile 66*dbd550edSchristos 67*dbd550edSchristos return $found 68*dbd550edSchristos} 69*dbd550edSchristos 70*dbd550edSchristosproc isAliased {target} { 71*dbd550edSchristos global viScreenId 72*dbd550edSchristos set found [aliased $target] 73*dbd550edSchristos 74*dbd550edSchristos if {$found} { 75*dbd550edSchristos viMsg $viScreenId "$target is aliased to [string trim $name]" 76*dbd550edSchristos } else { 77*dbd550edSchristos viMsg $viScreenId "$target not aliased" 78*dbd550edSchristos } 79*dbd550edSchristos} 80*dbd550edSchristos 81*dbd550edSchristosproc appendAlias {target address} { 82*dbd550edSchristos if {![aliased $target]} { 83*dbd550edSchristos set aliasFile [open "~/Mail/aliases" a] 84*dbd550edSchristos puts $aliasFile "$target: $address" 85*dbd550edSchristos } 86*dbd550edSchristos close $aliasFile 87*dbd550edSchristos} 88*dbd550edSchristos 89*dbd550edSchristosproc expand {} { 90*dbd550edSchristos global viScreenId 91*dbd550edSchristos set row [lindex [viGetCursor $viScreenId] 0]] 92*dbd550edSchristos set column [lindex [viGetCursor $viScreenId] 1]] 93*dbd550edSchristos set line [viGetLine $viScreenId $row] 94*dbd550edSchristos while {$column < [string length $line] && \ 95*dbd550edSchristos [string index $line $column] != ' '} { 96*dbd550edSchristos append $target [string index $line $column] 97*dbd550edSchristos incr $column 98*dbd550edSchristos } 99*dbd550edSchristos set found [isValid $target] 100*dbd550edSchristos} 101*dbd550edSchristos 102*dbd550edSchristosproc cite {} { 103*dbd550edSchristos global viScreenId 104*dbd550edSchristos global viStartLine 105*dbd550edSchristos global viStopLine 106*dbd550edSchristos for {set i $viStartLine} {$i <= $viStopLine} {incr i} { 107*dbd550edSchristos set newLine "> " 108*dbd550edSchristos append newLine [viGetLine $viScreenId $i] 109*dbd550edSchristos viSetLine $viScreenId $i $newLine 110*dbd550edSchristos } 111*dbd550edSchristos} 112*dbd550edSchristos 113*dbd550edSchristosglobal viScreenId 114*dbd550edSchristosviMapKey $viScreenId isAliasedLine 115*dbd550edSchristosviMapKey $viScreenId validLine 116