/*
Copyright © 1998, 1999 Lucent Technologies Inc. All rights reserved.
Revisions Copyright © 1999, 2000 Vita Nuova Limited. All rights reserved.
Revisions Copyright © 2001 Norman Ramsey. All rights reserved.
*/
#include "lib9.h"
#define SIZE 8192
extern int printcol;
static int errcount = { 0 };
static char errmsg[] = "print errors";
int _logging;
extern void logmsg(int fd, char *s);
int
print(char *fmt, ...)
{
char buf[SIZE], *out;
va_list arg;
int n;
va_start(arg, fmt);
out = doprint(buf, buf+SIZE, fmt, arg);
va_end(arg);
if(_logging) {
n = (int)(out-buf);
logmsg(1, buf); /* fear not, doprint null-terminates */
}
else {
n = write(1, buf, (int)(out-buf));
if(n < 0)
if(++errcount >= 10)
exits(errmsg);
}
return n;
}
int
fprint(int f, char *fmt, ...)
{
char buf[SIZE], *out;
va_list arg;
int n;
va_start(arg, fmt);
out = doprint(buf, buf+SIZE, fmt, arg);
va_end(arg);
if(_logging && (f==1 || f==2)) { /* only log stdout and stderr */
n = (int)(out-buf);
logmsg(f, buf); /* fear not, doprint null-terminates */
}
else {
n = write(f, buf, (long)(out-buf));
if(n < 0)
if(++errcount >= 10)
exits(errmsg);
}
return n;
}
#if 0
int
sprint(char *buf, char *fmt, ...)
{
char *out;
va_list arg;
int scol;
scol = printcol;
va_start(arg, fmt);
out = doprint(buf, buf+SIZE, fmt, arg);
va_end(arg);
printcol = scol;
return out-buf;
}
int
snprint(char *buf, int len, char *fmt, ...)
{
char *out;
va_list arg;
int scol;
scol = printcol;
va_start(arg, fmt);
out = doprint(buf, buf+len, fmt, arg);
va_end(arg);
printcol = scol;
return out-buf;
}
#endif
syntax highlighted by Code2HTML, v. 0.9.1