#include <ncbi.h>
#include <gishlib.h>
#ifdef VAR_ARGS
#include <varargs.h>
#else
#include <stdarg.h>
#endif

void
aputc(ch, fp)
	int	ch;
	FILE	*fp;
{
	if (fp != NULL)
		putc(ch, fp);
	putc(ch, stdout);
	return;
}

int
#ifdef VAR_ARGS
aprintf(fp, fmt, va_alist)
	FILE	*fp;
	CharPtr	fmt;
	va_dcl
#else
aprintf(FILE *fp, CharPtr fmt, ...)
#endif
{
	va_list	args;
	int		rc1, rc2;

	if (fp != NULL) {
#ifdef VAR_ARGS
		va_start(args);
#else
		va_start(args, fmt);
#endif
		rc1 = vfprintf(fp, fmt, args);
		va_end(args);
	}

#ifdef VAR_ARGS
	va_start(args);
#else
	va_start(args, fmt);
#endif
	rc2 = vfprintf(stdout, fmt, args);
	va_end(args);

	return (fp != NULL ? rc1 : rc2);
}

int
awrite(ptr, size, nitems, fp)
	Nlm_VoidPtr	ptr;
	size_t	size;
	size_t	nitems;
	FILE	*fp;
{
	int		rc1;

	if (fp != NULL) {
		rc1 = fwrite(ptr, size, nitems, fp);
		fwrite(ptr, size, nitems, stdout);
		return rc1;
	}
	return fwrite(ptr, size, nitems, stdout);
}
