34 |
|
|
35 |
|
extern char *ecalloc(), *savestr(); |
36 |
|
|
37 |
< |
extern double dvalue(); |
37 |
> |
static double dvalue(); |
38 |
|
|
39 |
|
long eclock = -1; /* value storage timer */ |
40 |
|
|
68 |
|
eputs(": cannot open\n"); |
69 |
|
quit(1); |
70 |
|
} |
71 |
< |
initfile(fname, fp); |
71 |
> |
initfile(fp, fname, 0); |
72 |
|
while (nextc != EOF) |
73 |
|
loaddefn(); |
74 |
|
if (fname != NULL) |
76 |
|
} |
77 |
|
|
78 |
|
|
79 |
< |
scompile(file, str) /* get definitions from a string */ |
80 |
< |
char *file; |
79 |
> |
scompile(str, fn, ln) /* get definitions from a string */ |
80 |
|
char *str; |
81 |
+ |
char *fn; |
82 |
+ |
int ln; |
83 |
|
{ |
84 |
< |
initstr(file, str); |
84 |
> |
initstr(str, fn, ln); |
85 |
|
while (nextc != EOF) |
86 |
|
loaddefn(); |
87 |
|
} |
115 |
|
ep2 = ep1->v.kid->sibling; |
116 |
|
if (ep2->type == NUM) { |
117 |
|
ep2->v.num = val; |
117 |
– |
ep2->sibling->v.tick = -1; |
118 |
|
return; |
119 |
|
} |
120 |
|
} |
129 |
|
ep2->type = NUM; |
130 |
|
ep2->v.num = val; |
131 |
|
addekid(ep1, ep2); |
132 |
– |
ep2 = newnode(); |
133 |
– |
ep2->type = TICK; |
134 |
– |
ep2->v.tick = -1; |
135 |
– |
addekid(ep1, ep2); |
136 |
– |
ep2 = newnode(); |
137 |
– |
ep2->type = NUM; |
138 |
– |
addekid(ep1, ep2); |
132 |
|
dclear(vname); |
133 |
|
dpush(ep1); |
134 |
|
} |
493 |
|
quit(1); |
494 |
|
} |
495 |
|
ep1 = d->v.kid->sibling; /* get expression */ |
496 |
+ |
if (ep1->type == NUM) |
497 |
+ |
return(ep1->v.num); /* return if number */ |
498 |
|
ep2 = ep1->sibling; /* check time */ |
499 |
|
if (ep2->v.tick < 0 || ep2->v.tick < eclock) { |
500 |
|
ep2->v.tick = eclock; |
501 |
|
ep2 = ep2->sibling; |
502 |
< |
ep2->v.num = evalue(ep1); /* compute new value */ |
502 |
> |
ep2->v.num = evalue(ep1); /* needs new value */ |
503 |
|
} else |
504 |
< |
ep2 = ep2->sibling; /* reuse old value */ |
504 |
> |
ep2 = ep2->sibling; /* else reuse old value */ |
505 |
|
|
506 |
|
return(ep2->v.num); |
507 |
|
} |