diff options
author | IOhannes m zmölnig <zmoelnig@users.sourceforge.net> | 2006-06-27 16:44:42 +0000 |
---|---|---|
committer | IOhannes m zmölnig <zmoelnig@users.sourceforge.net> | 2006-06-27 16:44:42 +0000 |
commit | 0955f6d47a84dd1e510649b1659dfa0fe28cd076 (patch) | |
tree | 4bb584ce48ed64e95719b43bff5fdda3ca0f6148 /src | |
parent | 3f05771340e68450a712681277a6ab28fc73a32c (diff) |
added a new writing mode: '$$' which converts occurences of "$$" to "\$", in order to be able to write pd-patches which make use of arguments
svn path=/trunk/externals/zexy/; revision=5306
Diffstat (limited to 'src')
-rw-r--r-- | src/msgfile.c | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/msgfile.c b/src/msgfile.c index 29c3121..bdc94e6 100644 --- a/src/msgfile.c +++ b/src/msgfile.c @@ -653,6 +653,8 @@ static void msgfile_write(t_msgfile *x, t_symbol *filename, t_symbol *format) char separator, eol; int mode = x->mode; + int dollarmode = 0; + FILE *f=0; while (x->current && x->current->previous) x->current=x->current->previous; @@ -667,6 +669,7 @@ static void msgfile_write(t_msgfile *x, t_symbol *filename, t_symbol *format) canvas_makefilename(x->x_canvas, filename->s_name, buf, MAXPDSTRING); +#if 0 if (!strcmp(format->s_name, "cr")) { mode = CR_MODE; } else if (!strcmp(format->s_name, "csv")) { @@ -675,6 +678,22 @@ static void msgfile_write(t_msgfile *x, t_symbol *filename, t_symbol *format) mode = PD_MODE; } else if (*format->s_name) error("msgfile_write: unknown flag: %s", format->s_name); +#else + if(gensym("cr")==format) { + mode = CR_MODE; + } else if(gensym("cvs")==format) { + mode = CSV_MODE; + } else if(gensym("pd")==format) { + mode = PD_MODE; + } else if(gensym("$$")==format) { + mode = PD_MODE; + dollarmode=1; + } else if(format&&format->s_name) { + error("msgfile_write: ignoring unknown flag: %s", format->s_name); + } + + +#endif switch (mode) { case CR_MODE: @@ -696,11 +715,15 @@ static void msgfile_write(t_msgfile *x, t_symbol *filename, t_symbol *format) i = textlen; while(i--) { - if (*dumtext==' ') *dumtext=separator; - if ((*dumtext==';') && (dumtext[1]=='\n')) *dumtext = eol; + if (*dumtext==' ') + *dumtext=separator; + else if ((*dumtext==';') && (dumtext[1]=='\n')) + *dumtext = eol; + else if(dollarmode && (*dumtext=='$') && (dumtext[1]=='$')) + *dumtext='\\'; dumtext++; } - + /* open */ sys_bashfilename(filename->s_name, filnam); if (!(f = fopen(filnam, "w"))) { @@ -787,6 +810,7 @@ static void *msgfile_new(t_symbol *s, int argc, t_atom *argv) x->eol=' '; x->separator=','; + return (x); } |