prettiness police
[unix-history] / usr / src / lib / libmp / util.c
CommitLineData
a493d448
KB
1/*-
2 * %sccs.include.proprietary.c%
3 */
4
051b1e55 5#ifndef lint
ffe68dc9 6static char sccsid[] = "@(#)util.c 8.1 (Berkeley) %G%";
a493d448 7#endif /* not lint */
59fd1272
SL
8
9char *malloc();
10#ifdef lint
11int xv_oid;
12#endif
13#include <stdio.h>
14#include <mp.h>
15move(a,b) MINT *a,*b;
16{ int i,j;
17 xfree(b);
18 b->len=a->len;
19 if((i=a->len)<0) i = -i;
20 if(i==0) return;
21 b->val=xalloc(i,"move");
22 for(j=0;j<i;j++)
23 b->val[j]=a->val[j];
24 return;
25}
26dummy(){}
27short *xalloc(nint,s) char *s;
28{ short *i;
29 i=(short *)malloc(2*(unsigned)nint+4);
30#ifdef DBG
31 if(dbg) fprintf(stderr, "%s: %o\n",s,i);
32#endif
33 if(i!=NULL) return(i);
34 fatal("mp: no free space");
35 return(0);
36}
37fatal(s) char *s;
38{
39 fprintf(stderr,"%s\n",s);
40 VOID fflush(stdout);
41 sleep(2);
42 abort();
43}
44xfree(c) MINT *c;
45{
46#ifdef DBG
47 if(dbg) fprintf(stderr, "xfree ");
48#endif
49 if(c->len==0) return;
50 shfree(c->val);
51 c->len=0;
52 return;
53}
54mcan(a) MINT *a;
55{ int i,j;
56 if((i=a->len)==0) return;
57 else if(i<0) i= -i;
58 for(j=i;j>0 && a->val[j-1]==0;j--);
59 if(j==i) return;
60 if(j==0)
61 { xfree(a);
62 return;
63 }
64 if(a->len > 0) a->len=j;
65 else a->len = -j;
66}
67MINT *itom(n)
68{ MINT *a;
69 a=(MINT *)xalloc(2,"itom");
70 if(n>0)
71 { a->len=1;
72 a->val=xalloc(1,"itom1");
73 *a->val=n;
74 return(a);
75 }
76 else if(n<0)
77 { a->len = -1;
78 a->val=xalloc(1,"itom2");
79 *a->val= -n;
80 return(a);
81 }
82 else
83 { a->len=0;
84 return(a);
85 }
86}
87mcmp(a,b) MINT *a,*b;
88{ MINT c;
89 int res;
90 if(a->len!=b->len) return(a->len-b->len);
91 c.len=0;
92 msub(a,b,&c);
93 res=c.len;
94 xfree(&c);
95 return(res);
96}