xref: /netbsd-src/external/bsd/nvi/dist/tcl_scripts/mailprocs.tcl (revision dbd550ed1a6686d6600f748306f9cc03d8cd4c94)
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