[PD-cvs] externals/zexy/src freadln.c, 1.2, 1.3 fwriteln.c, 1.3, 1.4 zexyconf.h, 1.6, 1.7

Franz Zotter fzotter at users.sourceforge.net
Fri Aug 17 00:23:43 CEST 2007


Update of /cvsroot/pure-data/externals/zexy/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22281

Modified Files:
	freadln.c fwriteln.c zexyconf.h 
Log Message:
freadln:
repaired the file read error in freadln
and added the textfile/msgfile mode with ";"

fwriteln: 
added the textfile/msgfile compatible mode with ";"



Index: freadln.c
===================================================================
RCS file: /cvsroot/pure-data/externals/zexy/src/freadln.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** freadln.c	21 May 2007 12:03:39 -0000	1.2
--- freadln.c	16 Aug 2007 22:23:41 -0000	1.3
***************
*** 18,32 ****
  #include "zexy.h"
  
  #include <stdio.h>
  #include <string.h>
! #include <stdarg.h>
! #include <fcntl.h>
  
! #ifdef __WIN32__
! # include <io.h>
! #else
! # include <sys/types.h>
! # include <unistd.h>
! #endif
  
  #define MIN_FREADLN_LENGTH 10
--- 18,36 ----
  #include "zexy.h"
  
+ #ifdef __WIN32__
+ # define snprintf _snprintf
+ #endif
+ 
  #include <stdio.h>
  #include <string.h>
! //#include <stdarg.h>
! //#include <fcntl.h>
  
! //#ifdef __WIN32__
! //# include <io.h>
! //#else
! //# include <sys/types.h>
! //# include <unistd.h>
! //#endif
  
  #define MIN_FREADLN_LENGTH 10
***************
*** 49,55 ****
     char *x_filename;
     char *x_textbuf;
!    int x_textbuf_length;
     t_outlet *x_message_outlet;
     t_outlet *x_readybang_outlet;
  } t_freadln;
  
--- 53,63 ----
     char *x_filename;
     char *x_textbuf;
!    int  x_textbuf_length;
     t_outlet *x_message_outlet;
     t_outlet *x_readybang_outlet;
+ 
+    char linebreak_chr[3];
+ 
+    t_canvas *x_canvas;
  } t_freadln;
  
