[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.7 and 1.18

version 1.7, 2003/11/23 13:16:30 version 1.18, 2020/10/07 10:45:45
Line 1 
Line 1 
 /*$OpenXM: OpenXM/src/kan96xx/plugin/file2.c,v 1.6 2003/11/18 11:08:27 takayama Exp $ */  /*$OpenXM: OpenXM/src/kan96xx/plugin/file2.c,v 1.17 2020/10/06 11:33:47 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
   #include <string.h>
 #include <sys/time.h>  #include <sys/time.h>
 #include <sys/types.h>  #include <sys/types.h>
 #include <unistd.h>  #include <unistd.h>
   #include <signal.h>
   #include <errno.h>
   #include <stdlib.h>
 #include "file2.h"  #include "file2.h"
   #include "mysig.h"
   #include "sm1Socket.h"
   
 /* If you use file2 standalone to output string,  /* If you use file2 standalone to output string,
     make the following dummy definition;      make the following dummy definition;
 int KsocketSelect0(int a,int b) { return(0); }  int KsocketSelect0(int a,int b) { return(0); }
 int oxSocketSelect0(int a,int b) { return(0); }  int oxSocketSelect0(int a,int b) { return(0); }
 or define FORSTRING  or define FORSTRING
   Real oxSocketSelect0 is defined in kan96xx/plugin/mytcpio.c
 */  */
 #ifdef  FORSTRING  #ifdef  FORSTRING
 #define KsocketSelect0(a,b) 0  #define KsocketSelect0(a,b) 0
Line 17  or define FORSTRING
Line 24  or define FORSTRING
 #endif  #endif
   
 #ifdef KXX  #ifdef KXX
 #define GC_malloc(n) malloc(n)  #define sGC_malloc(n) malloc(n)
   int oxSocketSelect0(int fd,int t);
 #else  #else
 void *GC_malloc(int size);  void *sGC_malloc(int size);
 #endif  #endif
 int WatchStream = 0;  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
Line 49  FILE2 *fp2open(int fd) {
Line 57  FILE2 *fp2open(int fd) {
   if (debug1) {    if (debug1) {
     printf("fp2open is called. \n");      printf("fp2open is called. \n");
   }    }
   fp2 = (FILE2 *) GC_malloc(sizeof(FILE2));    fp2 = (FILE2 *) sGC_malloc(sizeof(FILE2));
   if (fd < -1) {    if (fd < -1) {
     fprintf(stderr,"fp2open  Invalid file descriptor %d\n",fd);      fprintf(stderr,"fp2open  Invalid file descriptor %d\n",fd);
     return(NULL);      return(NULL);
Line 66  FILE2 *fp2open(int fd) {
Line 74  FILE2 *fp2open(int fd) {
   fp2->readsize = 0;    fp2->readsize = 0;
   fp2->writepos = 0;    fp2->writepos = 0;
   fp2->limit = FILE2BSIZE;    fp2->limit = FILE2BSIZE;
   fp2->readBuf = (char *) GC_malloc(FILE2BSIZE);    fp2->readBuf = (char *) sGC_malloc(FILE2BSIZE);
   fp2->writeBuf = (char *) GC_malloc(FILE2BSIZE);    fp2->writeBuf = (char *) sGC_malloc(FILE2BSIZE);
   if ((fp2->readBuf == NULL) || (fp2->writeBuf == NULL)) {    if ((fp2->readBuf == NULL) || (fp2->writeBuf == NULL)) {
         fprintf(stderr,"fp2open. No more memory.\n");          fprintf(stderr,"fp2open. No more memory.\n");
         return(NULL);          return(NULL);
Line 77  FILE2 *fp2open(int fd) {
Line 85  FILE2 *fp2open(int fd) {
   fp2->mathcapList = NULL;    fp2->mathcapList = NULL;
   fp2->log_incomming = NULL;    fp2->log_incomming = NULL;
   fp2->log_outgoing = NULL;    fp2->log_outgoing = NULL;
     fp2->popened = 0;
     fp2->pfp = NULL;
   return(fp2);    return(fp2);
 }  }
   
   void fp2setfp(FILE2 *fp2,FILE *fp,int popened) {
     fp2->pfp = fp;
     fp2->popened = popened;
   }
   
 int fp2fflush(FILE2 *fp2) {  int fp2fflush(FILE2 *fp2) {
   int r;    int r;
   if (debug1) {    if (debug1) {
     printf("fp2fflush is called with FILE2 *%x.\n", (int )fp2);      printf("fp2fflush is called with FILE2 *%lx.\n", (long)fp2);
     fp2dumpBuffer(fp2);      fp2dumpBuffer(fp2);
     printf("--------------------------\n");      printf("--------------------------\n");
   }    }
   if (checkfp2(fp2,"fp2fflush ") == -1) return(-1);    if (checkfp2(fp2,"fp2fflush ") == -1) return(-1);
   if (fp2->fd == -1) return(0);    if (fp2->fd == -1) return(0);
   if (fp2->writepos > 0) {    if (fp2->writepos > 0) {
           mysignal(SIGPIPE,SIG_IGN);
     r = write(fp2->fd,fp2->writeBuf,fp2->writepos);      r = write(fp2->fd,fp2->writeBuf,fp2->writepos);
           mysignal(SIGPIPE,SIG_DFL);
     fp2->writepos = 0;      fp2->writepos = 0;
     if (r <= 0) {      if (r <= 0) {
       fprintf(stderr,"fp2fflush(): write failed on %d.\n",fp2->fd);        fprintf(stderr,"fp2fflush(): write failed on %d.\n",fp2->fd);
             if (errno == EPIPE) {
                   fprintf(stderr,"Your peer is closed --- SIGPIPE. Closing this fp2.\n");
                   fp2fclose(fp2);
                   return r;
             }
     }      }
     return(r);      return(r);
   }else{    }else{
Line 111  int fp2fclose(FILE2 *fp2) {
Line 132  int fp2fclose(FILE2 *fp2) {
     fprintf(stderr,"fp2fclose: flush error.\n");      fprintf(stderr,"fp2fclose: flush error.\n");
     return(-1);      return(-1);
   }    }
   return(close(fp2->fd));    if (fp2->pfp != NULL) {
           if (fp2->popened) {
         return pclose(fp2->pfp);
           } else return fclose(fp2->pfp);
     }
     else return(close(fp2->fd));
 }  }
   
 int fp2fputc(int c,FILE2 *fp2) {  int fp2fputc(int c,FILE2 *fp2) {
   FILE *fp;    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 = %lx.\n",(long) fp2);
   }    }
   if (fp2->watch || WatchStream) {    if (fp2->watch || WatchStream) {
     if (fp2->watch) fp = fp2->watchFile;      if (fp2->watch) fp = fp2->watchFile;
Line 224  int fp2dumpBuffer(FILE2 *fp2) {
Line 250  int fp2dumpBuffer(FILE2 *fp2) {
 int fp2clearReadBuf(FILE2 *fp2) {  int fp2clearReadBuf(FILE2 *fp2) {
   fd_set readfds;    fd_set readfds;
   struct timeval timeout;    struct timeval timeout;
   extern int errno;  
   int fd;    int fd;
 #define TMP00SIZE  2000  #define TMP00SIZE  2000
   char tmp00[TMP00SIZE];    char tmp00[TMP00SIZE];
Line 265  int fp2clearReadBuf(FILE2 *fp2) {
Line 290  int fp2clearReadBuf(FILE2 *fp2) {
 int fp2write(FILE2 *os, char *data, int size) {  int fp2write(FILE2 *os, char *data, int size) {
   int i,r;    int i,r;
   for (i=0; i<size; i++) {    for (i=0; i<size; i++) {
     r = fp2fputc(data[i],os);      r = fp2fputc((unsigned char)(data[i]),os);
   }    }
   return(r);    return(r);
 }  }
Line 329  static int fp2fputcString(int c,FILE2 *fp2) {
Line 354  static int fp2fputcString(int c,FILE2 *fp2) {
         return(-1);          return(-1);
   }    }
   newsize = (fp2->limit)*2;    newsize = (fp2->limit)*2;
   newwrite = (char *)GC_malloc(newsize);    newwrite = (char *)sGC_malloc(newsize);
   newread = (char *)GC_malloc(newsize);    newread = (char *)sGC_malloc(newsize);
   if ((newwrite == NULL) || (newread == NULL)) {    if ((newwrite == NULL) || (newread == NULL)) {
         fprintf(stderr,"fp2fputcString: No more memory.\n");          fprintf(stderr,"fp2fputcString: No more memory.\n");
         return(-1);          return(-1);
Line 358  char *fp2fcloseInString(FILE2 *fp2, int *sizep)
Line 383  char *fp2fcloseInString(FILE2 *fp2, int *sizep)
   }    }
 }  }
   
   int fp2fputs(char *s,FILE2 *fp) {
     int i,n;
     n = strlen(s);
     for (i=0; i<n; i++) {
           if (fp2fputc((unsigned char)(s[i]),fp) < 0) return(-1);
     }
     return(0);
   }
   
 /* Sample program  FORSTRING  /* Sample program  FORSTRING
  FILE2 *fp2;   FILE2 *fp2;
  int c;   int c;
Line 375  char *fp2fcloseInString(FILE2 *fp2, int *sizep)
Line 409  char *fp2fcloseInString(FILE2 *fp2, int *sizep)
     ....      ....
  }   }
 */  */
   

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.18

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