]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/rc/subr.c
rc: remove silly efree check
[plan9front.git] / sys / src / cmd / rc / subr.c
1 #include "rc.h"
2 #include "exec.h"
3 #include "io.h"
4 #include "fns.h"
5
6 void *
7 emalloc(long n)
8 {
9         void *p = Malloc(n);
10         if(p==0)
11                 panic("Can't malloc %d bytes", n);
12 /*      if(err){ pfmt(err, "malloc %d->%p\n", n, p); flush(err); } /**/
13         return p;
14 }
15
16 void*
17 erealloc(void *p, long n)
18 {
19         p = Realloc(p, n);              /* botch, should be Realloc */
20         if(p==0)
21                 panic("Can't realloc %d bytes\n", n);
22         return p;
23 }
24
25 void
26 efree(void *p)
27 {
28 /*      pfmt(err, "free %p\n", p); flush(err); /**/
29         if(p)
30                 free(p);
31         else pfmt(err, "free 0\n");
32 }
33 extern int lastword, lastdol;
34
35 void
36 yyerror(char *m)
37 {
38         pfmt(err, "rc: ");
39         if(runq->cmdfile && !runq->iflag)
40                 pfmt(err, "%s:%d: ", runq->cmdfile, runq->lineno);
41         else if(runq->cmdfile)
42                 pfmt(err, "%s: ", runq->cmdfile);
43         else if(!runq->iflag)
44                 pfmt(err, "line %d: ", runq->lineno);
45         if(tok[0] && tok[0]!='\n')
46                 pfmt(err, "token %q: ", tok);
47         pfmt(err, "%s\n", m);
48         flush(err);
49         lastword = 0;
50         lastdol = 0;
51         while(lastc!='\n' && lastc!=EOF) advance();
52         nerror++;
53         setvar("status", newword(m, (word *)0));
54 }
55 char *bp;
56
57 static void
58 iacvt(int n)
59 {
60         if(n<0){
61                 *bp++='-';
62                 n=-n;   /* doesn't work for n==-inf */
63         }
64         if(n/10)
65                 iacvt(n/10);
66         *bp++=n%10+'0';
67 }
68
69 void
70 inttoascii(char *s, long n)
71 {
72         bp = s;
73         iacvt(n);
74         *bp='\0';
75 }
76
77 void
78 panic(char *s, int n)
79 {
80         pfmt(err, "rc: ");
81         pfmt(err, s, n);
82         pchr(err, '\n');
83         flush(err);
84         Abort();
85 }