This procedure is defined in the server but not documented via ad_proc or proc_doc and may be intended as a private interface.
The procedure is defined as:
proc mime::parseaddressaux {token string} {
# FRINK: nocheck
variable $token
upvar 0 $token state
variable addrtokenL
variable addrlexemeL
set state(input) $string
set state(glevel) 0
set state(buffer) {}
set state(lastC) LX_END
set state(tokenL) $addrtokenL
set state(lexemeL) $addrlexemeL
set result {}
while {[addr_next $token]} {
if {[set tail $state(domain)] ne {}} {
set tail @$state(domain)
} else {
set tail @[info hostname]
}
if {[set address $state(local)] ne {}} {
#TODO: this path is not covered by tests
append address $tail
}
if {$state(phrase) ne {}} {
#TODO: this path is not covered by tests
set state(phrase) [string trim $state(phrase) \"]
foreach t $state(tokenL) {
if {[string first $t $state(phrase)] >= 0} {
#TODO: is this quoting robust enough?
set state(phrase) \"$state(phrase)\"
break
}
}
set proper "$state(phrase) <$address>"
} else {
set proper $address
}
if {[set friendly $state(phrase)] eq {}} {
#TODO: this path is not covered by tests
if {[set note $state(comment)] ne {}} {
if {[string first ( $note] == 0} {
set note [string trimleft [string range $note 1 end]]
}
if {[string last ) $note] == [set len [expr {[string length $note] - 1}]]} {
set note [string range $note 0 [expr {$len - 1}]]
}
set friendly $note
}
if {($friendly eq {}) && ([set mbox $state(local)] ne {})} {
#TODO: this path is not covered by tests
set mbox [string trim $mbox \"]
if {[string first / $mbox] != 0} {
set friendly $mbox
} elseif {[set friendly [addr_x400 $mbox PN]] ne {}} {
} elseif {([set friendly [addr_x400 $mbox S]] ne {}) && ([set g [addr_x400 $mbox G]] ne {})} {
set friendly "$g $friendly"
}
if {$friendly eq {}} {
set friendly $mbox
}
}
}
set friendly [string trim $friendly \"]
lappend result [list address $address comment $state(comment) domain $state(domain) error $state(error) friendly $friendly group $state(group) local $state(local) memberP $state(memberP) phrase $state(phrase) proper $proper route $state(route)]
}
unset state(input) state(glevel) state(buffer) state(lastC) state(tokenL) state(lexemeL)
return $result
}