home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
languags
/
xlisp
/
xlisp11.ark
/
XLIO.C
< prev
next >
Wrap
Text File
|
1986-10-12
|
2KB
|
101 lines
/* xlio - xlisp i/o routines */
#ifdef AZTEC
#include "a:stdio.h"
#else
#include <stdio.h>
#endif
#include "xlisp.h"
/* global variables */
int (*xlgetc)();
int xlpvals;
int xlplevel;
/* local variables */
static int prompt;
static FILE *ifp;
/* tgetc - get a character from the terminal */
static int tgetc()
{
int ch;
/* prompt if necessary */
if (prompt) {
if (xlplevel > 0)
printf("%d> ",xlplevel);
else
printf("> ");
prompt = FALSE;
}
/* get the character */
if ((ch = getc(stdin)) == '\n')
prompt = TRUE;
/* return the character */
return (ch);
}
/* xltin - setup terminal input */
int xltin(flag)
int flag;
{
/* flush line if flag is set */
if (flag & !prompt)
while (tgetc() != '\n')
;
/* initialize */
prompt = TRUE;
xlplevel = 0;
xlgetc = tgetc;
xlpvals = TRUE;
}
/* fgetcx - get a character from a file */
static int fgetcx()
{
int ch;
/* get a character */
if ((ch = getc(ifp)) <= 0) {
xlgetc = tgetc;
xlpvals = TRUE;
return (tgetc());
}
/* return it */
return (ch);
}
/* xlfin - setup file input */
xlfin(str)
char *str;
{
#ifdef DEFEXT
char fname[100];
/* create the file name */
strcpy(fname,str);
/* check for extension */
if (strchr(fname,'.') == 0)
strcat(fname,".lsp");
#else
#define fname str
#endif
/* open the input file */
if ((ifp = fopen(fname,"r")) == NULL) {
printf("can't open \"%s\" for input\n",fname);
return;
}
/* setup input from the file */
xlgetc = fgetcx;
xlpvals = FALSE;
}