Index: apps/plugins/pdbox/PDa/src/m_binbuf.c =================================================================== --- apps/plugins/pdbox/PDa/src/m_binbuf.c (revision 21272) +++ apps/plugins/pdbox/PDa/src/m_binbuf.c (working copy) @@ -10,9 +10,30 @@ * change marked with IOhannes */ +#ifdef ROCKBOX +#include "plugin.h" +#include "pdbox.h" +#define open rb->open +#define read rb->read +#define write rb->write +#define lseek rb->lseek +#define close rb->close +#define strlen rb->strlen +#define strcat rb->strcat +#define strcpy rb->strcpy +#define strcmp rb->strcmp +#define snprintf rb->snprintf +#define strncat rb_strncat +#define floor rb_floor +#define atol rb_atol +#define atof rb_atof +int sscanf(const char *s, const char *fmt, ...); +#ifdef SIMULATOR +int printf(const char *fmt, ...); +void perror(const char*); +#endif +#else /* ROCKBOX */ #include -#include "m_pd.h" -#include "s_stuff.h" #include #ifdef UNIX #include @@ -21,9 +42,14 @@ #include #endif #include + #include #include +#endif /* ROCKBOX */ +#include "m_pd.h" +#include "s_stuff.h" + struct _binbuf { int b_n; @@ -72,7 +98,9 @@ x->b_n = 0; while (1) { +#ifndef ROCKBOX int type; +#endif /* skip leading space */ while ((textp != etext) && (*textp == ' ' || *textp == '\n' || *textp == '\r' || *textp == '\t')) textp++; @@ -219,7 +247,7 @@ } if (length && buf[length-1] == ' ') { - if (newbuf = t_resizebytes(buf, length, length-1)) + if((newbuf = t_resizebytes(buf, length, length-1))) { buf = newbuf; length--; @@ -236,8 +264,8 @@ { int newsize = x->b_n + argc, i; t_atom *ap; - if (ap = t_resizebytes(x->b_vec, x->b_n * sizeof(*x->b_vec), - newsize * sizeof(*x->b_vec))) + if((ap = t_resizebytes(x->b_vec, x->b_n * sizeof(*x->b_vec), + newsize * sizeof(*x->b_vec)))) x->b_vec = ap; else { @@ -310,11 +338,19 @@ SETSYMBOL(ap, gensym(",")); break; case A_DOLLAR: +#ifdef ROCKBOX + snprintf(tbuf, sizeof(tbuf)-1, "$%d", ap->a_w.w_index); +#else /* ROCKBOX */ sprintf(tbuf, "$%d", ap->a_w.w_index); +#endif /* ROCKBOX */ SETSYMBOL(ap, gensym(tbuf)); break; case A_DOLLSYM: +#ifdef ROCKBOX + snprintf(tbuf, sizeof(tbuf)-1, "$%s", ap->a_w.w_symbol->s_name); +#else /* ROCKBOX */ sprintf(tbuf, "$%s", ap->a_w.w_symbol->s_name); +#endif /* ROCKBOX */ SETSYMBOL(ap, gensym(tbuf)); break; case A_SYMBOL: @@ -346,8 +382,8 @@ { int newsize = x->b_n + argc, i; t_atom *ap; - if (ap = t_resizebytes(x->b_vec, x->b_n * sizeof(*x->b_vec), - newsize * sizeof(*x->b_vec))) + if((ap = t_resizebytes(x->b_vec, x->b_n * sizeof(*x->b_vec), + newsize * sizeof(*x->b_vec)))) x->b_vec = ap; else { @@ -430,13 +466,25 @@ { if (!tonew) return (0); +#ifdef ROCKBOX + else snprintf(buf, sizeof(buf)-1, "$%d", argno); +#else /* ROCKBOX */ else sprintf(buf, "$%d", argno); +#endif /* ROCKBOX */ } else if (argno == 0) +#ifdef ROCKBOX + snprintf(buf, sizeof(buf)-1, "%d", canvas_getdollarzero()); +#else /* ROCKBOX */ sprintf(buf, "%d", canvas_getdollarzero()); +#endif /* ROCKBOX */ else atom_string(av+(argno-1), buf, MAXPDSTRING/2-1); +#ifdef ROCKBOX + strncpy(buf + strlen(buf), sp, MAXPDSTRING/2-1); +#else /* ROCKBOX */ strncat(buf, sp, MAXPDSTRING/2-1); +#endif /* ROCKBOX */ return (gensym(buf)); } @@ -582,6 +630,10 @@ if (nargs == 1) pd_float(target, stackwas->a_w.w_float); else pd_list(target, 0, nargs, stackwas); break; +#ifdef ROCKBOX + default: + break; +#endif } } msp = stackwas; @@ -606,12 +658,14 @@ return (open(namebuf, mode)); } +#ifndef ROCKBOX static FILE *binbuf_dofopen(char *s, char *mode) { char namebuf[MAXPDSTRING]; sys_bashfilename(s, namebuf); return (fopen(namebuf, mode)); } +#endif int binbuf_read(t_binbuf *b, char *filename, char *dirname, int crflag) { @@ -628,22 +682,43 @@ if ((fd = binbuf_doopen(namebuf, 0)) < 0) { +#ifdef ROCKBOX +#ifdef SIMULATOR + printf("open: "); + perror(namebuf); +#endif /* SIMULATOR */ +#else /* ROCKBOX */ fprintf(stderr, "open: "); perror(namebuf); +#endif /* ROCKBOX */ return (1); } if ((length = lseek(fd, 0, SEEK_END)) < 0 || lseek(fd, 0, SEEK_SET) < 0 || !(buf = t_getbytes(length))) { +#ifdef ROCKBOX +#ifdef SIMULATOR + printf("lseek: "); + perror(namebuf); +#endif /* SIMULATOR */ +#else /* ROCKBOX */ fprintf(stderr, "lseek: "); perror(namebuf); +#endif /* ROCKBOX */ close(fd); return(1); } if ((readret = read(fd, buf, length)) < length) { +#ifdef ROCKBOX +#ifdef SIMULATOR + printf("read (%d %ld) -> %d\n", fd, length, readret); + perror(namebuf); +#endif /* SIMULATOR */ +#else /* ROCKBOX */ fprintf(stderr, "read (%d %ld) -> %d\n", fd, length, readret); perror(namebuf); +#endif /* ROCKBOX */ close(fd); t_freebytes(buf, length); return(1); @@ -691,7 +766,11 @@ semicolons. */ int binbuf_write(t_binbuf *x, char *filename, char *dir, int crflag) { +#ifdef ROCKBOX + int f = 0; +#else /* ROCKBOX */ FILE *f = 0; +#endif /* ROCKBOX */ char sbuf[WBUFSIZE], fbuf[MAXPDSTRING], *bp = sbuf, *ep = sbuf + WBUFSIZE; t_atom *ap; int indx, deleteit = 0; @@ -707,9 +786,19 @@ deleteit = 1; } +#ifdef ROCKBOX + if(!(f = binbuf_doopen(fbuf, O_WRONLY|O_CREAT|O_TRUNC))) +#else /* ROCKBOX */ if (!(f = binbuf_dofopen(fbuf, "w"))) +#endif /* ROCKBOX */ { +#ifdef ROCKBOX +#ifdef SIMULATOR + printf("open: "); +#endif /* SIMULATOR */ +#else /* ROCKBOX */ fprintf(stderr, "open: "); +#endif /* ROCKBOX */ sys_unixerror(fbuf); goto fail; } @@ -723,7 +812,11 @@ else length = 40; if (ep - bp < length) { +#ifdef ROCKBOX + if(write(f, sbuf, bp-sbuf) < 1) +#else /* ROCKBOX */ if (fwrite(sbuf, bp-sbuf, 1, f) < 1) +#endif /* ROCKBOX */ { sys_unixerror(fbuf); goto fail; @@ -750,20 +843,32 @@ ncolumn++; } } +#ifdef ROCKBOX + if(write(f, sbuf, bp-sbuf) < 1) +#else /* ROCKBOX */ if (fwrite(sbuf, bp-sbuf, 1, f) < 1) +#endif /* ROCKBOX */ { sys_unixerror(fbuf); goto fail; } if (deleteit) binbuf_free(x); +#ifdef ROCKBOX + close(f); +#else /* ROCKBOX */ fclose(f); +#endif /* ROCKBOX */ return (0); fail: if (deleteit) binbuf_free(x); if (f) - fclose(f); +#ifdef ROCKBOX + close(f); +#else /* ROCKBOX */ + fclose(f); +#endif /* ROCKBOX */ return (1); } @@ -816,13 +921,21 @@ if (nextmess[i].a_type == A_DOLLAR) { char buf[100]; +#ifdef ROCKBOX + snprintf(buf, sizeof(buf)-1, "$%d", nextmess[i].a_w.w_index); +#else /* ROCKBOX */ sprintf(buf, "$%d", nextmess[i].a_w.w_index); +#endif /* ROCKBOX */ SETSYMBOL(nextmess+i, gensym(buf)); } else if (nextmess[i].a_type == A_DOLLSYM) { char buf[100]; +#ifdef ROCKBOX + snprintf(buf, sizeof(buf)-1, "$%s", nextmess[i].a_w.w_symbol->s_name); +#else /* ROCKBOX */ sprintf(buf, "$%s", nextmess[i].a_w.w_symbol->s_name); +#endif /* ROCKBOX */ SETSYMBOL(nextmess+i, gensym(buf)); } } @@ -846,7 +959,11 @@ atom_getfloatarg(2, natom, nextmess), atom_getfloatarg(5, natom, nextmess) - atom_getfloatarg(3, natom, nextmess), +#ifdef ROCKBOX + 10.0); +#else /* ROCKBOX */ (float)sys_defaultfont); +#endif /* ROCKBOX */ } } if (!strcmp(first, "#P")) @@ -1157,13 +1274,13 @@ t_atom *a1 = &inbuf->b_vec[indexin + nmatched], *a2 = &searchbuf->b_vec[nmatched]; if (a1->a_type != a2->a_type || - a1->a_type == A_SYMBOL && a1->a_w.w_symbol != a2->a_w.w_symbol + (a1->a_type == A_SYMBOL && a1->a_w.w_symbol != a2->a_w.w_symbol) || - a1->a_type == A_FLOAT && a1->a_w.w_float != a2->a_w.w_float + (a1->a_type == A_FLOAT && a1->a_w.w_float != a2->a_w.w_float) || - a1->a_type == A_DOLLAR && a1->a_w.w_index != a2->a_w.w_index + (a1->a_type == A_DOLLAR && a1->a_w.w_index != a2->a_w.w_index) || - a1->a_type == A_DOLLSYM && a1->a_w.w_symbol != a2->a_w.w_symbol) + (a1->a_type == A_DOLLSYM && a1->a_w.w_symbol != a2->a_w.w_symbol)) goto nomatch; } return (1); @@ -1185,7 +1302,9 @@ glob_setfilename(0, name, dir); if (binbuf_read(b, name->s_name, dir->s_name, 0)) { +#if !defined(ROCKBOX) || (defined(ROCKBOX) && defined(SIMULATOR)) perror(name->s_name); +#endif } else { @@ -1205,6 +1324,10 @@ void glob_evalfile(t_pd *ignore, t_symbol *name, t_symbol *dir) { t_pd *x = 0; + +#ifdef ROCKBOX + (void) ignore; +#endif /* even though binbuf_evalfile appears to take care of dspstate, we have to do it again here, because canvas_startdsp() assumes that all toplevel canvases are visible. LATER check if this