Add dc(1) sources
This commit is contained in:
commit
6fcea8b76c
7 changed files with 2580 additions and 0 deletions
30
LICENSE.bsd
Normal file
30
LICENSE.bsd
Normal file
|
@ -0,0 +1,30 @@
|
|||
Copyright (c) 1980, 1993
|
||||
The Regents of the University of California. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. All advertising materials mentioning features or use of this software
|
||||
must display the following acknowledgement:
|
||||
This product includes software developed by the University of
|
||||
California, Berkeley and its contributors.
|
||||
4. Neither the name of the University nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
19
LICENSE.gritter
Normal file
19
LICENSE.gritter
Normal file
|
@ -0,0 +1,19 @@
|
|||
Copyright (c) 2003 Gunnar Ritter
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute
|
||||
it freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source distribution.
|
31
LICENSE.v7
Normal file
31
LICENSE.v7
Normal file
|
@ -0,0 +1,31 @@
|
|||
Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
Redistributions of source code and documentation must retain the
|
||||
above copyright notice, this list of conditions and the following
|
||||
disclaimer.
|
||||
Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
All advertising materials mentioning features or use of this software
|
||||
must display the following acknowledgement:
|
||||
This product includes software developed or owned by Caldera
|
||||
International, Inc.
|
||||
Neither the name of Caldera International, Inc. nor the names of
|
||||
other contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
|
||||
INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
5
dc/COPYING
Normal file
5
dc/COPYING
Normal file
|
@ -0,0 +1,5 @@
|
|||
dc.1 and dc.h are derived from Unix 7th edition. See LICENSE.v7
|
||||
dc.c is derived from 4.4BSD. See LICENSE.bsd
|
||||
|
||||
Additionally, the files have been modified by Gunnar Ritter. See
|
||||
LICENSE.gritter
|
231
dc/dc.1
Normal file
231
dc/dc.1
Normal file
|
@ -0,0 +1,231 @@
|
|||
.\"
|
||||
.\" Sccsid @(#)dc.1 1.5 (gritter) 1/11/03
|
||||
.\" Derived from dc(1), Unix 7th edition:
|
||||
.\" Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" Redistributions of source code and documentation must retain the
|
||||
.\" above copyright notice, this list of conditions and the following
|
||||
.\" disclaimer.
|
||||
.\" Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed or owned by Caldera
|
||||
.\" International, Inc.
|
||||
.\" Neither the name of Caldera International, Inc. nor the names of
|
||||
.\" other contributors may be used to endorse or promote products
|
||||
.\" derived from this software without specific prior written permission.
|
||||
.\"
|
||||
.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
|
||||
.\" INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
|
||||
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE
|
||||
.\" LIABLE FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
.\" OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
.\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.TH DC 1 "1/11/03" "Heirloom Toolchest" "User Commands"
|
||||
.SH NAME
|
||||
dc \- desk calculator
|
||||
.SH SYNOPSIS
|
||||
\fBdc\fR [\fIfile\fR]
|
||||
.SH DESCRIPTION
|
||||
.I Dc
|
||||
is an arbitrary precision arithmetic package.
|
||||
Ordinarily it operates on decimal integers,
|
||||
but one may specify an input base, output base,
|
||||
and a number of fractional digits to be maintained.
|
||||
The overall structure of
|
||||
.I dc
|
||||
is
|
||||
a stacking (reverse Polish) calculator.
|
||||
If an argument is given,
|
||||
input is taken from that file until its end,
|
||||
then from the standard input.
|
||||
The following constructions are recognized:
|
||||
.HP 6
|
||||
number
|
||||
.br
|
||||
The value of the number is pushed on the stack.
|
||||
A number is an unbroken string of the digits 0-9.
|
||||
It may be preceded by an underscore _ to input a
|
||||
negative number.
|
||||
Numbers may contain decimal points.
|
||||
.HP 6
|
||||
+ \- / * % ^
|
||||
.br
|
||||
The
|
||||
top two values on the stack are added
|
||||
(+),
|
||||
subtracted
|
||||
(\-),
|
||||
multiplied (*),
|
||||
divided (/),
|
||||
remaindered (%),
|
||||
or exponentiated (^).
|
||||
The two entries are popped off the stack;
|
||||
the result is pushed on the stack in their place.
|
||||
Any fractional part of an exponent is ignored.
|
||||
.TP
|
||||
.BI s x
|
||||
The
|
||||
top of the stack is popped and stored into
|
||||
a register named
|
||||
.I x,
|
||||
where
|
||||
.I x
|
||||
may be any character.
|
||||
If
|
||||
the
|
||||
.B s
|
||||
is capitalized,
|
||||
.I x
|
||||
is treated as a stack and the value is pushed on it.
|
||||
.TP
|
||||
.BI l x
|
||||
The
|
||||
value in register
|
||||
.I x
|
||||
is pushed on the stack.
|
||||
The register
|
||||
.I x
|
||||
is not altered.
|
||||
All registers start with zero value.
|
||||
If the
|
||||
.B l
|
||||
is capitalized,
|
||||
register
|
||||
.I x
|
||||
is treated as a stack and its top value is popped onto the main stack.
|
||||
.TP
|
||||
.B d
|
||||
The
|
||||
top value on the stack is duplicated.
|
||||
.TP
|
||||
.B p
|
||||
The top value on the stack is printed.
|
||||
The top value remains unchanged.
|
||||
.B P
|
||||
interprets the top of the stack as an ascii string,
|
||||
removes it, and prints it.
|
||||
.TP
|
||||
.B f
|
||||
All values on the stack and in registers are printed.
|
||||
.TP
|
||||
.B q
|
||||
exits the program.
|
||||
If executing a string, the recursion level is
|
||||
popped by two.
|
||||
If
|
||||
.B q
|
||||
is capitalized,
|
||||
the top value on the stack is popped and the string execution level is popped
|
||||
by that value.
|
||||
.TP
|
||||
.B x
|
||||
treats the top element of the stack as a character string
|
||||
and executes it as a string of dc commands.
|
||||
.TP
|
||||
.B X
|
||||
replaces the number on the top of the stack with its scale factor.
|
||||
.TP
|
||||
.B "[ ... ]"
|
||||
puts the bracketed ascii string onto the top of the stack.
|
||||
.HP 6
|
||||
.I "<x >x =x"
|
||||
.br
|
||||
The
|
||||
top two elements of the stack are popped and compared.
|
||||
Register
|
||||
.I x
|
||||
is executed if they obey the stated
|
||||
relation.
|
||||
.TP
|
||||
.B v
|
||||
replaces the top element on the stack by its square root.
|
||||
Any existing fractional part of the argument is taken
|
||||
into account, but otherwise the scale factor is ignored.
|
||||
.TP
|
||||
.B !
|
||||
interprets the rest of the line as a UNIX command.
|
||||
.TP
|
||||
.B c
|
||||
All values on the stack are popped.
|
||||
.TP
|
||||
.B i
|
||||
The top value on the stack is popped and used as the
|
||||
number radix for further input.
|
||||
.B I
|
||||
pushes the input base on the top of the stack.
|
||||
.TP
|
||||
.B o
|
||||
The top value on the stack is popped and used as the
|
||||
number radix for further output.
|
||||
.TP
|
||||
.SM
|
||||
.B O
|
||||
pushes the output base on the top of the stack.
|
||||
.TP
|
||||
.B k
|
||||
the top of the stack is popped, and that value is used as
|
||||
a non-negative scale factor:
|
||||
the appropriate number of places
|
||||
are printed on output,
|
||||
and maintained during multiplication, division, and exponentiation.
|
||||
The interaction of scale factor,
|
||||
input base, and output base will be reasonable if all are changed
|
||||
together.
|
||||
.TP
|
||||
.B z
|
||||
The stack level is pushed onto the stack.
|
||||
.TP
|
||||
.SM
|
||||
.B Z
|
||||
replaces the number on the top of the stack with its length.
|
||||
.TP
|
||||
.B ?
|
||||
A line of input is taken from the input source (usually the terminal)
|
||||
and executed.
|
||||
.TP
|
||||
.B "; :"
|
||||
are used by
|
||||
.I bc
|
||||
for array operations.
|
||||
.PP
|
||||
An example which prints the first ten values of n! is
|
||||
.nf
|
||||
.PP
|
||||
.in +3
|
||||
[la1+dsa*pla10>y]sy
|
||||
.br
|
||||
0sa1
|
||||
.br
|
||||
lyx
|
||||
.fi
|
||||
.SH "SEE ALSO"
|
||||
bc(1),
|
||||
which is a preprocessor for
|
||||
.I dc
|
||||
providing infix notation and a C-like syntax
|
||||
which implements functions and reasonable control
|
||||
structures for programs.
|
||||
.SH DIAGNOSTICS
|
||||
`x is unimplemented' where x is an octal number.
|
||||
.br
|
||||
`stack empty' for not enough elements on the stack to do what was asked.
|
||||
.br
|
||||
`Out of space' when the free list is exhausted (too many digits).
|
||||
.br
|
||||
`Out of headers' for too many numbers being kept around.
|
||||
.br
|
||||
`Out of pushdown' for too many items on the stack.
|
||||
.br
|
||||
`Nesting Depth' for too many levels of nested execution.
|
203
dc/dc.h
Normal file
203
dc/dc.h
Normal file
|
@ -0,0 +1,203 @@
|
|||
/* from Unix 7th Edition /usr/src/cmd/dc/dc.h */
|
||||
/*
|
||||
* Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* Redistributions of source code and documentation must retain the
|
||||
* above copyright notice, this list of conditions and the following
|
||||
* disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed or owned by Caldera
|
||||
* International, Inc.
|
||||
* Neither the name of Caldera International, Inc. nor the names of
|
||||
* other contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
|
||||
* INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* Sccsid @(#)dc.h 1.9 (gritter) 2/4/05> */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
|
||||
#define FATAL 0
|
||||
#define NFATAL 1
|
||||
#define BLK sizeof(struct blk)
|
||||
#define PTRSZ sizeof(int *)
|
||||
#define HEADSZ 1024
|
||||
#define STKSZ 100
|
||||
#define RDSKSZ 100
|
||||
#define TBLSZ 256
|
||||
#define ARRAYST 0241
|
||||
#define NL 1
|
||||
#define NG 2
|
||||
#define NE 3
|
||||
#define length(p) ((p)->wt-(p)->beg)
|
||||
#define rewind(p) (p)->rd=(p)->beg
|
||||
#define create(p) (p)->rd = (p)->wt = (p)->beg
|
||||
#define fsfile(p) (p)->rd = (p)->wt
|
||||
#define truncate(p) (p)->wt = (p)->rd
|
||||
#define sfeof(p) (((p)->rd>=(p)->wt)?1:0)
|
||||
#define sfbeg(p) (((p)->rd==(p)->beg)?1:0)
|
||||
#define sungetc(p,c) *(--(p)->rd)=c
|
||||
#ifdef interdata
|
||||
#define NEGBYTE 0200
|
||||
#define MASK (-1 & ~0377)
|
||||
#define sgetc(p) ( ((p)->rd==(p)->wt) ? EOF :( ((*(p)->rd & NEGBYTE) != 0) ? ( *(p)->rd++ | MASK): *(p)->rd++ ))
|
||||
#define slookc(p) ( ((p)->rd==(p)->wt) ? EOF :( ((*(p)->rd & NEGBYTE) != 0) ? (*(p)->rd | MASK) : *(p)->rd ))
|
||||
#define sbackc(p) ( ((p)->rd==(p)->beg) ? EOF :( ((*(--(p)->rd) & NEGBYTE) != 0) ? (*(p)->rd | MASK): *(p)->rd ))
|
||||
#endif
|
||||
#ifndef interdata
|
||||
#define sgetc(p) (((p)->rd==(p)->wt)?EOF:*(p)->rd++)
|
||||
#define slookc(p) (((p)->rd==(p)->wt)?EOF:*(p)->rd)
|
||||
#define sbackc(p) (((p)->rd==(p)->beg)?EOF:*(--(p)->rd))
|
||||
#endif
|
||||
#define sputc(p,c) {if((p)->wt==(p)->last)more(p); *(p)->wt++ = c; }
|
||||
#define salterc(p,c) {if((p)->rd==(p)->last)more(p); *(p)->rd++ = c; if((p)->rd>(p)->wt)(p)->wt=(p)->rd;}
|
||||
#define sunputc(p) (*( (p)->rd = --(p)->wt))
|
||||
#define zero(p) for(pp=(p)->beg;pp<(p)->last;)*pp++='\0'
|
||||
#define OUTC(x) {int _c = (x); if (_c) {printf("%c",_c); if(--count == 0){printf("\\\n"); count=ll;} } }
|
||||
#define TEST2(b) { OUTC(b[0] & 0377); OUTC(b[1] & 0377); }
|
||||
#define EMPTY if(stkerr != 0){printf("stack empty\n"); continue; }
|
||||
#define EMPTYR(x) if(stkerr!=0){pushp(x);printf("stack empty\n");continue;}
|
||||
#define EMPTYS if(stkerr != 0){printf("stack empty\n"); return(1);}
|
||||
#define EMPTYSR(x) if(stkerr !=0){printf("stack empty\n");pushp(x);return(1);}
|
||||
#define error(p) {printf(p); continue; }
|
||||
#define errorrt(p) {printf(p); return(1); }
|
||||
struct blk {
|
||||
char *rd;
|
||||
char *wt;
|
||||
char *beg;
|
||||
char *last;
|
||||
};
|
||||
struct blk *hfree;
|
||||
struct blk *arg1, *arg2;
|
||||
int svargc;
|
||||
char savk;
|
||||
char **svargv;
|
||||
int dbg;
|
||||
int ifile;
|
||||
FILE *curfile;
|
||||
struct blk *scalptr, *basptr, *tenptr, *inbas;
|
||||
struct blk *sqtemp, *chptr, *strptr, *divxyz;
|
||||
struct blk *stack[STKSZ];
|
||||
struct blk **stkptr,**stkbeg;
|
||||
struct blk **stkend;
|
||||
int stkerr;
|
||||
int lastchar;
|
||||
struct blk *readstk[RDSKSZ];
|
||||
struct blk **readptr;
|
||||
struct blk *rem;
|
||||
int k;
|
||||
struct blk *irem;
|
||||
int skd,skr;
|
||||
int neg;
|
||||
struct sym {
|
||||
struct sym *next;
|
||||
struct blk *val;
|
||||
} symlst[TBLSZ];
|
||||
struct sym *stable[TBLSZ];
|
||||
struct sym *sptr,*sfree;
|
||||
struct wblk {
|
||||
struct blk **rdw;
|
||||
struct blk **wtw;
|
||||
struct blk **begw;
|
||||
struct blk **lastw;
|
||||
};
|
||||
FILE *fsave;
|
||||
long rel;
|
||||
long nbytes;
|
||||
long all;
|
||||
long headmor;
|
||||
long obase;
|
||||
int fw,fw1,ll;
|
||||
int (*outdit)(struct blk *, int, int);
|
||||
int logo;
|
||||
int log_10;
|
||||
int count;
|
||||
char *pp;
|
||||
char *dummy;
|
||||
|
||||
#define div(a, b) dcdiv(a, b)
|
||||
#define sqrt(a) dcsqrt(a)
|
||||
#define exp(a, b) dcexp(a, b)
|
||||
#define getwd(a) dcgetwd(a)
|
||||
extern void commnds(void);
|
||||
extern struct blk *div(struct blk *, struct blk *);
|
||||
extern int dscale(void);
|
||||
extern struct blk *removr(struct blk *, int);
|
||||
extern struct blk *sqrt(struct blk *);
|
||||
extern struct blk *exp(struct blk *, struct blk *);
|
||||
extern void init(int, char *[]);
|
||||
extern void onintr(int);
|
||||
extern void pushp(struct blk *);
|
||||
extern struct blk *pop(void);
|
||||
extern struct blk *readin(void);
|
||||
extern struct blk *add0(struct blk *, int);
|
||||
extern struct blk *mult(struct blk *, struct blk *);
|
||||
extern void chsign(struct blk *);
|
||||
extern int readc(void);
|
||||
extern void unreadc(char);
|
||||
extern void binop(char);
|
||||
extern void print(struct blk *);
|
||||
extern struct blk *getdec(struct blk *, int);
|
||||
extern void tenot(struct blk *, int);
|
||||
extern void oneot(struct blk *, int, char);
|
||||
extern void hexot(struct blk *, int, int);
|
||||
extern void bigot(struct blk *, int, int);
|
||||
extern struct blk *add(struct blk *, struct blk *);
|
||||
extern int eqk(void);
|
||||
extern struct blk *removc(struct blk *, int);
|
||||
extern struct blk *scalint(struct blk *);
|
||||
extern struct blk *scale(struct blk *, int);
|
||||
extern int subt(void);
|
||||
extern int command(void);
|
||||
extern int cond(char);
|
||||
extern void load(void);
|
||||
extern int log_2(long);
|
||||
extern struct blk *salloc(int);
|
||||
extern struct blk *morehd(void);
|
||||
extern struct blk *copy(struct blk *, int);
|
||||
extern void sdump(char *, struct blk *);
|
||||
extern void seekc(struct blk *, int);
|
||||
extern void salterwd(struct wblk *, struct blk *);
|
||||
extern void more(struct blk *);
|
||||
extern void ospace(char *);
|
||||
extern void garbage(char *);
|
||||
extern void redef(struct blk *);
|
||||
extern void release(register struct blk *);
|
||||
extern struct blk *getwd(struct blk *);
|
||||
extern void putwd(struct blk *, struct blk *);
|
||||
extern struct blk *lookwd(struct blk *);
|
||||
extern char *nalloc(register char *, unsigned);
|
||||
extern void *srealloc(void *, size_t);
|
||||
|
||||
#if defined (__GLIBC__) && defined (_IO_getc_unlocked)
|
||||
#undef getc
|
||||
#define getc(f) _IO_getc_unlocked(f)
|
||||
#endif
|
||||
|
||||
#ifndef BC_BASE_MAX
|
||||
#define BC_BASE_MAX 99
|
||||
#endif
|
||||
#ifndef BC_DIM_MAX
|
||||
#define BC_DIM_MAX 2048
|
||||
#endif
|
Loading…
Add table
Reference in a new issue