Update of /cvsroot/pure-data/externals/iemlib/src/iemlib2
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30211/iemlib/src/iemlib2
Modified Files:
mergefilename.c
Log Message:
new malloc
Index: mergefilename.c
===================================================================
RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/mergefilename.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** mergefilename.c 8 Jul 2005 02:04:25 -0000 1.3
--- mergefilename.c 4 Jan 2006 01:04:46 -0000 1.4
***************
*** 26,29 ****
--- 26,31 ----
t_object x_obj;
char x_sep[2];
+ char *x_mem;
+ t_int x_size;
} t_mergefilename;
***************
*** 34,56 ****
if(IS_A_SYMBOL(av, 0))
{
! if(strlen(av->a_w.w_symbol->s_name) == 1)
! x->x_sep[0] = av->a_w.w_symbol->s_name[0];
! else if(!strcmp(av->a_w.w_symbol->s_name, "backslash"))
x->x_sep[0] = '\\';
! else if(!strcmp(av->a_w.w_symbol->s_name, "slash"))
x->x_sep[0] = '/';
! else if(!strcmp(av->a_w.w_symbol->s_name, "blank"))
x->x_sep[0] = ' ';
! else if(!strcmp(av->a_w.w_symbol->s_name, "space"))
x->x_sep[0] = ' ';
! else if(!strcmp(av->a_w.w_symbol->s_name, "dollar"))
x->x_sep[0] = '$';
! else if(!strcmp(av->a_w.w_symbol->s_name, "comma"))
x->x_sep[0] = ',';
! else if(!strcmp(av->a_w.w_symbol->s_name, "semi"))
x->x_sep[0] = ';';
! else if(!strcmp(av->a_w.w_symbol->s_name, "leftbrace"))
x->x_sep[0] = '{';
! else if(!strcmp(av->a_w.w_symbol->s_name, "rightbrace"))
x->x_sep[0] = '}';
else
--- 36,60 ----
if(IS_A_SYMBOL(av, 0))
{
! char *name=av->a_w.w_symbol->s_name;
!
! if(strlen(name) == 1)
! x->x_sep[0] = name[0];
! else if(!strcmp(name, "backslash"))
x->x_sep[0] = '\\';
! else if(!strcmp(name, "slash"))
x->x_sep[0] = '/';
! else if(!strcmp(name, "blank"))
x->x_sep[0] = ' ';
! else if(!strcmp(name, "space"))
x->x_sep[0] = ' ';
! else if(!strcmp(name, "dollar"))
x->x_sep[0] = '$';
! else if(!strcmp(name, "comma"))
x->x_sep[0] = ',';
! else if(!strcmp(name, "semi"))
x->x_sep[0] = ';';
! else if(!strcmp(name, "leftbrace"))
x->x_sep[0] = '{';
! else if(!strcmp(name, "rightbrace"))
x->x_sep[0] = '}';
else
***************
*** 59,68 ****
else if(IS_A_FLOAT(av, 0))
{
! int i;
! float f=fabs(av->a_w.w_float);
- while(f >= 10.0)
- f *= 0.1;
- i = (int)f;
x->x_sep[0] = (char)i + '0';
}
--- 63,68 ----
else if(IS_A_FLOAT(av, 0))
{
! t_int i=atom_getintarg(0, ac, av);
x->x_sep[0] = (char)i + '0';
}
***************
*** 74,82 ****
static void mergefilename_float(t_mergefilename *x, t_floatarg f)
{
! char fbuf[30];
! fbuf[0] = 0;
! sprintf(fbuf, "%g", f);
! outlet_symbol(x->x_obj.ob_outlet, gensym(fbuf));
}
--- 74,82 ----
static void mergefilename_float(t_mergefilename *x, t_floatarg f)
{
! char flt_buf[30];
! flt_buf[0] = 0;
! sprintf(flt_buf, "%g", f);
! outlet_symbol(x->x_obj.ob_outlet, gensym(flt_buf));
}
***************
*** 88,120 ****
static void mergefilename_list(t_mergefilename *x, t_symbol *s, int ac, t_atom *av)
{
! char *cbeg, fbuf[30];
! int size=400, i, len, cursize=0;
! cbeg = (char *)getbytes(size * sizeof(char));
! cbeg[0] = 0;
if(ac > 0)
{
if(IS_A_SYMBOL(av, 0))
{
! len = strlen(av->a_w.w_symbol->s_name);
! if((len + cursize) >= (size-1))
{
! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char));
! size = 2*(len + cursize);
}
! strcat(cbeg, av->a_w.w_symbol->s_name);
! cursize += len;
}
else if(IS_A_FLOAT(av, 0))
{
! sprintf(fbuf, "%g", av->a_w.w_float);
! len = strlen(fbuf);
! if((len + cursize) >= (size-1))
{
! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char));
! size = 2*(len + cursize);
}
! strcat(cbeg, fbuf);
! cursize += len;
}
}
--- 88,119 ----
static void mergefilename_list(t_mergefilename *x, t_symbol *s, int ac, t_atom *av)
{
! char flt_buf[30];
! t_int i, length, accu_size=0;
! x->x_mem[0] = 0;
if(ac > 0)
{
if(IS_A_SYMBOL(av, 0))
{
! length = strlen(av->a_w.w_symbol->s_name);
! if((length + accu_size) >= (x->x_size-2))
{
! x->x_mem = (char *)resizebytes(x->x_mem, x->x_size*sizeof(char), 2*(length + accu_size)*sizeof(char));
! x->x_size = 2*(length + accu_size);
}
! strcat(x->x_mem, av->a_w.w_symbol->s_name);
! accu_size += length;
}
else if(IS_A_FLOAT(av, 0))
{
! sprintf(flt_buf, "%g", av->a_w.w_float);
! length = strlen(flt_buf);
! if((length + accu_size) >= (x->x_size-2))
{
! x->x_mem = (char *)resizebytes(x->x_mem, x->x_size*sizeof(char), 2*(length + accu_size)*sizeof(char));
! x->x_size = 2*(length + accu_size);
}
! strcat(x->x_mem, flt_buf);
! accu_size += length;
}
}
***************
*** 125,206 ****
{
av++;
! strcat(cbeg, x->x_sep);
if(IS_A_SYMBOL(av, 0))
{
! len = strlen(av->a_w.w_symbol->s_name);
! if((len + cursize) >= (size-1))
{
! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char));
! size = 2*(len + cursize);
}
! strcat(cbeg, av->a_w.w_symbol->s_name);
! cursize += len;
}
else if(IS_A_FLOAT(av, 0))
{
! sprintf(fbuf, "%g", av->a_w.w_float);
! len = strlen(fbuf);
! if((len + cursize) >= (size-1))
{
! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char));
! size = 2*(len + cursize);
}
! strcat(cbeg, fbuf);
! cursize += len;
}
}
}
! outlet_symbol(x->x_obj.ob_outlet, gensym(cbeg));
! freebytes(cbeg, size * sizeof(char));
}
static void mergefilename_anything(t_mergefilename *x, t_symbol *s, int ac, t_atom *av)
{
! char *cbeg, fbuf[30];
! int size=400, i, len, cursize=0;
! cbeg = (char *)getbytes(size * sizeof(char));
! cbeg[0] = 0;
! len = strlen(s->s_name);
! if((len + cursize) >= (size-1))
{
! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char));
! size = 2*(len + cursize);
}
! strcat(cbeg, s->s_name);
! cursize += len;
if(ac > 0)
{
for(i=0; i<ac; i++)
{
! strcat(cbeg, x->x_sep);
if(IS_A_SYMBOL(av, 0))
{
! len = strlen(av->a_w.w_symbol->s_name);
! if((len + cursize) >= (size-1))
{
! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char));
! size = 2*(len + cursize);
}
! strcat(cbeg, av->a_w.w_symbol->s_name);
! cursize += len;
}
else if(IS_A_FLOAT(av, 0))
{
! sprintf(fbuf, "%g", av->a_w.w_float);
! len = strlen(fbuf);
! if((len + cursize) >= (size-1))
{
! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char));
! size = 2*(len + cursize);
}
! strcat(cbeg, fbuf);
! cursize += len;
}
av++;
}
}
! outlet_symbol(x->x_obj.ob_outlet, gensym(cbeg));
! freebytes(cbeg, size * sizeof(char));
}
--- 124,207 ----
{
av++;
! strcat(x->x_mem, x->x_sep);
if(IS_A_SYMBOL(av, 0))
{
! length = strlen(av->a_w.w_symbol->s_name);
! if((length + accu_size) >= (x->x_size-2))
{
! x->x_mem = (char *)resizebytes(x->x_mem, x->x_size*sizeof(char), 2*(length + accu_size)*sizeof(char));
! x->x_size = 2*(length + accu_size);
}
! strcat(x->x_mem, av->a_w.w_symbol->s_name);
! accu_size += length;
}
else if(IS_A_FLOAT(av, 0))
{
! sprintf(flt_buf, "%g", av->a_w.w_float);
! length = strlen(flt_buf);
! if((length + accu_size) >= (x->x_size-2))
{
! x->x_mem = (char *)resizebytes(x->x_mem, x->x_size*sizeof(char), 2*(length + accu_size)*sizeof(char));
! x->x_size = 2*(length + accu_size);
}
! strcat(x->x_mem, flt_buf);
! accu_size += length;
}
}
}
! outlet_symbol(x->x_obj.ob_outlet, gensym(x->x_mem));
}
static void mergefilename_anything(t_mergefilename *x, t_symbol *s, int ac, t_atom *av)
{
! char flt_buf[30];
! t_int i, length, accu_size=0;
! x->x_mem[0] = 0;
! length = strlen(s->s_name);
! if((length + accu_size) >= (x->x_size-2))
{
! x->x_mem = (char *)resizebytes(x->x_mem, x->x_size*sizeof(char), 2*(length + accu_size)*sizeof(char));
! x->x_size = 2*(length + accu_size);
}
! strcat(x->x_mem, s->s_name);
! accu_size += length;
if(ac > 0)
{
for(i=0; i<ac; i++)
{
! strcat(x->x_mem, x->x_sep);
if(IS_A_SYMBOL(av, 0))
{
! length = strlen(av->a_w.w_symbol->s_name);
! if((length + accu_size) >= (x->x_size-2))
{
! x->x_mem = (char *)resizebytes(x->x_mem, x->x_size*sizeof(char), 2*(length + accu_size)*sizeof(char));
! x->x_size = 2*(length + accu_size);
}
! strcat(x->x_mem, av->a_w.w_symbol->s_name);
! accu_size += length;
}
else if(IS_A_FLOAT(av, 0))
{
! sprintf(flt_buf, "%g", av->a_w.w_float);
! length = strlen(flt_buf);
! if((length + accu_size) >= (x->x_size-2))
{
! x->x_mem = (char *)resizebytes(x->x_mem, x->x_size*sizeof(char), 2*(length + accu_size)*sizeof(char));
! x->x_size = 2*(length + accu_size);
}
! strcat(x->x_mem, flt_buf);
! accu_size += length;
}
av++;
}
}
! outlet_symbol(x->x_obj.ob_outlet, gensym(x->x_mem));
! }
!
! static void mergefilename_free(t_mergefilename *x)
! {
! freebytes(x->x_mem, x->x_size*sizeof(char));
}
***************
*** 213,216 ****
--- 214,219 ----
if(ac > 0)
mergefilename_separator(x, s, ac, av);
+ x->x_size = 400;
+ x->x_mem = (char *)getbytes(x->x_size*sizeof(char));
outlet_new(&x->x_obj, &s_symbol);
return (x);