aboutsummaryrefslogtreecommitdiff
path: root/sys/mtio/mtencode.x
blob: b6bf6b0f512ca536c3564b3cbb1a14162609f3eb (plain) (blame)
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
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

# MTENCODE -- Construct a full magtape device specification.  This routine is
# the opposite of MTPARSE.  If the file and record numbers are to be omitted
# from the output mtname they should be passed as ERR.

procedure mtencode (outstr, maxch, device, fileno, recno, attrl)

char	outstr[ARB]			#O magtape device specification
int	maxch				#I max chars out
char	device[ARB]			#I device name (incl node)
int	fileno, recno			#I file and record numbers, or ERR
char	attrl[ARB]			#I tapecap attributes

int	op
int	gstrcpy()
int	itoc()

begin
	if (fileno != ERR || recno != ERR || attrl[1] != EOS) {
	    op = gstrcpy (device, outstr, maxch) + 1
	    outstr[op] = '[';  op = op + 1 
	    if (fileno != ERR) {
		if (fileno == EOT)
		    op = op + gstrcpy ("EOT", outstr[op], maxch-op+1)
		else
		    op = op + itoc (fileno, outstr[op], maxch-op+1)
	    }
	    if (recno != ERR) {
		outstr[op] = '.';  op = op + 1
		op = op + itoc (recno, outstr[op], maxch-op+1)
	    }
	    if (attrl[1] != EOS) {
		if (attrl[1] != ':') {
		    outstr[op] = ':'
		    op = op + 1
		}
		op = op + gstrcpy (attrl, outstr[op], maxch-op+1)
	    }
	    outstr[op] = ']';  op = op + 1
	    outstr[op] = EOS
	} else
	    call strcpy (device, outstr, maxch)
end