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
|
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
include <printf.h>
# FPRNTF -- Initiate a formatted print. Called by FPRINTF, SPRINTF, etc.
# Check that the previous print has completed, initialize the current
# print, and advance to the first format specification (if any).
procedure fprntf (new_fd, format_string, file_type)
int new_fd, file_type
char format_string[ARB]
include "fmt.com"
begin
# Printf is not reentrant. An expression in a PARG_ call must not
# directly or indirectly call any of the printf entry points. There
# must be a PARG_ for each "%w.dC" format specification in the format
# string. Errors result in lost output, but are otherwise harmless,
# and are diagnosed below.
if (format[ip] != EOS) {
call putline (STDERR, "Warning: Incomplete or reentrant printf\n")
call fmt_err ("Old ", format, ip)
call fmt_err ("New ", format_string, ARB)
while (format[ip] != EOS) # discard rest of format string
ip = ip + 1
call fpradv() # possibly close mem file
}
fd = new_fd # normal initialization
ip = 1
col = 1
fmt_state = FMT_START # initialize FPRFMT state
ofile_type = file_type
call strcpy (format_string, format, SZ_OBUF)
call fpradv()
end
|