=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/plugin/file2.c,v retrieving revision 1.2 retrieving revision 1.5 diff -u -p -r1.2 -r1.5 --- OpenXM/src/kan96xx/plugin/file2.c 1999/11/18 00:54:17 1.2 +++ OpenXM/src/kan96xx/plugin/file2.c 2003/11/17 05:45:47 1.5 @@ -1,4 +1,4 @@ -/*$OpenXM$ */ +/*$OpenXM: OpenXM/src/kan96xx/plugin/file2.c,v 1.4 2001/05/04 01:06:30 takayama Exp $ */ #include #include #include @@ -56,6 +56,8 @@ FILE2 *fp2open(int fd) { fp2->watch = 0; fp2->watchFile = NULL; fp2->mathcapList = NULL; + fp2->log_incomming = NULL; + fp2->log_outgoing = NULL; return(fp2); } @@ -98,15 +100,16 @@ int fp2fputc(int c,FILE2 *fp2) { printf("fp2 = %x.\n",(int) fp2); } if (fp2->watch || WatchStream) { - if (fp2->watch) fp = fp2->watchFile; - else fp = stderr; + if (fp2->watch) fp = fp2->watchFile; + else fp = stderr; if (c >= ' ' && c <='z') { - fprintf(fp," %2x(%c)-> ",c,c); + fprintf(fp," %2x(%c)-> ",c& 0xff,c); }else{ - fprintf(fp," %2x( )-> ",c); + fprintf(fp," %2x( )-> ",c& 0xff); } fflush(NULL); } + if (fp2->log_outgoing != NULL) fputc(c,fp2->log_outgoing); if (checkfp2(fp2," fp2fputc ") == -1) return(-1); (fp2->writeBuf)[fp2->writepos] = c; (fp2->writepos)++; @@ -127,15 +130,16 @@ int fp2fgetc(FILE2 *fp2) { fp2->readpos++; c = fp2->readBuf[fp2->readpos -1]; if (fp2->watch || WatchStream) { - if (fp2->watch) fp = fp2->watchFile; - else fp = stderr; + if (fp2->watch) fp = fp2->watchFile; + else fp = stderr; if (c >= ' ' && c <= 'z') { - fprintf(fp," %2x(%c) ",c,c); + fprintf(fp," %2x(%c) ",c,c); }else{ - fprintf(fp," %2x( ) ",c); + fprintf(fp," %2x( ) ",c); } fflush(NULL); } + if (fp2->log_incomming != NULL) fputc(c,fp2->log_incomming); return(c); }else{ fp2->readpos = 0; @@ -143,11 +147,12 @@ int fp2fgetc(FILE2 *fp2) { read(fp2->fd, fp2->readBuf, fp2->limit); if (fp2->readsize == 0) { if (fp2->watch || WatchStream) { - if (fp2->watch) fp = fp2->watchFile; - else fp = stderr; - fprintf(fp," <%2x ",c); - fflush(NULL); + if (fp2->watch) fp = fp2->watchFile; + else fp = stderr; + fprintf(fp," <%2x ",c); + fflush(NULL); } + if (fp2->log_incomming != NULL) fputc(c,fp2->log_incomming); return(-1); } else { @@ -217,11 +222,11 @@ int fp2clearReadBuf(FILE2 *fp2) { if (FD_ISSET(fd,&readfds)) { n = read(fd,tmp00, TMP00SIZE); if (n <= 0) { - fprintf(stderr,"fp2clearReadBuf: File is closed or read error.\n"); - return(-1); + fprintf(stderr,"fp2clearReadBuf: File is closed or read error.\n"); + return(-1); } if ( n < TMP00SIZE ) { - return(0); + return(0); } }else { return(0); @@ -271,3 +276,14 @@ int fp2stopWatch(FILE2 *fp2) } } +int fp2log(FILE2 *fp,FILE *incomming,FILE *outgoing) { + fp->log_incomming = incomming; + fp->log_outgoing = outgoing; + return 0; +} +int fp2stopLog(FILE2 *fp) { + if (fp->log_incomming != NULL) fclose(fp->log_incomming); + if (fp->log_outgoing != NULL) fclose(fp->log_outgoing); + fp->log_incomming = fp->log_outgoing = NULL; + return 0; +}