begin
option "-nocheck-nodiag"
include "inc:util.imp"
include "inc:fs.imp"
include "inc:fsutil.imp"
string (127)user list, user
routine try for mail(string (127) user)
constinteger Vax mail = 4
constinteger our port = 13
constinteger Vax port = 0
constinteger Vax station = 16_72
constinteger timeout = 5000; !Milliseconds
constinteger BEL = 7
integerfn HDX to I(string (15) s)
integer i, j
result = -1 if s = "" or s = "????"
i = 0
for j = 1, 1, length(s) cycle
i = i << 4 + charno(s, j) - '0'
repeat
result = i
end
bytearray request(0 : 19)
string (15) reply
integer l, i
request(0) = Vax mail
string(addr(request(1))) = user
ether open(our port, Vax station << 8 ! Vax port)
ether write(our port, request(0), 20)
l = cputime
cycle
-> OK if dtx & (1 << our port) # 0
repeatuntil cputime-l>=timeout
printstring("Vax timed out")
newline
etherclose(our port)
return
OK: l = ether read(our port, byteinteger(addr(reply) + 1), 15)
ether close(our port)
length(reply) = l
i = HDX to I(reply)
if i < 0 start
printstring("Vax does not know ".user)
else
printstring(user." has ")
if i = 0 then printstring("no new mail") elsestart
write(i, 0)
printstring(" new mail message")
print symbol('s') if i # 1
finish
finish
newline
end
user list = cliparam
user list = current user if user list=""
try for mail(user) while user list -> user.(",").user list
try for mail(user list)
endofprogram