1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
#
# RESDB -- Utility routines to manage the local resource database
bool procedure rdb_lookup (resdb, term, type, sname, ivorn, svcurl)
char resdb[ARB] #i resource database
char term[ARB] #i search term
char type[ARB] #i service type
char sname[ARB] #i short name
char ivorn[ARB] #i ivorn string
char svcurl[ARB] #i URL string
char typ[SZ_FNAME], alias[SZ_FNAME], bpass[SZ_FNAME], line[SZ_LINE]
char ivo[SZ_FNAME], shortname[SZ_FNAME], url[SZ_FNAME]
int fd, ip, i, lnum
int access(), open(), getline()
bool streq()
begin
if (access (resdb, 0, 0) == NO) {
call eprintf ("Error: cannot open resdb '%s'\n")
call pargstr (resdb)
return
}
call strlwr (term)
# Open the resource database
fd = open (resdb, READ_ONLY, TEXT_FILE)
for (lnum=0; getline (fd, line) != EOF; lnum=lnum+1) {
if (line[1] == '#' || line[1] == EOS || line[1] == '\n')
next
call aclrc (type, SZ_FNAME)
call aclrc (alias, SZ_FNAME)
call aclrc (bpass, SZ_FNAME)
call aclrc (ivo, SZ_FNAME)
call aclrc (url, SZ_FNAME)
call aclrc (shortname, SZ_FNAME)
ip = 1
for (i=1; line[ip] != ','; i=i+1) { # type string
typ[i] = line[ip]
ip = ip + 1
}
call strlwr (typ)
ip = ip + 1
for (i=1; line[ip] != ','; i=i+1) { # alias string
alias[i] = line[ip]
ip = ip + 1
}
call strlwr (alias)
ip = ip + 1
for (i=1; line[ip] != ','; i=i+1) { # bandpass string
bpass[i] = line[ip]
ip = ip + 1
}
call strlwr (typ)
ip = ip + 1
for (i=1; line[ip] != ','; i=i+1) { # ivorn string
ivo[i] = line[ip]
ip = ip + 1
}
call strlwr (typ)
ip = ip + 1
for (i=1; line[ip] != ','; i=i+1) { # ShortName string
shortname[i] = line[ip]
ip = ip + 1
}
call strlwr (typ)
ip = ip + 1
for (i=1; line[ip] != ','; i=i+1) { # URL string
url[i] = line[ip]
ip = ip + 1
}
call strlwr (typ)
ip = ip + 1
if (type[1] == EOS || typ[1] == type[1]) {
if (streq (alias, term)) {
call strcpy (shortname, sname, SZ_FNAME)
call strcpy (ivo, ivorn, SZ_FNAME)
call strcpy (url, svcurl, SZ_FNAME)
return (true)
}
}
}
call close (fd)
return (false)
end
|