/*
 * Copyright (1987) Jeff Elman.  University of California, San Diego
 * This software may be redistributed without charge; this notice
 * should be preserved.
 */

#include <stdio.h>
#include <math.h>
#include <sys/types.h>
#include <sys/file.h>
#include <sys/types.h>
#ifdef X
#include "X/box.h"
#endif
#include "defs.h"

int
ransi()
{
	extern	int ndtokens;
	extern long random();
	int	val;

	val = (random() >> 8) % ndtokens;
	if (val < 0)
		val = -val;
	return val;
}

FILE *
rootfile(target, ext, mode)
	char	*target;
	char	*ext;
	char	*mode;
{
	extern	char fileroot[];
	FILE	*fp;

	sprintf(target, "%s.%s", fileroot, ext);
	if ((fp = fopen(target, mode)) == 0) {
		perror(target);
		if (*mode == 'r')
			fprintf(stderr, "File missing or protected\n");
		else if (*mode == 'w')
			fprintf(stderr, "Can't overwrite or create\n");
		exit(0);
	}
	return fp;
}

inputerr(name, str)
	char	*name;
	char	*str;
{
	fprintf(stderr, "Syntax error in %s; %s area\n", name, str);
	fflush(stderr);
	exit(0);
}

char *
getline(s)
char *s;
{
	register c;
	register char *cs;

	fflush(stdout);
	cs = s;
	while ((c = getc(stdin)) != '\n' && c != EOF)
		*cs++ = c;
	if (c == EOF && cs==s)
		return(NULL);
	*cs++ = '\0';
	return(s);
}

putline(s)
register char *s;
{
	register c;

	while (c = *s++)
		putc(c, stdout);
	return(putc('\n', stdout));
}

lzero(dst, nwords)
	register long *dst;
	register int nwords;
{
	while (nwords--)
		*dst++ = 0L;
}
