Switch to edit mode.
Name(s): extract_name1: "Usage: {name, position} = $dns_utils:extract_name(data, position)"
2: if (caller != this)
3: raise(E_PERM)
4: endif
5: {data, pos} = args
6: name = ""
7: while (!(data[pos] == 0 || data[pos] > 63))
8: name = encode_binary(name, @data[pos + 1..pos + data[pos]])
9: pos = pos + data[pos] + 1
10: name = name + "."
11: endwhile
12: if (data[pos])
13: suspend(0)
14: NewPos = (data[pos] - 192) * 256 + data[pos + 1] + 1
15: name = name + this:extract_name(data, NewPos)[1]
16: pos = pos + 2
17: else
18: pos = pos + 1
19: endif
20: if (name && name[$] == ".")
21: name = name[1..$ - 1]
22: endif
23: return {name, pos}
24: "Last modified by manta (#7165) on Mon Feb 28 01:50:19 2000 MST."
25: "This verb previously owned by manta (#7165), and chowned to $slacker upon dewizarding (Sat Aug 17 14:50:06 2002 MDT)."
26: "Last modified by Dax (#789) on Sat Aug 17 14:50:06 2002 MDT."