--- ray/src/ot/writeoct.c 1989/02/02 10:33:07 1.1 +++ ray/src/ot/writeoct.c 1991/11/12 17:00:58 2.1 @@ -18,7 +18,9 @@ static char SCCSid[] = "$SunId$ LBL"; #include "otypes.h" +static int putint(), putstr(), puttree(), putobj(); + writeoct(store, scene, ofn) /* write octree structures to stdout */ int store; CUBE *scene; @@ -27,7 +29,7 @@ char *ofn[]; char sbuf[64]; register int i; /* write format number */ - putint((long)OCTMAGIC, 2); + putint((long)(OCTMAGIC+sizeof(OBJECT)), 2); if (!(store & IO_BOUNDS)) return; @@ -43,6 +45,8 @@ char *ofn[]; for (i = 0; ofn[i] != NULL; i++) putstr(ofn[i]); putstr(""); + /* write number of objects */ + putint((long)nobjects, sizeof(OBJECT)); if (!(store & IO_TREE)) return; @@ -92,7 +96,7 @@ register long i; register int siz; { while (siz--) - putc(i>>(siz<<3) & 0377, stdout); + putc(i>>(siz<<3) & 0xff, stdout); if (ferror(stdout)) error(SYSTEM, "write error in putint"); } @@ -105,8 +109,8 @@ double f; extern double frexp(); int e; - putint((long)(frexp(f,&e)*0x7fffffff), sizeof(long)); - putint(e, 1); + putint((long)(frexp(f,&e)*0x7fffffff), 4); + putint((long)e, 1); } @@ -145,9 +149,9 @@ register OBJREC *o; for (i = 0; i < o->oargs.nsargs; i++) putstr(o->oargs.sarg[i]); #ifdef IARGS - putint(o->oargs.niargs, 2); + putint((long)o->oargs.niargs, 2); for (i = 0; i < o->oargs.niargs; i++) - putint(o->oargs.iarg[i], sizeof(long)); + putint((long)o->oargs.iarg[i], 4); #endif putint((long)o->oargs.nfargs, 2); for (i = 0; i < o->oargs.nfargs; i++)