diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c index 9ae490767fb08c0927d0aef3666729a0db965acd..671bab3be4fc04adf318d834576ae5a329762c84 100644 --- a/pd/src/g_canvas.c +++ b/pd/src/g_canvas.c @@ -800,15 +800,14 @@ void canvas_args_to_string(char *namebuf, t_canvas *x) { namebuf[0] = 0; t_gobj *g = NULL; - t_garray *a = NULL; t_symbol *arrayname; - int found = 0, res; + int found = 0; for (g = x->gl_list; g; g = g->g_next) { if (pd_class(&g->g_pd) == garray_class) { - res = garray_getname((t_garray *)g, &arrayname); + garray_getname((t_garray *)g, &arrayname); if (found) { strcat(namebuf, " "); @@ -889,13 +888,14 @@ typedef struct _dirty_broadcast_data int *res; /* return value */ } t_dirty_broadcast_data; -static void canvas_dirty_deliver_packed(t_canvas *x, t_dirty_broadcast_data *data) +static void canvas_dirty_deliver_packed(t_canvas *x, void *z) { + t_dirty_broadcast_data *data = (t_dirty_broadcast_data *)z; *data->res += (x->gl_dirty > 0); canvas_dirty_common(x, data->mess); } -static void canvas_dirty_broadcast_packed(t_canvas *x, t_dirty_broadcast_data *data); +static void canvas_dirty_broadcast_packed(t_canvas *x, void *z); static int canvas_dirty_broadcast(t_canvas *x, t_symbol *name, t_symbol *dir, int mess) { @@ -922,7 +922,7 @@ static int canvas_dirty_broadcast(t_canvas *x, t_symbol *name, t_symbol *dir, in int cres = 0; t_dirty_broadcast_data data; data.name = name; data.dir = dir; data.mess = mess; data.res = &cres; - if(clone_match(&g->g_pd, name, dir)) + if (clone_match(&g->g_pd, name, dir)) { clone_iterate(&g->g_pd, canvas_dirty_deliver_packed, &data); } @@ -936,8 +936,9 @@ static int canvas_dirty_broadcast(t_canvas *x, t_symbol *name, t_symbol *dir, in return (res); } -static void canvas_dirty_broadcast_packed(t_canvas *x, t_dirty_broadcast_data *data) +static void canvas_dirty_broadcast_packed(t_canvas *x, void *z) { + t_dirty_broadcast_data *data = (t_dirty_broadcast_data *)z; *data->res = canvas_dirty_broadcast(x, data->name, data->dir, data->mess); } @@ -959,13 +960,14 @@ typedef struct _dirty_broadcast_ab_data int *res; } t_dirty_broadcast_ab_data; -static void canvas_dirty_deliver_ab_packed(t_canvas *x, t_dirty_broadcast_ab_data *data) +static void canvas_dirty_deliver_ab_packed(t_canvas *x, void *z) { + t_dirty_broadcast_ab_data *data = (t_dirty_broadcast_ab_data *)z; *data->res += (x->gl_dirty > 0); canvas_dirty_common(x, data->mess); } -static void canvas_dirty_broadcast_ab_packed(t_canvas *x, t_dirty_broadcast_ab_data *data); +static void canvas_dirty_broadcast_ab_packed(t_canvas *x, void *z); int canvas_dirty_broadcast_ab(t_canvas *x, t_ab_definition *abdef, int mess) { @@ -973,29 +975,29 @@ int canvas_dirty_broadcast_ab(t_canvas *x, t_ab_definition *abdef, int mess) t_gobj *g; for (g = x->gl_list; g; g = g->g_next) { - if(pd_class(&g->g_pd) == canvas_class) + if (pd_class(&g->g_pd) == canvas_class) { - if(canvas_isabstraction((t_canvas *)g) && ((t_canvas *)g)->gl_isab + if (canvas_isabstraction((t_canvas *)g) && ((t_canvas *)g)->gl_isab && ((t_canvas *)g)->gl_absource == abdef) { res += (((t_canvas *)g)->gl_dirty > 0); canvas_dirty_common((t_canvas *)g, mess); } - else if(!canvas_isabstraction((t_canvas *)g) || ((t_canvas *)g)->gl_isab) + else if (!canvas_isabstraction((t_canvas *)g) || ((t_canvas *)g)->gl_isab) { res += canvas_dirty_broadcast_ab((t_canvas *)g, abdef, mess); } } - else if(pd_class(&g->g_pd) == clone_class) + else if (pd_class(&g->g_pd) == clone_class) { int cres = 0; t_dirty_broadcast_ab_data data; data.abdef = abdef; data.mess = mess; data.res = &cres; - if(clone_matchab(&g->g_pd, abdef)) + if (clone_matchab(&g->g_pd, abdef)) { clone_iterate(&g->g_pd, canvas_dirty_deliver_ab_packed, &data); } - else if(clone_isab(&g->g_pd)) + else if (clone_isab(&g->g_pd)) { clone_iterate(&g->g_pd, canvas_dirty_broadcast_ab_packed, &data); } @@ -1005,8 +1007,9 @@ int canvas_dirty_broadcast_ab(t_canvas *x, t_ab_definition *abdef, int mess) return (res); } -static void canvas_dirty_broadcast_ab_packed(t_canvas *x, t_dirty_broadcast_ab_data *data) +static void canvas_dirty_broadcast_ab_packed(t_canvas *x, void *z) { + t_dirty_broadcast_ab_data *data = (t_dirty_broadcast_ab_data *)z; *data->res = canvas_dirty_broadcast_ab(x, data->abdef, data->mess); } diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c index d12c47d8dc0b923af8024e2cf92490712120ee39..b2141216afbb9f4eea78bdaa01564173c1c16e69 100644 --- a/pd/src/g_editor.c +++ b/pd/src/g_editor.c @@ -1302,7 +1302,7 @@ typedef struct _reload_data t_gobj *e; } t_reload_data; -static void glist_doreload_packed(t_canvas *x, t_reload_data *data); +static void glist_doreload_packed(t_canvas *x, void *z); /* recursively check for abstractions to reload as result of a save. Don't reload the one we just saved ("except") though. */ @@ -1410,8 +1410,9 @@ static void glist_doreload(t_glist *gl, t_symbol *name, t_symbol *dir, canvas_vis(glist_getcanvas(gl), 0); } -static void glist_doreload_packed(t_canvas *x, t_reload_data *data) +static void glist_doreload_packed(t_canvas *x, void *z) { + t_reload_data *data = (t_reload_data *)z; glist_doreload(x, data->n, data->d, data->e); } @@ -1439,7 +1440,7 @@ typedef struct _reload_ab_data t_gobj *e; } t_reload_ab_data; -static void glist_doreload_ab_packed(t_canvas *x, t_reload_ab_data *data); +static void glist_doreload_ab_packed(t_canvas *x, void *data); /* recursive ab reload method */ static void glist_doreload_ab(t_canvas *x, t_ab_definition *a, t_gobj *e) @@ -1495,8 +1496,9 @@ static void glist_doreload_ab(t_canvas *x, t_ab_definition *a, t_gobj *e) } } -static void glist_doreload_ab_packed(t_canvas *x, t_reload_ab_data *data) +static void glist_doreload_ab_packed(t_canvas *x, void *z) { + t_reload_ab_data *data = (t_reload_ab_data *)z; glist_doreload_ab(x, data->a, data->e); } @@ -2409,61 +2411,72 @@ static int do_replace_subpatches(t_canvas *x, const char* label, t_binbuf *origi static void abstracthandler_callback(t_abstracthandler *x, t_symbol *s) { - char fullpath[MAXPDSTRING], label[MAXPDSTRING], *dir, *filename, *o = s->s_name; - memset(fullpath, '\0', MAXPDSTRING); memset(label, '\0', MAXPDSTRING); + char fullpath[MAXPDSTRING], label[MAXPDSTRING], *dir, *filename; + memset(fullpath, '\0', MAXPDSTRING); + memset(label, '\0', MAXPDSTRING); sys_unbashfilename(s->s_name, fullpath); - if(strlen(fullpath) < 3 || strcmp(fullpath+strlen(fullpath)-3, ".pd")) + if (strlen(fullpath) < 3 || strcmp(fullpath+strlen(fullpath)-3, ".pd")) strcat(fullpath, ".pd"); - filename = strrchr(fullpath, '/')+1; - fullpath[(int)filename-(int)fullpath-1] = '\0'; + filename = strrchr(fullpath, '/') + 1; + fullpath[filename - fullpath - 1] = '\0'; dir = fullpath; int flag, prefix = 0; - if(flag = sys_relativizepath(canvas_getdir(canvas_getrootfor(x->tarjet))->s_name, dir, label)) + if (flag = + sys_relativizepath(canvas_getdir(canvas_getrootfor(x->tarjet))->s_name, + dir, label)) { int len = strlen(label), creator, fd = -1; - if(len && label[len-1] != '/') label[len] = '/'; - strncat(label, filename, strlen(filename)-3); - /* check if there is a creator with the same name or if it's one of the built-in methods */ + if (len && label[len-1] != '/') + label[len] = '/'; + strncat(label, filename, MAXPDSTRING - 4); + /* check if there is a creator with the same name or if it's one of + the built-in methods */ t_symbol *sym = gensym(label); - creator = (sym == &s_bang || sym == &s_float || sym == &s_symbol || sym == &s_blob - || sym == &s_list || sym == &s_anything); - if(!len && creator) + creator = (sym == &s_bang || + sym == &s_float || + sym == &s_symbol || + sym == &s_blob || + sym == &s_list || + sym == &s_anything); + if (!len && creator) { prefix = (!len && creator); creator = 0; } creator = (creator || zgetfn(&pd_objectmaker, sym)); - /* check if there in an abstraction with the same name in the search path */ - if(!creator) + /* check if there in an abstraction with the same name in the + search path */ + if (!creator) { char opendir[MAXPDSTRING], *filenameptr; - fd = canvas_open(canvas_getrootfor(x->tarjet), label, ".pd", opendir, - &filenameptr, MAXPDSTRING, 0); //high load - if(fd > 0) + fd = canvas_open(canvas_getrootfor(x->tarjet), label, ".pd", + opendir, &filenameptr, MAXPDSTRING, 0); //high load + if (fd > 0) { sys_close(fd); /* check if we are overwriting the file */ - if(!strncmp(dir, opendir, (int)filenameptr-(int)opendir-1)) fd = -1; + if (!strncmp(dir, opendir, filenameptr - opendir - 1)) fd = -1; } } flag = !(creator || (fd > 0)); - if(flag && prefix) + if (flag && prefix) { strcpy(label, "./"); - strncat(label, filename, strlen(filename)-3); + strncat(label, filename, MAXPDSTRING - 4); } - else if(!flag) - error("warning: couldn't use relative path, there is a coincidence in the creator list or the search path"); + else if (!flag) + error("warning: couldn't use relative path, there is a coincidence " + "in the creator list or the search path"); } - if(!flag) /* absolute path is required */ + if (!flag) /* absolute path is required */ { memset(label, '\0', MAXPDSTRING); strcpy(label, dir); strcat(label, "/"); - strncat(label, filename, strlen(filename)-3); + strncat(label, filename, strlen(label) - 3); /* should check if 'filename' is one of the built-in special methods in order to inform the user about the nameclash problem */ } @@ -2472,19 +2485,29 @@ static void abstracthandler_callback(t_abstracthandler *x, t_symbol *s) /* save the subpatch into a separated pd file */ t_atom at[3]; - SETSYMBOL(at, gensym(filename)); SETSYMBOL(at+1, gensym(dir)); SETFLOAT(at+2, 0.f); - x->tarjet->gl_env = dummy_canvas_env(dir); /* gl_env is set to non-zero in order to save the subcanvas as a root canvas */ + SETSYMBOL(at, gensym(filename)); + SETSYMBOL(at+1, gensym(dir)); + SETFLOAT(at+2, 0.f); + /* gl_env is set to non-zero in order to save the subcanvas as a + root canvas */ + x->tarjet->gl_env = dummy_canvas_env(dir); typedmess(&x->tarjet->gl_pd, gensym("savetofile"), 3, at); x->tarjet->gl_env = 0; t_binbuf *tmp = binbuf_new(), *tmps = binbuf_new(); gobj_save((t_gobj *)x->tarjet, tmp); - /* only the internals are kept, the position on the parent canvas may differ */ + /* only the internals are kept, the position on parent canvas may differ */ int i = 0, j = binbuf_getnatom(tmp)-2, matches; t_atom *v = binbuf_getvec(tmp); - while(v[i].a_type != A_SEMI) i++; + while(v[i].a_type != A_SEMI) + { + i++; + } i++; - while(v[j].a_type != A_SEMI) j--; + while(v[j].a_type != A_SEMI) + { + j--; + } binbuf_restore(tmps, j-i+1, v+i); binbuf_free(tmp); matches = do_replace_subpatches(canvas_getrootfor(x->tarjet), 0, tmps); @@ -2499,27 +2522,29 @@ static void abstracthandler_callback(t_abstracthandler *x, t_symbol *s) static void abstracthandler_dialog(t_abstracthandler *x, t_floatarg val) { - if(x->tarjet == x->dialog) canvas_vis(x->dialog, 0); + if (x->tarjet == x->dialog) canvas_vis(x->dialog, 0); t_canvas *owner = x->tarjet->gl_owner, *root = canvas_getrootfor(x->tarjet); int all = val; - if(!all) + if (!all) { /* change the text of the subpatch object to create the abstraction, emulating the procedure done by the user. could be simplified */ int edi = 0; - if(!owner->gl_editor) { canvas_create_editor(owner); edi = 1; } + if (!owner->gl_editor) { canvas_create_editor(owner); edi = 1; } glist_noselect(owner); glist_select(owner, &x->tarjet->gl_gobj); do_rename_light(&x->tarjet->gl_gobj, owner, x->path); glist_deselect(owner, &x->tarjet->gl_gobj); - if(edi) canvas_destroy_editor(owner); + if (edi) canvas_destroy_editor(owner); /* select '[args]' slice canvas_editmode(owner, 1); t_gobj *abst = glist_nth(owner, glist_getindex(owner, 0)-1); int len = strlen(x->path); glist_select(owner, abst); - gobj_activate(abst, owner, (0b1 << 31) | (((len+1) & 0x7FFF) << 16) | ((len+7) & 0xFFFF)); */ + gobj_activate(abst, owner, (0b1 << 31) | + (((len+1) & 0x7FFF) << 16) | + ((len+7) & 0xFFFF)); */ } else { @@ -2531,13 +2556,12 @@ static void abstracthandler_dialog(t_abstracthandler *x, t_floatarg val) void abstracthandler_setup(void) { abstracthandler_class = class_new(gensym("abstracthandler"), 0, - (t_method)abstracthandler_free, - sizeof(t_abstracthandler), - CLASS_NOINLET, 0); + (t_method)abstracthandler_free, sizeof(t_abstracthandler), + CLASS_NOINLET, 0); class_addmethod(abstracthandler_class, (t_method)abstracthandler_callback, - gensym("callback"), A_SYMBOL, 0); + gensym("callback"), A_SYMBOL, 0); class_addmethod(abstracthandler_class, (t_method)abstracthandler_dialog, - gensym("dialog"), A_FLOAT, 0); + gensym("dialog"), A_FLOAT, 0); } /* ------------------------ event handling ------------------------ */ @@ -2873,7 +2897,7 @@ void canvas_vis(t_canvas *x, t_floatarg f) (int)(x->gl_screeny2 - x->gl_screeny1), geobuf, sys_snaptogrid, - sys_gridsize, + sys_gridsize, x->gl_zoom, x->gl_edit, x->gl_name->s_name, @@ -3940,8 +3964,8 @@ void canvas_doclick(t_canvas *x, int xpos, int ypos, int which, //int enlarged = 0; //if (closest == last_outlet) // enlarged = 5; - //post("xpos=%d closest=%d noutlet=%d \ - nout1=%d hotspot=%d IOWIDTH=%d enlarged=%d", + //post("xpos=%d closest=%d noutlet=%d " + // "nout1=%d hotspot=%d IOWIDTH=%d enlarged=%d", // xpos, closest, noutlet, nout1, hotspot, IOWIDTH, enlarged); // if have found an outlet and are within its range... if (closest < noutlet && @@ -4091,7 +4115,6 @@ void canvas_doclick(t_canvas *x, int xpos, int ypos, int which, /* not in an outlet; select and move */ else if (doit) { - t_rtext *rt; /* check if the box is being text edited */ nooutletafterall: /* otherwise select and drag to displace */ @@ -4449,7 +4472,7 @@ void canvas_drawconnection(t_canvas *x, int lx1, int ly1, int lx2, int ly2, //second object is below the first if (abs(halfx) <=10) { - ymax = abs(halfy * pow((halfx/10.0),2)); + ymax = abs((int)(halfy * pow((halfx/10.0),2))); if (ymax > 10) ymax = 10; } else ymax = 10; @@ -4495,7 +4518,7 @@ void canvas_updateconnection(t_canvas *x, int lx1, int ly1, int lx2, int ly2, //second object is below the first if (abs(halfx) <=10) { - ymax = abs(halfy * pow((halfx/10.0),2)); + ymax = abs((int)(halfy * pow((halfx/10.0),2))); if (ymax > 10) ymax = 10; } else ymax = 10; @@ -5642,15 +5665,17 @@ void canvas_key(t_canvas *x, t_symbol *s, int ac, t_atom *av) if (x->gl_editor->e_grab) { if (x->gl_editor->e_keyfn && keynum && focus) + { (* x->gl_editor->e_keyfn) (x->gl_editor->e_grab, (t_float)keynum); - if (x->gl_editor->e_keynameafn && gotkeysym && focus) - { - at[0] = av[0]; - SETFLOAT(at, down); - SETSYMBOL(at+1, gotkeysym); - (* x->gl_editor->e_keynameafn) (x->gl_editor->e_grab, 0, 2, at); - } + } + if (x->gl_editor->e_keynameafn && gotkeysym && focus) + { + at[0] = av[0]; + SETFLOAT(at, down); + SETSYMBOL(at+1, gotkeysym); + (*x->gl_editor->e_keynameafn)(x->gl_editor->e_grab, 0, 2, at); + } } /* if a text editor is open send the key on, as long as it is either "real" (has a key number) or else is an arrow key. */ @@ -5794,7 +5819,7 @@ static void snap_get_anchor_xy(t_canvas *x, int *gobj_x, int *gobj_y) *gobj_y = y1; return; } - s = s->sel_next; + s = s->sel_next; } bug("canvas_get_snap_offset"); } @@ -5813,7 +5838,7 @@ static void canvas_snap_to_grid(t_canvas *x, int xwas, int ywas, int xnew, int snap_dx = 0, snap_dy = 0; if (!snap_got_anchor) { - int obx = xnew, oby = ynew, xsign, ysign; + int obx = xnew, oby = ynew; snap_get_anchor_xy(x, &obx, &oby); /* First, get the distance the selection should be displaced in order to align the anchor object with a grid line. */ @@ -7051,7 +7076,6 @@ static void canvas_encapsulate(t_canvas *x) canvas_undo_add(x, UNDO_SEQUENCE_START, "encapsulate", 0); /* cut selected objects using special copy method, based on canvas_cut */ t_binbuf *object, *connections; - int centx, centy; canvas_undo_add(x, UNDO_CUT, "cut", canvas_undo_set_cut(x, UCUT_CUT)); canvas_dofancycopy(x, &object, &connections); canvas_doclear(x); diff --git a/pd/src/u_pdreceive.c b/pd/src/u_pdreceive.c index 3fbb8f08301514f43ebc547d8cd57b34084e8f5a..92c44dbbc4ca2417ba1ff52e664e7c046516e83d 100644 --- a/pd/src/u_pdreceive.c +++ b/pd/src/u_pdreceive.c @@ -225,7 +225,11 @@ static int tcpmakeoutput(t_fdpoll *x, char *inbuf, int len) putchar(outbuf[j]); } #else - write(1, outbuf, outlen); + if (write(1, outbuf, outlen) < 0) + { + perror("write"); + exit(1); + } #endif } /* if (!x->fdp_discard) */