diff options
Diffstat (limited to 'packages/patches')
-rw-r--r-- | packages/patches/makefilename_scanformat-0.41.0-test04.patch | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/packages/patches/makefilename_scanformat-0.41.0-test04.patch b/packages/patches/makefilename_scanformat-0.41.0-test04.patch new file mode 100644 index 00000000..d2c8ab2b --- /dev/null +++ b/packages/patches/makefilename_scanformat-0.41.0-test04.patch @@ -0,0 +1,95 @@ +Index: x_connective.c +=================================================================== +RCS file: /cvsroot/pure-data/pd/src/x_connective.c,v +retrieving revision 1.9 +diff -u -w -r1.9 x_connective.c +--- x_connective.c 24 Aug 2006 15:23:52 -0000 1.9 ++++ x_connective.c 30 Jul 2007 18:15:23 -0000 +@@ -1202,34 +1202,86 @@ + { + t_object x_obj; + t_symbol *x_format; ++ t_atomtype x_accept; ++ int x_intconvert; + } t_makefilename; + ++static void makefilename_scanformat(t_makefilename *x) ++{ ++ int num=0, infmt=0; ++ char *str,*chr; ++ if (!x->x_format) return; ++ x->x_accept = A_NULL; ++ for (str=x->x_format->s_name; *str; str++) { ++ if (!infmt && *str=='%') { ++ infmt=1; ++ continue; ++ } ++ if (infmt) { ++ if (strchr("-.#0123456789",*str)!=0) ++ continue; ++ if (*str=='s') { ++ x->x_accept = A_SYMBOL; ++ x->x_intconvert = 0; ++ break; ++ } ++ if (strchr("fgGeE",*str)!=0) { ++ x->x_accept = A_FLOAT; ++ x->x_intconvert = 0; ++ break; ++ } ++ if (strchr("xXdiou",*str)!=0) { ++ x->x_accept = A_FLOAT; ++ x->x_intconvert = 1; ++ break; ++ } ++ infmt=0; ++ } ++ } ++} ++ + static void *makefilename_new(t_symbol *s) + { + t_makefilename *x = (t_makefilename *)pd_new(makefilename_class); +- if (!s->s_name) s = gensym("file.%d"); ++ if (!s || !s->s_name) s = gensym("file.%d"); + outlet_new(&x->x_obj, &s_symbol); + x->x_format = s; ++ x->x_accept = A_NULL; ++ x->x_intconvert = 0; ++ makefilename_scanformat(x); + return (x); + } + + static void makefilename_float(t_makefilename *x, t_floatarg f) + { + char buf[MAXPDSTRING]; ++ if (x->x_accept == A_FLOAT) { ++ if (x->x_intconvert) + sprintf(buf, x->x_format->s_name, (int)f); ++ else ++ sprintf(buf, x->x_format->s_name, f); ++ } ++ else ++ sprintf(buf, x->x_format->s_name, ""); ++ if (buf[0]!=0) + outlet_symbol(x->x_obj.ob_outlet, gensym(buf)); + } + + static void makefilename_symbol(t_makefilename *x, t_symbol *s) + { + char buf[MAXPDSTRING]; ++ if (x->x_accept == A_SYMBOL) + sprintf(buf, x->x_format->s_name, s->s_name); ++ else ++ sprintf(buf, x->x_format->s_name, 0); ++ if (buf[0]!=0) + outlet_symbol(x->x_obj.ob_outlet, gensym(buf)); + } + + static void makefilename_set(t_makefilename *x, t_symbol *s) + { + x->x_format = s; ++ makefilename_scanformat(x); + } + + static void makefilename_setup(void) |