13e12c5d1SDavid du Colombier #include "rc.h" 23e12c5d1SDavid du Colombier #include "exec.h" 33e12c5d1SDavid du Colombier #include "io.h" 43e12c5d1SDavid du Colombier #include "fns.h" 53e12c5d1SDavid du Colombier char *emalloc(long n){ 63e12c5d1SDavid du Colombier char *p=(char *)Malloc(n); 73e12c5d1SDavid du Colombier if(p==0) panic("Can't malloc %d bytes", n); 83e12c5d1SDavid du Colombier /* if(err){ pfmt(err, "malloc %d->%p\n", n, p); flush(err); } /**/ 93e12c5d1SDavid du Colombier return p; 103e12c5d1SDavid du Colombier } 113e12c5d1SDavid du Colombier void efree(char *p) 123e12c5d1SDavid du Colombier { 133e12c5d1SDavid du Colombier /* pfmt(err, "free %p\n", p); flush(err); /**/ 143e12c5d1SDavid du Colombier if(p) free(p); 153e12c5d1SDavid du Colombier else pfmt(err, "free 0\n"); 163e12c5d1SDavid du Colombier } 17*219b2ee8SDavid du Colombier extern int lastword, lastdol; 183e12c5d1SDavid du Colombier void yyerror(char *m) 193e12c5d1SDavid du Colombier { 203e12c5d1SDavid du Colombier pfmt(err, "rc: "); 213e12c5d1SDavid du Colombier if(runq->cmdfile) pfmt(err, "file %s: ", runq->cmdfile); 223e12c5d1SDavid du Colombier if(!runq->iflag) pfmt(err, "line %d: ", runq->lineno); 233e12c5d1SDavid du Colombier if(tok[0] && tok[0]!='\n') pfmt(err, "token %q: ", tok); 243e12c5d1SDavid du Colombier pfmt(err, "%s\n", m); 253e12c5d1SDavid du Colombier flush(err); 26*219b2ee8SDavid du Colombier lastword=0; 27*219b2ee8SDavid du Colombier lastdol=0; 283e12c5d1SDavid du Colombier while(lastc!='\n' && lastc!=EOF) advance(); 293e12c5d1SDavid du Colombier nerror++; 303e12c5d1SDavid du Colombier } 313e12c5d1SDavid du Colombier char *bp; 323e12c5d1SDavid du Colombier void iacvt(int n){ 333e12c5d1SDavid du Colombier if(n<0){ 343e12c5d1SDavid du Colombier *bp++='-'; 353e12c5d1SDavid du Colombier n=-n; /* doesn't work for n==-inf */ 363e12c5d1SDavid du Colombier } 373e12c5d1SDavid du Colombier if(n/10) 383e12c5d1SDavid du Colombier iacvt(n/10); 393e12c5d1SDavid du Colombier *bp++=n%10+'0'; 403e12c5d1SDavid du Colombier } 413e12c5d1SDavid du Colombier void itoa(char *s, int n) 423e12c5d1SDavid du Colombier { 433e12c5d1SDavid du Colombier bp=s; 443e12c5d1SDavid du Colombier iacvt(n); 453e12c5d1SDavid du Colombier *bp='\0'; 463e12c5d1SDavid du Colombier } 473e12c5d1SDavid du Colombier void panic(char *s, int n) 483e12c5d1SDavid du Colombier { 493e12c5d1SDavid du Colombier pfmt(err, "rc: "); 503e12c5d1SDavid du Colombier pfmt(err, s, n); 513e12c5d1SDavid du Colombier pchr(err, '\n'); 523e12c5d1SDavid du Colombier flush(err); 533e12c5d1SDavid du Colombier Abort(); 543e12c5d1SDavid du Colombier } 55