|
|
1.1 root 1: #ifndef lint
2: static char sccsid[] = "@(#)util.c 5.2 (Berkeley) 3/2/87";
3: #endif not lint
4:
5: char *malloc();
6: #ifdef lint
7: int xv_oid;
8: #endif
9: #include <stdio.h>
10: #include <mp.h>
11: move(a,b) MINT *a,*b;
12: { int i,j;
13: xfree(b);
14: b->len=a->len;
15: if((i=a->len)<0) i = -i;
16: if(i==0) return;
17: b->val=xalloc(i,"move");
18: for(j=0;j<i;j++)
19: b->val[j]=a->val[j];
20: return;
21: }
22: dummy(){}
23: short *xalloc(nint,s) char *s;
24: { short *i;
25: i=(short *)malloc(2*(unsigned)nint+4);
26: #ifdef DBG
27: if(dbg) fprintf(stderr, "%s: %o\n",s,i);
28: #endif
29: if(i!=NULL) return(i);
30: fatal("mp: no free space");
31: return(0);
32: }
33: fatal(s) char *s;
34: {
35: fprintf(stderr,"%s\n",s);
36: VOID fflush(stdout);
37: sleep(2);
38: abort();
39: }
40: xfree(c) MINT *c;
41: {
42: #ifdef DBG
43: if(dbg) fprintf(stderr, "xfree ");
44: #endif
45: if(c->len==0) return;
46: shfree(c->val);
47: c->len=0;
48: return;
49: }
50: mcan(a) MINT *a;
51: { int i,j;
52: if((i=a->len)==0) return;
53: else if(i<0) i= -i;
54: for(j=i;j>0 && a->val[j-1]==0;j--);
55: if(j==i) return;
56: if(j==0)
57: { xfree(a);
58: return;
59: }
60: if(a->len > 0) a->len=j;
61: else a->len = -j;
62: }
63: MINT *itom(n)
64: { MINT *a;
65: a=(MINT *)xalloc(2,"itom");
66: if(n>0)
67: { a->len=1;
68: a->val=xalloc(1,"itom1");
69: *a->val=n;
70: return(a);
71: }
72: else if(n<0)
73: { a->len = -1;
74: a->val=xalloc(1,"itom2");
75: *a->val= -n;
76: return(a);
77: }
78: else
79: { a->len=0;
80: return(a);
81: }
82: }
83: mcmp(a,b) MINT *a,*b;
84: { MINT c;
85: int res;
86: if(a->len!=b->len) return(a->len-b->len);
87: c.len=0;
88: msub(a,b,&c);
89: res=c.len;
90: xfree(&c);
91: return(res);
92: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.