/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2003 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
#pragma ident "%Z%%M% %I% %E% SMI"
#include <stdio.h>
#include <signal.h>
#include <errno.h>
#include <limits.h>
#include "dc.h"
#include <locale.h>
#include <stdlib.h>
/*
* Routine to handle sign extension of characters on systems that do not
* do automatic sign extension. This should be portable to all 2's and 1's
* complement systems that do or do not provide automatic sign
* extension. If the system provides automatic sign extension or the
* value of 'c' is positive, ctoint() will always return quickly,
* otherwise ctoint() will search for the negative value by attempting
* to wrap 'c' to 0. The number of increments needed to get to 0 is the
* negative value.
*
* Note: This assummes that the representation of values stored in chars
* is sequential and allowed to wrap, and that values < 128 are
* positive. While this is true on 1's and 2's complement machines, it
* may vary on less common architectures.
*/
#if __STDC__
int
ctoint(char c)
#else
int
ctoint(unsigned char c)
#endif
{
int i;
if ((unsigned char)c <= SCHAR_MAX)
return ((int)c); /* Normal promotion will work */
for (i = 0; c++; i--); /* Scan for negative value */
return (i);
}
#if !defined(TEXT_DOMAIN) /* Should be defined by cc -D */
#endif
void commnds(void) __NORETURN;
int
{
(void) textdomain(TEXT_DOMAIN);
commnds();
/* NOTREACHED */
}
void
commnds(void)
{
int c;
struct blk *p, *q;
long l;
int sign;
int n, d;
for (; ; ) {
(c >= 'A' && c <= 'F') || c == '.') {
unreadc(c);
p = readin();
pushp(p);
continue;
}
switch (c) {
case ' ':
case '\n':
case 0377:
case EOF:
continue;
case 'Y':
headmor);
("longest %ld active %ld maxsize %ld\n"), longest,
("new all %d rel %d copy %d more %d lbytes %d\n"),
continue;
case '_':
p = readin();
chsign(p);
pushp(p);
continue;
case '-':
subt();
continue;
case '+':
if (eqk() != 0)
continue;
binop('+');
continue;
case '*':
binop('*');
p = pop();
sunputc(p);
if (sk < k)
sk = k;
}
pushp(p);
continue;
case '/':
if (dscale() != 0)
continue;
binop('/');
if (irem != 0)
continue;
case '%':
if (dscale() != 0)
continue;
binop('/');
p = pop();
release(p);
if (irem == 0) {
continue;
}
release(p);
pushp(q);
continue;
case 'v':
p = pop();
if (length(p) == 0) {
pushp(p);
continue;
}
if ((c = sbackc(p)) < 0) {
}
if (k < savk)
n = savk;
else {
n = k * 2 - savk;
savk = k;
}
continue;
case '^':
neg = 0;
neg++;
}
if (c == EOF)
c = 0;
d = c * savk;
if (k >= savk)
n = k;
else
n = savk;
if (n < d) {
q = removc(p, d - n);
sputc(q, n);
pushp(q);
} else {
sputc(p, d);
pushp(p);
}
if (neg == 0)
continue;
p = pop();
q = salloc(2);
sputc(q, 1);
sputc(q, 0);
pushp(q);
pushp(p);
goto casediv;
case 'z':
p = salloc(2);
if (n >= 100) {
sputc(p, n / 100);
n %= 100;
}
sputc(p, n);
sputc(p, 0);
pushp(p);
continue;
case 'Z':
p = pop();
fsfile(p);
sbackc(p);
if (sfbeg(p) == 0) {
if ((c = sbackc(p)) < 0) {
n -= 2;
if (sfbeg(p) == 1)
n += 1;
else {
if ((c = sbackc(p)) == 0)
n += 1;
else if (c > 90)
n -= 1;
}
} else
if (c < 10)
n -= 1;
}
release(p);
q = salloc(1);
if (n >= 100) {
sputc(q, n%100);
n /= 100;
}
sputc(q, n);
sputc(q, 0);
pushp(q);
continue;
case 'i':
p = pop();
p = scalint(p);
/*
* POSIX.2
* input base must be between 2 and 16
*/
n = length(p);
q = copy(p, n);
fsfile(q);
c = sbackc(q);
if (sfbeg(q) == 0)
if (c < 2)
if (c > 16)
release(q);
inbas = p;
continue;
case 'I':
sputc(p, 0);
pushp(p);
continue;
case 'o':
p = pop();
p = scalint(p);
sign = 0;
n = length(p);
q = copy(p, n);
fsfile(q);
l = c = sbackc(q);
if (n != 1) {
if (c < 0) {
sign = 1;
chsign(q);
n = length(q);
fsfile(q);
l = c = sbackc(q);
}
if (n != 1) {
while (sfbeg(q) == 0)
l = l * 100 + sbackc(q);
}
}
/*
* POSIX.2
* Check that output base is less than or equal
* BC_BASE_MAX.
*/
if (l > BC_BASE_MAX)
obase = l;
if (sign == 1)
obase = -l;
basptr = p;
if (n == 1 && sign == 0) {
if (c <= 16) {
fw = 1;
fw1 = 0;
/*
* POSIX.2
* Line length is 70 characters,
* including newline.
*/
ll = 70;
release(q);
continue;
}
}
n = 0;
if (sign == 1)
n++;
p = salloc(1);
sputc(p, -1);
t = add(p, q);
n += length(t) * 2;
fsfile(t);
if ((c = sbackc(t)) > 9)
n++;
release(t);
release(q);
release(p);
fw = n;
fw1 = n-1;
/*
* POSIX.2
* Line length is 70 characters including newline
*/
ll = 70;
continue;
continue;
case 'O':
sputc(p, 0);
pushp(p);
continue;
case '[':
n = 0;
p = salloc(0);
for (; ; ) {
if ((c = readc()) == ']') {
if (n == 0)
break;
n--;
}
sputc(p, c);
if (c == '[')
n++;
}
pushp(p);
continue;
case 'k':
p = pop();
p = scalint(p);
/*
* POSIX.2
* Make sure scaling factor is between 0 and
* BC_SCALE_MAX. Copy p to q and figure the
* scaling factor.
*/
n = length(p);
q = copy(p, n);
fsfile(q);
c = 0;
scalev = 1;
while (c < BC_SCALE_MAX && sfbeg(q) == 0)
if (c > BC_SCALE_MAX)
release(q);
rewind(p);
scalptr = p;
continue;
case 'K':
sputc(p, 0);
pushp(p);
continue;
case 'X':
p = pop();
fsfile(p);
n = sbackc(p);
release(p);
p = salloc(2);
sputc(p, n);
sputc(p, 0);
pushp(p);
continue;
case 'Q':
p = pop();
if (length(p) > 2) {
error("Q?\n");
}
rewind(p);
if ((c = sgetc(p)) < 0) {
}
release(p);
while (c-- > 0) {
error("readstk?\n");
}
if (*readptr != 0)
readptr--;
}
continue;
case 'q':
exit(0);
if (*readptr != 0)
readptr--;
if (*readptr != 0)
readptr--;
continue;
case 'f':
else {
}
}
continue;
case 'p':
else {
}
continue;
case 'P':
p = pop();
sputc(p, 0);
release(p);
continue;
case 'd':
continue;
}
q = *stkptr;
n = length(q);
pushp(p);
continue;
case 'c':
while (stkerr == 0) {
p = pop();
if (stkerr == 0)
release(p);
}
continue;
case 'S':
}
c = readc() & 0377;
if (sfree == 0)
goto sempty;
p = pop();
if (c >= ARRAYST) {
for (n = 0; n < PTRSZ; n++) {
sputc(q, 0);
}
release(p);
p = q;
}
continue;
case 's':
}
c = readc() & 0377;
if (sptr != 0) {
if (c >= ARRAYST) {
rewind(p);
while (sfeof(p) == 0)
}
release(p);
} else {
if (sfree == 0)
goto sempty;
}
p = pop();
continue;
case 'l':
load();
continue;
case 'L':
c = readc() & 0377;
if (sptr == 0) {
error("L?\n");
}
if (c >= ARRAYST) {
rewind(p);
while (sfeof(p) == 0) {
q = getwd(p);
if (q != 0)
release(q);
}
}
pushp(p);
continue;
case ':':
p = pop();
q = scalint(p);
fsfile(q);
/*
* POSIX.2
* Make sure index is between 0 and BC_DIM_MAX-1
*/
c = 0;
scalev = 1;
while (c < BC_DIM_MAX && sfbeg(q) == 0)
if (c >= BC_DIM_MAX)
release(q);
n = readc() & 0377;
if (sptr == 0) {
if (sfree == 0)
goto sempty;
zero(p);
} else {
release(p);
p = q;
}
}
q = lookwd(p);
if (q != NULL)
release(q);
s = pop();
continue;
case ';':
p = pop();
q = scalint(p);
fsfile(q);
/*
* POSIX.2
* Make sure index is between 0 and BC_DIM_MAX-1
*/
c = 0;
scalev = 1;
while (c < BC_DIM_MAX && sfbeg(q) == 0)
if (c >= BC_DIM_MAX)
release(q);
n = readc() & 0377;
if (sptr != 0) {
s = getwd(p);
if (s != 0) {
pushp(q);
continue;
}
}
}
sputc(q, 0);
pushp(q);
continue;
case 'x':
p = pop();
else {
("nesting depth\n"));
}
}
} else
readptr++;
*readptr = p;
if (p != 0)
rewind(p);
else {
if ((c = readc()) != '\n')
unreadc(c);
}
continue;
case '?':
}
*readptr = 0;
while ((c = readc()) == '!')
command();
p = salloc(0);
sputc(p, c);
while ((c = readc()) != '\n') {
sputc(p, c);
if (c == '\\')
}
*readptr = p;
continue;
case '!':
if (command() == 1)
goto execute;
continue;
case '<':
case '>':
case '=':
if (cond(c) == 1)
goto execute;
continue;
default:
}
}
}
struct blk *
{
rem = 0;
p = salloc(0);
return (p);
}
}
}
if (offset < 0)
goto ddone;
magic = 0;
if (c < 10)
magic++;
if (magic > 0) {
c /= 25;
}
while (offset >= 0) {
cc = c;
if (offset == 0)
td++;
else
cc++;
if (magic != 0)
under = 0;
dig--;
under = 1;
}
carry = 0;
carry = d / 100;
}
carry = 0;
carry = 0;
if (d < 0) {
d += 100;
carry = 1;
}
}
sbackc(p);
sbackc(p);
if ((d != 0) && /* !divcarry */ (offset != 0)) {
}
if (--offset >= 0) {
}
}
if (under) { /* undershot last - adjust */
} else {
}
}
if (divcarry != 0) {
}
rewind(p);
divcarry = 0;
while (sfeof(p) == 0) {
divcarry = 0;
if (d >= 100) {
d -= 100;
divcarry = 1;
}
salterc(p, d);
}
if (divcarry != 0)
fsfile(p);
while (sfbeg(p) == 0) {
if (sbackc(p) == 0)
truncate(p);
else break;
}
if (divsign < 0)
chsign(p);
else break;
}
if (remsign < 0)
return (p);
}
int
dscale(void)
{
int c;
return (1);
}
#ifdef XPG6
#else
#endif
return (1);
}
if (c < 0)
else {
irem = 0;
}
arg1 = r;
savk = k;
return (0);
}
struct blk *
{
struct blk *q, *s, *r;
fsfile(p);
if (neg < 0)
chsign(p);
rewind(p);
while (n > 1) {
n -= 2;
}
r = salloc(2);
while (sfeof(p) == 0)
release(p);
if (n == 1) {
release(r);
if (neg < 0) {
chsign(s);
chsign(q);
irem = q;
return (s);
}
irem = q;
return (s);
}
if (neg < 0) {
chsign(r);
chsign(q);
irem = q;
return (r);
}
irem = q;
return (r);
}
struct blk *
{
struct blk *r, *q, *s, *t;
int c, n, nn;
n = length(p);
fsfile(p);
c = sbackc(p);
if ((n & 1) != 1)
n = (n + 1) >> 1;
r = salloc(n);
zero(r);
seekc(r, n);
nn = 1;
while ((c -= nn) >= 0)
nn += 2;
fsfile(r);
sbackc(r);
if (c >= 100) {
c -= 100;
salterc(r, c);
sputc(r, 1);
} else
salterc(r, c);
for (; ; ) {
q = dcdiv(p, r);
s = add(q, r);
release(q);
release(s);
chsign(s);
t = add(s, q);
release(s);
fsfile(t);
if (nn >= 0)
break;
release(r);
release(t);
r = q;
}
release(t);
release(q);
release(p);
return (r);
}
struct blk *
{
int temp, c, n;
r = salloc(1);
sputc(r, 1);
fsfile(e);
if (sfbeg(e) != 0)
goto edone;
temp = 0;
c = sbackc(e);
if (c < 0) {
temp++;
chsign(e);
}
while (length(e) != 0) {
release(e);
e = e1;
if (n != 0) {
release(r);
r = e1;
}
release(p);
release(t);
p = cp;
}
if (temp != 0) {
goto edone;
}
if (c > 1)
create(r);
else {
create(r);
sputc(r, c);
} else
create(r);
}
}
release(p);
release(e);
return (r);
}
void
{
char *dcmalloc();
default:
dbg = 1;
}
svargc--;
svargv++;
}
ifile = 1;
if (svargc <= 0)
else {
perror("");
exit(1);
}
svargv[1]);
exit(1);
}
} else {
svargv[1]);
exit(1);
}
}
obase = 10;
/*
* POSIX.2
* default line length is 70 characters including newline
*/
ll = 70;
fw = 1;
fw1 = 0;
obase = 10;
stkerr = 0;
k = 0;
sptr++;
}
}
void
{
if (*readptr != 0)
readptr--;
}
commnds();
}
void
{
else {
stkerr = 0;
*++stkptr = p;
}
}
struct blk *
pop(void)
{
stkerr = 1;
return (0);
}
return (*stkptr--);
}
struct blk *
readin(void)
{
struct blk *p, *q;
int c;
p = salloc(0);
for (; ; ) {
c = readc();
switch (c) {
case '.':
if (dp != 0)
goto gotnum;
dp++;
continue;
case '\\':
readc();
continue;
default:
if (c >= 'A' && c <= 'F')
c = c - 'A' + 10;
else
if (c >= '0' && c <= '9')
c -= '0';
else
goto gotnum;
if (dp != 0) {
if (dpct >= 99)
continue;
dpct++;
}
if (c != 0)
release(p);
release(q);
}
}
unreadc(c);
if (dp == 0) {
sputc(p, 0);
return (p);
} else {
/* if not base 10, then scale fractional input to precision */
while (dpct < k) {
release(p);
release(q);
dpct++;
}
}
return (q);
}
}
/*
* returns pointer to struct with ct 0's & p
*/
struct blk *
{
struct blk *q, *t;
while (ct > 1) {
sputc(q, 0);
ct -= 2;
}
rewind(p);
while (sfeof(p) == 0) {
}
release(p);
if (ct == 1) {
release(q);
return (t);
}
return (q);
}
struct blk *
{
fsfile(p);
mp = p;
if (sfbeg(p) == 0) {
if (sbackc(p) < 0) {
}
}
fsfile(q);
mq = q;
if (sfbeg(q) == 0) {
if (sbackc(q) < 0) {
}
}
carry = 0;
}
offset++;
if (carry != 0) {
}
}
if (sign < 0) {
}
if (mp != p)
if (mq != q)
return (mr);
}
void
{
int carry;
char ct;
carry = 0;
rewind(p);
while (sfeof(p) == 0) {
carry = 1;
if (ct >= 100) {
ct -= 100;
carry = 0;
}
}
if (carry != 0) {
sputc(p, -1);
fsfile(p);
sbackc(p);
if (ct == 99) {
truncate(p);
sputc(p, -1);
}
} else {
fsfile(p);
if (ct == 0)
truncate(p);
}
}
char
readc(void)
{
loop:
readptr--;
goto loop;
}
return (lastchar);
readptr--;
if (*readptr == 0)
goto loop;
}
goto loop;
}
exit(0);
}
void
unreadc(char c)
{
} else
}
void
binop(char c)
{
struct blk *r;
switch (c) {
case '+':
break;
case '*':
break;
case '/':
break;
}
pushp(r);
}
void
{
}
printf("\n");
return;
}
}
printf("0\n");
return;
}
sunputc(p);
fsfile(p);
if (sbackc(p) < 0) {
chsign(p);
OUTC('-');
}
return;
}
if (obase == 1) {
return;
}
if (obase == 10) {
return;
}
while (length(p) != 0) {
release(p);
p = q;
if (obase > 16)
}
release(p);
if (sc == 0) {
printf("\n");
return;
}
OUTC('.');
ct = 0;
do {
(*outdit)(p, 1);
printf("\n");
}
struct blk *
{
int cc;
struct blk *q, *t, *s;
rewind(p);
return (q);
}
while (sc >= 1) {
sc -= 2;
}
if (sc != 0) {
release(q);
rewind(t);
while (cc-- > 0)
sputc(s, 0);
release(t);
release(s);
return (t);
}
return (q);
}
void
{
int c, f;
fsfile(p);
f = 0;
/*
* at this point, the number is stored as base 100 (two decimal
* digits per char) stuck in a buf (character array) backwards.
* sc indicates the scaling factor.
*/
/*
* get numbers from the buf until we are the beginning of
* the buf (i.e., there are no more numbers) or the numbers
* remaining fall within the scaled (to the right of the
* decimal point) portion.
*/
c = sbackc(p);
/*
* POSIX.2
* as we output digits, we have to watch the line length (ll)
* which should include a '\' and a newline.
*/
if (c < 10) {
/*
* if the number is less than 10, we need to output
* a space-holding '0' (unless this is the first time
* through).
*/
if (f == 1) {
printf("0");
count--;
}
printf("%d", c);
count--;
} else {
count--;
count--;
}
f = 1;
}
if (sc == 0) {
/*
* no scaling factor, so we must have exited loop because we
* ran out of numbers.
*/
printf("\n");
release(p);
return;
}
c = sbackc(p);
count--;
printf(".");
count--;
count--;
sc--;
} else {
printf(".");
count--;
}
printf("0");
count--;
sc--;
}
}
/* now go through the scaled portion of the number */
while (sc > 1) {
c = sbackc(p);
if (c < 10) {
printf("0");
count--;
printf("%d", c);
count--;
} else {
count--;
count--;
}
sc -= 2;
}
}
printf("\n");
release(p);
}
void
{
struct blk *q;
while (length(q) > 0) {
release(q);
q = p;
}
release(q);
printf("\n");
}
void
{
int c;
rewind(p);
if (sfeof(p) != 0) {
release(p);
return;
}
c = sgetc(p);
release(p);
if (c >= 16) {
return;
}
}
void
{
struct blk *t, *q;
int l;
int neg;
if (flg == 1)
t = salloc(0);
else {
t = strptr;
}
neg = 0;
if (length(p) != 0) {
fsfile(p);
if (sbackc(p) < 0) {
neg = 1;
chsign(p);
}
while (length(p) != 0) {
release(p);
p = q;
}
}
release(p);
if (flg == 1) {
if (neg != 0) {
l--;
}
fsfile(t);
while (l-- > 0)
while (sfbeg(t) == 0)
release(t);
} else {
while (l-- > 0)
if (neg != 0) {
}
}
}
struct blk *
{
struct blk *p;
int carry, n;
int size;
carry = 0;
while (--size >= 0) {
if (n >= 100) {
carry = 1;
n -= 100;
} else
if (n < 0) {
carry = -1;
n += 100;
} else
carry = 0;
sputc(p, n);
}
if (carry != 0)
fsfile(p);
if (sfbeg(p) == 0) {
if (c != 0)
salterc(p, c);
truncate(p);
}
fsfile(p);
while ((c = sbackc(p)) == 99) {
if (c == EOF)
break;
}
sgetc(p);
salterc(p, -1);
truncate(p);
}
return (p);
}
int
eqk(void) {
struct blk *p, *q;
p = pop();
q = pop();
EMPTYSR(p);
arg1 = p;
arg2 = q;
return (0);
} else
} else {
}
arg1 = p;
arg2 = q;
return (0);
}
struct blk *
{
struct blk *q, *r;
rewind(p);
while (n > 1) {
sgetc(p);
n -= 2;
}
q = salloc(2);
while (sfeof(p) == 0)
if (n == 1) {
release(q);
q = r;
}
release(p);
return (q);
}
struct blk *
{
int n;
n = sunputc(p);
p = removc(p, n);
return (p);
}
struct blk *
{
struct blk *q, *s, *t;
t = add0(p, n);
q = salloc(1);
sputc(q, n);
release(q);
q = dcdiv(t, s);
release(t);
release(s);
sputc(q, n);
return (q);
}
int
subt(void)
{
if (eqk() != 0)
return (1);
binop('+');
return (0);
}
int
command(void)
{
int c;
void (*savint)();
int retcode;
switch (c = readc()) {
case '<':
case '>':
case '=':
default:
*sl++ = c;
while ((c = readc()) != '\n')
*sl++ = c;
*sl = 0;
exit(0100);
}
return (0);
}
}
int
cond(char c)
{
struct blk *p;
int cc;
if (subt() != 0)
return (1);
p = pop();
sunputc(p);
if (length(p) == 0) {
release(p);
readc();
return (0);
}
load();
return (1);
} else {
if (c == '=') {
release(p);
readc();
return (0);
}
}
if (c == NE) {
release(p);
load();
return (1);
}
fsfile(p);
release(p);
readc();
return (0);
}
load();
return (1);
}
void
load(void)
{
int c;
struct blk *p, *q, *t, *s;
c = readc() & 0377;
if (sptr != 0) {
if (c >= ARRAYST) {
rewind(p);
while (sfeof(p) == 0) {
s = getwd(p);
if (s == 0)
else {
putwd(q, t);
}
}
pushp(q);
} else {
pushp(q);
}
} else {
q = salloc(1);
if (c <= LASTFUN) {
("function %c undefined\n"), c + 'a' - 1);
sputc(q, 'c');
sputc(q, '0');
sputc(q, ' ');
sputc(q, '1');
sputc(q, 'Q');
} else
sputc(q, 0);
pushp(q);
}
}
int
log2(long n)
{
int i;
if (n == 0)
return (0);
i = 31;
if (n < 0)
return (i);
while ((n = n << 1) > 0)
i--;
return (--i);
}
struct blk *
{
char *ptr;
char *dcmalloc();
all++;
lall++;
if (ptr == 0) {
garbage("salloc");
ospace("salloc");
}
return (hdr);
}
struct blk *
morehd(void)
{
char *dcmalloc();
headmor++;
if (hfree == 0) {
garbage("morehd");
ospace("headers");
}
kk = h;
(--h)->rd = 0;
return (hfree);
}
struct blk *
{
unsigned sz;
char *ptr;
all++;
lall++;
lcopy++;
if (ptr == 0) {
garbage("copy");
ospace("copy");
}
}
*ptr++ = '\0';
return (hdr);
}
void
{
char *p;
if (hptr) {
printf("%d ", *p++);
printf("\n");
} else
}
void
{
char *nn, *p;
if (n > longest)
longest = n;
if (p == 0) {
garbage("seekc");
ospace("seekc");
}
return;
}
}
void
{
}
void
{
unsigned size;
char *p;
size = 1;
lmore++;
if (p == 0) {
garbage("more");
ospace("more");
}
}
void
ospace(char *s)
{
abort();
}
void
garbage(char *s)
{
int i;
struct blk *p, *q;
int ct;
for (i = 0; i < TBLSZ; i++) {
if (tmps != 0) {
if (i < ARRAYST) {
do {
if (((int)p->beg & 01) != 0) {
"string %o\n"), i);
sdump("odd beg", p);
}
redef(p);
} while (tmps != 0);
continue;
} else {
do {
rewind(p);
ct = 0;
ct++;
if (q != 0) {
if (((int)q->beg & 01)
!= 0) {
i - ARRAYST,
ct);
tmps, p);
sdump("elt", q);
}
redef(q);
}
}
} while (tmps != 0);
}
}
}
}
void
{
int offset;
char *newp;
char *dcmalloc();
if ((int)p->beg & 01) {
ospace("redef-bad");
}
ospace("dummy");
ospace("redef");
}
void
{
rel++;
lrel++;
hfree = p;
}
struct blk *
{
return (NULL);
}
void
{
more(p);
}
struct blk *
{
return (NULL);
}
char *
{
char *dcmalloc();
char *q, *r;
if (q == 0)
return (0);
while (nbytes--)
*q++ = *p++;
return (r);
}
char *
{
}