148370Sbostic /*-
248370Sbostic * %sccs.include.proprietary.c%
348370Sbostic */
448370Sbostic
519819Sdist #ifndef lint
6*61321Sbostic static char sccsid[] = "@(#)util.c 8.1 (Berkeley) 06/04/93";
748370Sbostic #endif /* not lint */
819819Sdist
99951Ssam char *malloc();
109951Ssam #ifdef lint
119951Ssam int xv_oid;
129951Ssam #endif
139951Ssam #include <stdio.h>
149951Ssam #include <mp.h>
move(a,b)159951Ssam move(a,b) MINT *a,*b;
169951Ssam { int i,j;
179951Ssam xfree(b);
189951Ssam b->len=a->len;
199951Ssam if((i=a->len)<0) i = -i;
209951Ssam if(i==0) return;
219951Ssam b->val=xalloc(i,"move");
229951Ssam for(j=0;j<i;j++)
239951Ssam b->val[j]=a->val[j];
249951Ssam return;
259951Ssam }
dummy()269951Ssam dummy(){}
xalloc(nint,s)279951Ssam short *xalloc(nint,s) char *s;
289951Ssam { short *i;
299951Ssam i=(short *)malloc(2*(unsigned)nint+4);
309951Ssam #ifdef DBG
319951Ssam if(dbg) fprintf(stderr, "%s: %o\n",s,i);
329951Ssam #endif
339951Ssam if(i!=NULL) return(i);
349951Ssam fatal("mp: no free space");
359951Ssam return(0);
369951Ssam }
fatal(s)379951Ssam fatal(s) char *s;
389951Ssam {
399951Ssam fprintf(stderr,"%s\n",s);
409951Ssam VOID fflush(stdout);
419951Ssam sleep(2);
429951Ssam abort();
439951Ssam }
xfree(c)449951Ssam xfree(c) MINT *c;
459951Ssam {
469951Ssam #ifdef DBG
479951Ssam if(dbg) fprintf(stderr, "xfree ");
489951Ssam #endif
499951Ssam if(c->len==0) return;
509951Ssam shfree(c->val);
519951Ssam c->len=0;
529951Ssam return;
539951Ssam }
mcan(a)549951Ssam mcan(a) MINT *a;
559951Ssam { int i,j;
569951Ssam if((i=a->len)==0) return;
579951Ssam else if(i<0) i= -i;
589951Ssam for(j=i;j>0 && a->val[j-1]==0;j--);
599951Ssam if(j==i) return;
609951Ssam if(j==0)
619951Ssam { xfree(a);
629951Ssam return;
639951Ssam }
649951Ssam if(a->len > 0) a->len=j;
659951Ssam else a->len = -j;
669951Ssam }
itom(n)679951Ssam MINT *itom(n)
689951Ssam { MINT *a;
699951Ssam a=(MINT *)xalloc(2,"itom");
709951Ssam if(n>0)
719951Ssam { a->len=1;
729951Ssam a->val=xalloc(1,"itom1");
739951Ssam *a->val=n;
749951Ssam return(a);
759951Ssam }
769951Ssam else if(n<0)
779951Ssam { a->len = -1;
789951Ssam a->val=xalloc(1,"itom2");
799951Ssam *a->val= -n;
809951Ssam return(a);
819951Ssam }
829951Ssam else
839951Ssam { a->len=0;
849951Ssam return(a);
859951Ssam }
869951Ssam }
mcmp(a,b)879951Ssam mcmp(a,b) MINT *a,*b;
889951Ssam { MINT c;
899951Ssam int res;
909951Ssam if(a->len!=b->len) return(a->len-b->len);
919951Ssam c.len=0;
929951Ssam msub(a,b,&c);
939951Ssam res=c.len;
949951Ssam xfree(&c);
959951Ssam return(res);
969951Ssam }
97