***************
*** 72,95 ****
  {
     char filenamebuf[MAXPDSTRING], *filenamebufptr;
!    int fd;
     freadln_close(x);
  
!    if(type!=gensym("cr")) {
       pd_error(x, "currently only 'cr' type files are implemented!");
       return;
!    }
  
     // directory, filename, extension, dirresult, nameresult, unsigned int size, int bin
!    if ((fd=open_via_path("",s->s_name,"", filenamebuf, &filenamebufptr, MAXPDSTRING,0))==-1) {
!       pd_error(x, "failed to open %128s", filenamebuf);
!       close(fd);
        return;
     }
     close(fd);
!    if (!(x->x_file=fopen(filenamebuf, "r"))) {
!       pd_error(x, "failed to open %128s",filenamebuf);
!       return;
!    }
!    if (!(x->x_filename=(char*)getbytes(sizeof(char)*strlen(filenamebuf)))) {
        pd_error(x, "out of memory");
        freadln_close(x);
--- 80,107 ----
  {
     char filenamebuf[MAXPDSTRING], *filenamebufptr;
!    char*dirname=canvas_getdir(x->x_canvas)->s_name;
!    int fd, len;
! 
     freadln_close(x);
  
! /*   if(type!=gensym("cr")) {
       pd_error(x, "currently only 'cr' type files are implemented!");
       return;
!    }*/
!    if (type==gensym("cr"))
!       strcpy(x->linebreak_chr,"\n");
!    else
!       strcpy(x->linebreak_chr,";\n");
!       
  
     // directory, filename, extension, dirresult, nameresult, unsigned int size, int bin
!    if ((fd=open_via_path(dirname,
! 	       s->s_name,"", filenamebuf, &filenamebufptr, MAXPDSTRING,0)) < 0 ) {
!       pd_error(x, "%s: failed to open %s", s->s_name, filenamebuf);
        return;
     }
     close(fd);
!    len=strlen(filenamebuf);
!    if (!(x->x_filename=(char*)getbytes(sizeof(char)*(len+strlen(s->s_name)+2)))) {
        pd_error(x, "out of memory");
        freadln_close(x);
***************
*** 97,100 ****
--- 109,118 ----
     }
     strcpy(x->x_filename,filenamebuf);
+    strcpy(x->x_filename+len,"/");
+    strcpy(x->x_filename+len+1,s->s_name);
+    if (!(x->x_file=fopen(x->x_filename, "r"))) {
+       pd_error("freadln: failed to open %128s",filenamebuf);
+       return;
+    }
     if (!(x->x_textbuf = (char *) getbytes (MIN_FREADLN_LENGTH * sizeof(char)))) {
        pd_error(x, "out of memory");
***************
*** 138,148 ****
  {
     int min_length=(x->x_textbuf_length < 1)?1:x->x_textbuf_length;
!    int ret_pos=0;
     t_binbuf *bbuf;
     t_atom *abuf;
     int abuf_length;
     t_symbol *s;
  
!    if (!x->x_file) {
        pd_error(x, "no file opened for reading");
        return;
--- 156,168 ----
  {
     int min_length=(x->x_textbuf_length < 1)?1:x->x_textbuf_length;
!    int linebreak_pos=0;
!    int items_read;
     t_binbuf *bbuf;
     t_atom *abuf;
     int abuf_length;
     t_symbol *s;
+    int rewind_after;
  
!    if (x->x_file < 0) {
        pd_error(x, "no file opened for reading");
        return;
***************
*** 150,156 ****
  
     do {
!       if (ret_pos==-1) {
! 	 min_length++;
! 	 fseek(x->x_file,-(long)(x->x_textbuf_length-1),SEEK_CUR);
        }
        if (!enlarge_cstr_if_required((const char**) &x->x_textbuf, &x->x_textbuf_length, min_length)) {
--- 170,176 ----
  
     do {
!       if (linebreak_pos==-1) {
! 	 min_length<<=1;
! 	 fseek(x->x_file,-(long)(x->x_textbuf_length),SEEK_CUR);
        }
        if (!enlarge_cstr_if_required((const char**) &x->x_textbuf, &x->x_textbuf_length, min_length)) {
***************
*** 160,170 ****
           return;
        }
!       if (!(fgets(x->x_textbuf, x->x_textbuf_length, x->x_file))) {
!          freadln_close(x);
!          outlet_bang(x->x_readybang_outlet);
!          return;
        }
!    } while ((ret_pos=cstr_char_pos(x->x_textbuf,'\n'))==-1);
!    x->x_textbuf[ret_pos-1]='\0';
     //post("analyzing \"%s\"",x->x_textbuf);
     if (!(bbuf=binbuf_new())) {
--- 180,200 ----
           return;
        }
!       if (!(items_read=fread(x->x_textbuf,sizeof(char),x->x_textbuf_length,x->x_file))) {
! 	 freadln_close(x);
! 	 outlet_bang(x->x_readybang_outlet);
! 	 return;
        }
!       x->x_textbuf[x->x_textbuf_length-1]=0;
!    } while (((linebreak_pos=cstr_char_pos(x->x_textbuf,x->linebreak_chr[0]))==-1) && 
! 	 !(items_read < x->x_textbuf_length));
! 
!    if (linebreak_pos-1  < items_read - strlen(x->linebreak_chr)) {
!       rewind_after=items_read-linebreak_pos;
!       post("rewinding by %d", rewind_after);
!       fseek(x->x_file,-(long)(rewind_after),SEEK_CUR);
!    }
!    if (linebreak_pos==-1) 
!       linebreak_pos=items_read;
!    x->x_textbuf[linebreak_pos-1]='\0';
     //post("analyzing \"%s\"",x->x_textbuf);
     if (!(bbuf=binbuf_new())) {
***************
*** 173,177 ****
        return;
     }
!    binbuf_text(bbuf, x->x_textbuf, ret_pos-1);
     abuf = binbuf_getvec(bbuf);
     abuf_length = binbuf_getnatom(bbuf);
--- 203,207 ----
        return;
     }
!    binbuf_text(bbuf, x->x_textbuf, linebreak_pos-1);
     abuf = binbuf_getvec(bbuf);
     abuf_length = binbuf_getnatom(bbuf);
***************
*** 208,211 ****
--- 238,242 ----
     x->x_file=0;
     x->x_textbuf=0;
+    x->x_canvas = canvas_getcurrent();
     return (void *)x;
  }

Index: fwriteln.c
===================================================================
RCS file: /cvsroot/pure-data/externals/zexy/src/fwriteln.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** fwriteln.c	5 Jul 2007 14:51:23 -0000	1.3
--- fwriteln.c	16 Aug 2007 22:23:41 -0000	1.4
***************
*** 43,46 ****
--- 43,47 ----
     char *x_filename;
     char *x_textbuf;
+    char linebreak_chr[3];
  } t_fwriteln;
  
***************
*** 66,73 ****
     fwriteln_close (x);
  
!    if(0==type || type!=gensym("cr")) {
       pd_error(x, "unknown type '%s'", (type)?type->s_name:"");
       return;
!    }
  
     if (!(x->x_file=fopen(filename, "w"))) {
--- 67,79 ----
     fwriteln_close (x);
  
! /*   if(0==type || type!=gensym("cr")) {
       pd_error(x, "unknown type '%s'", (type)?type->s_name:"");
       return;
!    }*/
! 
!    if (type==gensym("cr"))
!       strcpy(x->linebreak_chr,"\n");
!    else
!       strcpy(x->linebreak_chr,";\n");
  
     if (!(x->x_file=fopen(filename, "w"))) {
***************
*** 145,149 ****
        }
  
!       snprintf(text,MAXPDSTRING,"\n");
        length=strlen(text);
        if (fwrite(text, length*sizeof(char),1,x->x_file) < 1) {
--- 151,155 ----
        }
  
!       snprintf(text,MAXPDSTRING,x->linebreak_chr);
        length=strlen(text);
        if (fwrite(text, length*sizeof(char),1,x->x_file) < 1) {

Index: zexyconf.h
===================================================================
RCS file: /cvsroot/pure-data/externals/zexy/src/zexyconf.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** zexyconf.h	5 Jul 2007 14:52:13 -0000	1.6
--- zexyconf.h	16 Aug 2007 22:23:41 -0000	1.7
***************
*** 4,8 ****
  
  /* Define if you have the <regex.h> header file.  */
! //#define HAVE_REGEX_H 1
  
  /* Define if you have the <alloca.h> header file.  */
--- 4,8 ----
  
  /* Define if you have the <regex.h> header file.  */
! #define HAVE_REGEX_H 1
  
  /* Define if you have the <alloca.h> header file.  */
***************
*** 16,20 ****
   * you need Z_WANT_LPT for this to have an effect ! 
   */
! //#define HAVE_LINUX_PPDEV_H 1
  
  #endif /* _ZEXYCONF_H_ */
--- 16,20 ----
   * you need Z_WANT_LPT for this to have an effect ! 
   */
! #define HAVE_LINUX_PPDEV_H 1
  
  #endif /* _ZEXYCONF_H_ */





More information about the Pd-cvs mailing list