File: ttywrite.x

package info (click to toggle)
iraf 2.18.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 86,000 kB
  • sloc: ansic: 115,890; fortran: 74,576; lisp: 18,888; yacc: 5,642; sh: 961; lex: 596; makefile: 509; asm: 159; csh: 54; xml: 33; sed: 4
file content (60 lines) | stat: -rw-r--r-- 2,067 bytes parent folder | download | duplicates (7)
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
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

include	<ctype.h>
include	<chars.h>
include	"tty.h"

# TTYWRITE -- Put a counted control string to the output file.  The control
# string consists of an optional prefix specifying the delay required, followed
# by the chars to be sent to the terminal.  If the delay is given as a simple
# integer number (i.e., ":cl=50\E"), it specifies the delay in milliseconds.
# If the delay number is followed by an asterisk (i.e., ":cd=3.5*\E^C:") it
# specifies the delay in milliseconds per line affected by the operation.
# In the latter case, the AFFLNCNT argument is used to compute the total
# delay.  Delays are generated by writing a sequence of pad characters
# (usually NUL); the number of pad chars sent to achieve a particular delay
# depends on the baud rate.

procedure ttywrite (fd, tty, ctrlstr, nchars, afflncnt)

int	fd			# output file
pointer	tty			# terminal descriptor
char	ctrlstr[ARB]		# control sequence to be output
int	nchars			# nchars in control string
int	afflncnt		# number of lines affected

double	dval
int	ip, delay, junk, ch
int	ctod(), and()
errchk	putci

begin
	# Determine number of milliseconds of delay req'd, and position ip
	# to start of control string.  Do not use CTOD to test whether or not
	# the string begins with a number, because it is not permissable to
	# skip whitespace (blank and tab are legal output chars).

	ip = 1
	if (IS_DIGIT (ctrlstr[ip])) {
	    junk = ctod (ctrlstr, ip, dval)
	    if (ctrlstr[ip] == '*') {
		delay = dval * afflncnt + 0.5
		ip = ip + 1
	    } else
		delay = dval
	} else
	    delay = 0

	# Output the control sequence, passing only the first seven bits of
	# each character.  This is where the \200 escapes get turned into NULs.
	# Do not use MOD to do the masking because 200B is a negative integer
	# if CHAR is implemented as 8 bits.

	for (;  ip <= nchars;  ip=ip+1) {
	    ch = ctrlstr[ip]
	    call putci (fd, and (ch, 177B))
	}

	# Add padding if needed to generate delay.
	call ttydelay (fd, tty, delay)
end