diff --git a/src/conio/cterm.c b/src/conio/cterm.c index c463386094edac9daed54e9e90dde24045510dcf..fa45a1fd6e140b553c12d3589b3fe9b0e343cded 100644 --- a/src/conio/cterm.c +++ b/src/conio/cterm.c @@ -870,7 +870,7 @@ void cterm_init(int height, int width, int xpos, int ypos, int backlines, unsign cterm.backpos=0; cterm.backlines=backlines; cterm.scrollback=scrollback; - cterm.log=LOG_NONE; + cterm.log=CTERM_LOG_NONE; cterm.logfile=NULL; if(cterm.scrollback!=NULL) memset(cterm.scrollback,0,cterm.width*2*cterm.backlines); @@ -895,7 +895,7 @@ void ctputs(char *buf) _wscroll=0; cx=wherex(); cy=wherey(); - if(cterm.log==LOG_ASCII) + if(cterm.log==CTERM_LOG_ASCII) fputs(buf, cterm.logfile); for(p=buf;*p;p++) { switch(*p) { @@ -991,7 +991,7 @@ char *cterm_write(unsigned char *buf, int buflen, char *retbuf, int retsize, int case 0: break; default: - if(cterm.log==LOG_RAW) + if(cterm.log==CTERM_LOG_RAW) fwrite(buf, buflen, 1, cterm.logfile); prn[0]=0; for(j=0;j<buflen;j++) { @@ -1023,6 +1023,8 @@ char *cterm_write(unsigned char *buf, int buflen, char *retbuf, int retsize, int case 7: /* Beep */ ctputs(prn); prn[0]=0; + if(cterm.log==CTERM_LOG_ASCII) + fputs("\t", cterm.logfile); #ifdef __unix__ putch(7); #else @@ -1032,6 +1034,8 @@ char *cterm_write(unsigned char *buf, int buflen, char *retbuf, int retsize, int case 12: /* ^L - Clear screen */ ctputs(prn); prn[0]=0; + if(cterm.log==CTERM_LOG_ASCII) + fputs("\t", cterm.logfile); clearscreen(cterm.attr); gotoxy(1,1); break; @@ -1043,6 +1047,8 @@ char *cterm_write(unsigned char *buf, int buflen, char *retbuf, int retsize, int case '\t': ctputs(prn); prn[0]=0; + if(cterm.log==CTERM_LOG_ASCII) + fputs("\t", cterm.logfile); for(k=0;k<11;k++) { if(cterm_tabs[k]>wherex()) { gotoxy(cterm_tabs[k],wherey()); @@ -1072,7 +1078,24 @@ char *cterm_write(unsigned char *buf, int buflen, char *retbuf, int retsize, int return(retbuf); } +int cterm_openlog(char *logfile, int logtype) +{ + cterm.logfile=fopen(logfile, "a"); + if(cterm.logfile==NULL) + return(0); + cterm.log=logtype; + return(1); +} + +void cterm_closelog() +{ + if(cterm.logfile != NULL) + fclose(cterm.logfile); + cterm.logfile=NULL; + cterm.log=CTERM_LOG_NONE; +} + void cterm_end(void) { - /* Nothing to be done here at the moment */ + cterm_closelog(); } diff --git a/src/conio/cterm.h b/src/conio/cterm.h index 61cf760ec69ae2f3920fe16fdf5d08cc1834f87e..c6d3d67accd0873f0876ae004406dfa36dcdd033 100644 --- a/src/conio/cterm.h +++ b/src/conio/cterm.h @@ -43,11 +43,14 @@ enum { }; enum { - LOG_NONE - ,LOG_ASCII - ,LOG_RAW + CTERM_LOG_NONE + ,CTERM_LOG_ASCII + ,CTERM_LOG_RAW }; +#define CTERM_LOG_MASK 0x7f +#define CTERM_LOG_PAUSED 0x80 + struct cterminal { int height; int width; @@ -83,6 +86,8 @@ extern struct cterminal cterm; void cterm_init(int height, int width, int xpos, int ypos, int backlines, unsigned char *scrollback); char *cterm_write(unsigned char *buf, int buflen, char *retbuf, int retsize, int *speed); +int cterm_openlog(char *logfile, int logtype); +void cterm_closelog(); void cterm_end(void); #ifdef __cplusplus }