home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Spezial / SPEZIAL2_97.zip / SPEZIAL2_97.iso / ANWEND / EDITOR / NVI179B / NVI179B.ZIP / tcl_scripts / mailprocs.tcl < prev    next >
Text File  |  1996-04-29  |  3KB  |  116 lines

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