[BACK]Return to file2.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / plugin

Diff for /OpenXM/src/kan96xx/plugin/file2.c between version 1.1 and 1.6

version 1.1, 1999/10/08 02:12:05 version 1.6, 2003/11/18 11:08:27
Line 1 
Line 1 
   /*$OpenXM: OpenXM/src/kan96xx/plugin/file2.c,v 1.5 2003/11/17 05:45:47 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
 #include <sys/time.h>  #include <sys/time.h>
 #include <sys/types.h>  #include <sys/types.h>
Line 9 
Line 10 
 #else  #else
 void *GC_malloc(int size);  void *GC_malloc(int size);
 #endif  #endif
   int WatchStream = 0;
 /*  Note:  1997, 12/6   cf. SS475/kxx/openxxx.tex, SS475/memo1.txt  /*  Note:  1997, 12/6   cf. SS475/kxx/openxxx.tex, SS475/memo1.txt
     The functions in file2.c should not accept interruptions      The functions in file2.c should not accept interruptions
     during its critical operations.  The synchronization mechanism      during its critical operations.  The synchronization mechanism
Line 55  FILE2 *fp2open(int fd) {
Line 56  FILE2 *fp2open(int fd) {
   fp2->watch = 0;    fp2->watch = 0;
   fp2->watchFile = NULL;    fp2->watchFile = NULL;
   fp2->mathcapList = NULL;    fp2->mathcapList = NULL;
     fp2->log_incomming = NULL;
     fp2->log_outgoing = NULL;
   return(fp2);    return(fp2);
 }  }
   
Line 91  int fp2fclose(FILE2 *fp2) {
Line 94  int fp2fclose(FILE2 *fp2) {
 }  }
   
 int fp2fputc(int c,FILE2 *fp2) {  int fp2fputc(int c,FILE2 *fp2) {
     FILE *fp;
   if (debug1) {    if (debug1) {
     printf("fp2fputc is called with %2x, fp2->writepos=%d, ",c,fp2->writepos);      printf("fp2fputc is called with %2x, fp2->writepos=%d, ",c,fp2->writepos);
     printf("fp2 = %x.\n",(int) fp2);      printf("fp2 = %x.\n",(int) fp2);
   }    }
   if (fp2->watch) {    if (fp2->watch || WatchStream) {
       if (fp2->watch) fp = fp2->watchFile;
       else fp = stderr;
           fprintf(stderr,"put to <%x> ",fp2->fd); /* output the channel for debug */
     if (c >= ' ' && c <='z') {      if (c >= ' ' && c <='z') {
       fprintf(fp2->watchFile," %2x(%c)-> ",c,c);        fprintf(fp," %2x(%c)-> ",c& 0xff,c);
     }else{      }else{
       fprintf(fp2->watchFile," %2x( )-> ",c);        fprintf(fp," %2x( )-> ",c& 0xff);
     }      }
     fflush(NULL);      fflush(NULL);
   }    }
     if (fp2->log_outgoing != NULL) fputc(c,fp2->log_outgoing);
   if (checkfp2(fp2," fp2fputc ") == -1) return(-1);    if (checkfp2(fp2," fp2fputc ") == -1) return(-1);
   (fp2->writeBuf)[fp2->writepos] = c;    (fp2->writeBuf)[fp2->writepos] = c;
   (fp2->writepos)++;    (fp2->writepos)++;
Line 116  int fp2fputc(int c,FILE2 *fp2) {
Line 124  int fp2fputc(int c,FILE2 *fp2) {
   
 int fp2fgetc(FILE2 *fp2) {  int fp2fgetc(FILE2 *fp2) {
   int c;    int c;
     FILE *fp;
   /* printf("fp2fgetc is called. "); fflush(NULL); */    /* printf("fp2fgetc is called. "); fflush(NULL); */
   if (checkfp2(fp2," fp2fgetc ") == -1) return(-1);    if (checkfp2(fp2," fp2fgetc ") == -1) return(-1);
   if (fp2->readpos < fp2->readsize) {    if (fp2->readpos < fp2->readsize) {
     fp2->readpos++;      fp2->readpos++;
     c = fp2->readBuf[fp2->readpos -1];      c = fp2->readBuf[fp2->readpos -1];
     if (fp2->watch) {      if (fp2->watch || WatchStream) {
         if (fp2->watch) fp = fp2->watchFile;
         else fp = stderr;
         fprintf(fp,"get from <%x> ",fp2->fd); /* output the channel for debug*/
       if (c >= ' ' && c <= 'z') {        if (c >= ' ' && c <= 'z') {
         fprintf(fp2->watchFile," %2x(%c) ",c,c);          fprintf(fp," %2x(%c) ",c,c);
       }else{        }else{
         fprintf(fp2->watchFile," %2x( ) ",c);          fprintf(fp," %2x( ) ",c);
       }        }
       fflush(NULL);        fflush(NULL);
     }      }
       if (fp2->log_incomming != NULL) fputc(c,fp2->log_incomming);
     return(c);      return(c);
   }else{    }else{
     fp2->readpos = 0;      fp2->readpos = 0;
     fp2 ->readsize =      fp2 ->readsize =
       read(fp2->fd, fp2->readBuf, fp2->limit);        read(fp2->fd, fp2->readBuf, fp2->limit);
     if (fp2->readsize == 0) {      if (fp2->readsize == 0) {
       if (fp2->watch) {        if (fp2->watch || WatchStream) {
         fprintf(fp2->watchFile," <%2x ",c);          if (fp2->watch) fp = fp2->watchFile;
         fflush(NULL);          else fp = stderr;
           fprintf(fp," <%2x ",c);
           fflush(NULL);
       }        }
         if (fp2->log_incomming != NULL) fputc(c,fp2->log_incomming);
       return(-1);        return(-1);
     }      }
     else {      else {
Line 208  int fp2clearReadBuf(FILE2 *fp2) {
Line 224  int fp2clearReadBuf(FILE2 *fp2) {
     if (FD_ISSET(fd,&readfds)) {      if (FD_ISSET(fd,&readfds)) {
       n = read(fd,tmp00, TMP00SIZE);        n = read(fd,tmp00, TMP00SIZE);
       if (n <=  0) {        if (n <=  0) {
         fprintf(stderr,"fp2clearReadBuf: File is closed or read error.\n");          fprintf(stderr,"fp2clearReadBuf: File is closed or read error.\n");
         return(-1);          return(-1);
       }        }
       if ( n < TMP00SIZE ) {        if ( n < TMP00SIZE ) {
         return(0);          return(0);
       }        }
     }else {      }else {
       return(0);        return(0);
Line 262  int fp2stopWatch(FILE2 *fp2)
Line 278  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;
   }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.6

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>