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

File: [local] / OpenXM / src / kan96xx / plugin / file2.hh (download)

Revision 1.6, Thu Dec 16 08:42:14 2004 UTC (19 years, 5 months ago) by takayama
Branch: MAIN
CVS Tags: R_1_3_1-2, RELEASE_1_3_1_13b, RELEASE_1_2_3_12, RELEASE_1_2_3, KNOPPIX_2006, HEAD, DEB_REL_1_2_3-9
Changes since 1.5: +102 -2 lines

Calling gnuplot by using mkfifo, popen, ... to enable mouse actions.
Ref: gpReadMouseTest.c  in gnuplot.info

But, there still remains bug to open the fifo file.
In order to try the new implementation,   try
/gnuplot.callingMethod 1 def
in gnuplot.sm1

/* $OpenXM: OpenXM/src/kan96xx/plugin/file2.hh,v 1.6 2004/12/16 08:42:14 takayama Exp $ */
else if (strcmp(key,"fp2fdopen") == 0) {
  if (size != 2) errorKan1("%s\n","[(fp2fdopen)  obj] extension obj-fp2.");
  if (SecureMode) errorKan1("%s\n","Security violation for fp2fdopen.");
  obj1 = getoa(obj,1);
  if (obj1.tag != Sinteger) {
    errorKan1("%s\n","[(fp2fdopen)  file-descriptor-integer] extension obj-fp2.");
  }
  rob.tag = Sfile;
  rob.lc.str = MAGIC2 ;
  rob.rc.voidp = (void *) fp2open(KopInteger(obj1));
  
}
else if (strcmp(key,"fp2fflush") == 0) {
  if (size != 2) errorKan1("%s\n","[(fp2fflush) obj-fp2] extension 0.");
  obj1= getoa(obj,1);
  if (obj1.tag != Sfile) {
    errorKan1("%s\n","[(fp2fflush)  obj-fp2] extension 0.");
  }
  if (strcmp(obj1.lc.str,MAGIC2) != 0) {
    errorKan1("%s\n","[(fp2fflush)  obj-fp2] extension 0. obj-fp2 is not Sfile (FILE2).");
  }
  fp2fflush((FILE2 *) obj1.rc.voidp);
  rob = KpoInteger(0);
}
else if (strcmp(key,"fp2fclose") == 0) {
  if (size != 2) errorKan1("%s\n","[(fp2fclose) obj-fp2] extension r.");
  obj1= getoa(obj,1);
  if (obj1.tag != Sfile) {
    errorKan1("%s\n","[(fp2fclose)  obj-fp2] extension r.");
  }
  if (strcmp(obj1.lc.str,MAGIC2) != 0) {
    errorKan1("%s\n","[(fp2fclose)  obj-fp2] extension r. obj-fp2 is not Sfile (FILE2).");
  }
  rob = KpoInteger(fp2fclose((FILE2 *) obj1.rc.voidp));
}
else if (strcmp(key,"fp2fgetc") == 0) {
  if (size != 2) errorKan1("%s\n","[(fp2fgetc) obj-fp2] extension c.");
  obj1= getoa(obj,1);
  if (obj1.tag != Sfile) {
    errorKan1("%s\n","[(fp2fgetc)  obj-fp2] extension c.");
  }
  if (strcmp(obj1.lc.str,MAGIC2) != 0) {
    errorKan1("%s\n","[(fp2fgetc)  obj-fp2] extension c. obj-fp2 is not Sfile (FILE2).");
  }
  rob = KpoInteger(fp2fgetc((FILE2 *) obj1.rc.voidp));
}
else if (strcmp(key,"fp2fputc") == 0) {
  if (size != 3) errorKan1("%s\n","[(fp2fgetc) c obj-fp2] extension c.");
  obj1 = getoa(obj,1);
  if (obj1.tag != Sinteger) {
    errorKan1("%s\n","[(fp2fputc)  c-integer obj-fp2] extension c.");
  }
  obj2= getoa(obj,2);
  if (obj2.tag != Sfile) {
    errorKan1("%s\n","[(fp2fputc)  c obj-file-fp2] extension c.");
  }
  if (strcmp(obj2.lc.str,MAGIC2) != 0) {
    errorKan1("%s\n","[(fp2fputc)  c obj-fp2] extension c. obj-fp2 is not Sfile (FILE2).");
  }
  rob = KpoInteger(fp2fputc(obj1.lc.ival,(FILE2 *) obj2.rc.voidp));
}
else if (strcmp(key,"fp2fputs") == 0) {
  if (size != 3) errorKan1("%s\n","[(fp2fgets) str obj-fp2] extension c.");
  obj1 = getoa(obj,1);
  if (obj1.tag != Sdollar) {
    errorKan1("%s\n","[(fp2fputs)  str obj-fp2] extension c.");
  }
  obj2= getoa(obj,2);
  if (obj2.tag != Sfile) {
    errorKan1("%s\n","[(fp2fputs)  str obj-file-fp2] extension c.");
  }
  if (strcmp(obj2.lc.str,MAGIC2) != 0) {
    errorKan1("%s\n","[(fp2fputs)  str obj-fp2] extension c. obj-fp2 is not Sfile (FILE2).");
  }
  rob = KpoInteger(fp2fputs(KopString(obj1),(FILE2 *) obj2.rc.voidp));
}
else if (strcmp(key,"fp2dumpBuffer") == 0) {
  if (size != 2) errorKan1("%s\n","[(fp2dumpBuffer) obj-fp2] extension c.");
  obj1= getoa(obj,1);
  if (obj1.tag != Sfile) {
    errorKan1("%s\n","[(fp2dumpBuffer)  obj-fp2] extension c.");
  }
  if (strcmp(obj1.lc.str,MAGIC2) != 0) {
    errorKan1("%s\n","[(fp2dumpBuffer)  obj-fp2] extension c. obj-fp2 is not Sfile (FILE2).");
  }
  rob = KpoInteger(fp2dumpBuffer((FILE2 *) obj1.rc.voidp));
}
else if (strcmp(key,"fp2openForRead") == 0) {
  if (size != 2) errorKan1("%s\n","[(fp2openForRead) name] extension c.");
  if (SecureMode) errorKan1("%s\n","Security violation for fp2openForRead.");
  obj1= getoa(obj,1);
  if (obj1.tag != Sdollar) {
    errorKan1("%s\n","[(fp2openForRead)  name-string] extension c.");
  }
  rob = KpoInteger(open(obj1.lc.str,O_RDONLY));
}
else if (strcmp(key,"fp2openForWrite") == 0) {
  if (size != 2) errorKan1("%s\n","[(fp2openForWrite) name] extension c.");
  if (SecureMode) errorKan1("%s\n","Security violation for fp2openForWrite.");
  obj1= getoa(obj,1);
  if (obj1.tag != Sdollar) {
    errorKan1("%s\n","[(fp2openForWrite)  name-string] extension c.");
  }
  rob = KpoInteger(creat(obj1.lc.str, S_IREAD|S_IWRITE|S_IRGRP|S_IROTH));
}
else if (strcmp(key,"fp2close") == 0) {
  if (size != 2) errorKan1("%s\n","[(fp2close) fd] extension c.");
  obj1= getoa(obj,1);
  if (obj1.tag != Sinteger) {
    errorKan1("%s\n","[(fp2close)  fd-integer] extension c.");
  }
  rob = KpoInteger(close(obj1.lc.ival));
}
else if (strcmp(key,"fp2clearReadBuf") == 0) {
  if (size != 2) errorKan1("%s\n","[(fp2ClearReadBuf) obj-fp2] extension c.");
  obj1= getoa(obj,1);
  if (obj1.tag != Sfile) {
    errorKan1("%s\n","[(fp2clearReadBuf)  obj-fp2] extension c.");
  }
  if (strcmp(obj1.lc.str,MAGIC2) != 0) {
    errorKan1("%s\n","[(fp2clearReadBuf)  obj-fp2] extension c. obj-fp2 is not Sfile (FILE2).");
  }
  rob = KpoInteger(fp2dumpBuffer((FILE2 *) obj1.rc.voidp));
  rob = KpoInteger(fp2clearReadBuf((FILE2 *)obj1.rc.voidp));
}
else if (strcmp(key,"fp2fcloseInString") == 0) {
  if (size != 2) errorKan1("%s\n","[(fp2closeInString) obj-fp2] extension s.");
  obj1= getoa(obj,1);
  if (obj1.tag != Sfile) {
    errorKan1("%s\n","[(fp2fcloseInString)  obj-fp2] extension s.");
  }
  if (strcmp(obj1.lc.str,MAGIC2) != 0) {
    errorKan1("%s\n","[(fp2fcloseInString)  obj-fp2] extension s. obj-fp2 is not Sfile (FILE2).");
  }
  {
    int mysize;
    rob = KpoString(fp2fcloseInString((FILE2 *) obj1.rc.voidp,&mysize));
  }
}
else if (strcmp(key,"fp2pushfile") == 0) {
  if (size != 2) errorKan1("%s\n","[(fp2pushfile) name] extension array-of-int.");
  if (SecureMode) errorKan1("%s\n","Security violation for fp2pushfile.");
  obj1= getoa(obj,1);
  if (obj1.tag != Sdollar) {
    errorKan1("%s\n","[(fp2pushfile)  name] extension array-of-int.");
  }
  {
    FILE *fp;
    int n,i,c;
    fp = fopen(obj1.lc.str,"r");
    if (fp == NULL) errorKan1("%s\n","fp2pushfile : file not found.");
    n = 0;
    while ((c = fgetc(fp)) != EOF) n++;
    fclose(fp);
    fp = fopen(obj1.lc.str,"r");
    rob = newObjectArray(n);
    i = 0;
    while ((c = fgetc(fp)) != EOF) {
      putoa(rob,i,KpoInteger(c));
      i++;
    }
    fclose(fp);
  }
}
else if (strcmp(key,"fp2select") == 0) {
  if (size != 3) errorKan1("%s\n","[(fp2select) obj-fp2 t] extension status.");
  obj1 = getoa(obj,2);
  obj1 = Kto_int32(obj1);
  if (obj1.tag != Sinteger) {
    errorKan1("%s\n","[(fp2select) obj-fp2 t] extension status.");
  }
  obj2= getoa(obj,1);
  if (obj2.tag != Sfile) {
    errorKan1("%s\n","[(fp2select) obj-fp2 t] extension status.");
  }
  if (strcmp(obj2.lc.str,MAGIC2) != 0) {
    errorKan1("%s\n","[(fp2select) obj-fp2 t] extension status. obj-fp2 is not Sfile (FILE2).");
  }
  rob = KpoInteger(fp2select((FILE2 *) obj2.rc.voidp,obj1.lc.ival));
}
else if (strcmp(key,"fp2fopen") == 0) {
  if (size != 3) errorKan1("%s\n","[(fp2fopen) name mode] extension obj-fp2.");
  if (SecureMode) errorKan1("%s\n","Security violation for fp2fopen.");
  obj1= getoa(obj,1);
  if (obj1.tag != Sdollar) {
    errorKan1("%s\n","[(fp2fopen) name-string mode] extension obj-fp2.");
  }
  obj2= getoa(obj,2); 
  if (obj2.tag != Sdollar) {
    errorKan1("%s\n","[(fp2fopen) name-string mode] extension obj-fp2.");
  }
  {
	FILE *fff;
	fff = fopen(KopString(obj1),KopString(obj2));
	if (fff == NULL) {
	  rob = NullObject;
	}else{
	  rob.tag = Sfile;
	  rob.lc.str = MAGIC2 ;
	  rob.rc.voidp = (void *) fp2open(fileno(fff));
      fp2setfp((FILE2 *) rob.rc.voidp, fff, 0);
	}
  }
}
else if (strcmp(key,"fp2mkfifo") == 0) {
  if (size != 2) errorKan1("%s\n","[(fp2mkfifo) name] extension obj-fp2.");
  if (SecureMode) errorKan1("%s\n","Security violation for fp2mkfifo.");
  obj1= getoa(obj,1);
  if (obj1.tag != Sdollar) {
    errorKan1("%s\n","[(fp2mkfifo) name-string] extension obj-fp2.");
  }
  {
	char *fname;
	fname = KopString(obj1);
	if (mkfifo(fname,0600)) {
	  rob = KpoInteger(-1);
	  if (errno != EEXIST) {
		perror(fname);
		unlink(fname);
	  }
	}else{
	  rob = KpoInteger(0);
	}
  }
}
else if (strcmp(key,"fp2popen") == 0) {
  if (size != 3) errorKan1("%s\n","[(fp2popen) name mode] extension obj-fp2.");
  if (SecureMode) errorKan1("%s\n","Security violation for fp2popen.");
  obj1= getoa(obj,1);
  if (obj1.tag != Sdollar) {
    errorKan1("%s\n","[(fp2popen) name-string mode] extension obj-fp2.");
  }
  obj2= getoa(obj,2); 
  if (obj2.tag != Sdollar) {
    errorKan1("%s\n","[(fp2popen) name-string mode] extension obj-fp2.");
  }
  {
	FILE *fff;
	fff = popen(KopString(obj1),KopString(obj2));
	if (fff == NULL) {
	  perror(KopString(obj1));
	  rob = NullObject;
	}else{
	  rob.tag = Sfile;
	  rob.lc.str = MAGIC2 ;
	  rob.rc.voidp = (void *) fp2open(fileno(fff));
      fp2setfp((FILE2 *) rob.rc.voidp, fff,1);
	}
  }
}