aboutsummaryrefslogtreecommitdiff
path: root/src/msgfile.c
diff options
context:
space:
mode:
authorIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2006-06-27 16:44:42 +0000
committerIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2006-06-27 16:44:42 +0000
commit0955f6d47a84dd1e510649b1659dfa0fe28cd076 (patch)
tree4bb584ce48ed64e95719b43bff5fdda3ca0f6148 /src/msgfile.c
parent3f05771340e68450a712681277a6ab28fc73a32c (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/msgfile.c')
-rw-r--r--src/msgfile.c30
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);
}