Release calc version 2.11.0t10.5.1

This commit is contained in:
Landon Curt Noll
1999-12-14 12:23:24 -08:00
parent 94e35d9b07
commit 0514dc0de9
519 changed files with 4194 additions and 17762 deletions

85
BUGS
View File

@@ -69,15 +69,42 @@ not currently a member of the calc-tester mailing list.
Known bugs: Known bugs:
* On AlphaLinux with gcc-2.96, calc 2.11.1 with patches to compile * Calc does not support the #! exec method. For example of the
correctly dies in the regression: following is placed in an executable file (assume the path to
calc is correct) called /tmp/xyzzy:
4408: Q == (mat[2]={5+3i,17+4i}) #!/usr/local/bin/calc
4409: R = {M2,M3} /*
4410: norm(R) == M4 * comment
"": line 78: Function "surd_sqrt" is undefined */
Error in commands print 2+3;
make: *** [chk] Error 1
Will result in '"tmp" is undefined' and '"xyzzy" is undefined'
error messages because calc considers $0 as an expression to
evaluate.
* The following file:
/* this is bugdemo.cal */
x = eval(prompt(">>> "));
print x;
when executed as:
calc read bugdemo.cal
will obtain a prompt from the terminal, print the value but leave
the terminal in a 'bad' state, as if stty -icanon -echo -echoe
had been executed.
* Use of 'fmt' in the 2nd arg of printf() calls in c_sysinfo.c
cause some compilers to issue warnings.
* The builtin function exp(x) will return 0 when x is a large value
in certain cases such as exp(2^32).
* The builtin function power(x,y) will return 0 in certain cases
such as power(pi(),2^32).
We are sure some more bugs exist. When you find them, please let We are sure some more bugs exist. When you find them, please let
us know! See the above for details on how to report and were to us know! See the above for details on how to report and were to
@@ -145,8 +172,8 @@ Problems with known work-a-rounds:
DEBUG= -g DEBUG= -g
* There are problems compiling calc on the sparcv9 under 64 bit * There are problems compiling calc on the sparcv9 under 64 bit
Solaris. On that platform, gcc-2.96 is able to compile calc, but Solaris. On that platform, gcc-2.96 is able to compile calc, but
calc dumps core very early on in startup. It is said that sparcv9 calc dumps core very early on in startup. It is said that sparcv9
support in gcc-2.96 is very unofficial and thus there is no support in gcc-2.96 is very unofficial and thus there is no
work-a-round for gcc-2-96. work-a-round for gcc-2-96.
@@ -158,41 +185,3 @@ Problems with known work-a-rounds:
LCC="cc -xarch=v9" LCC="cc -xarch=v9"
CCWARN="-DFORCE_STDC -w" CCWARN="-DFORCE_STDC -w"
DEBUG="-fast -xarch=v9" DEBUG="-fast -xarch=v9"
* Under BSDI v4, the warnings of the form:
/usr/include/ctype.h:147: warning: `__runetype' defined but not used
/usr/include/ctype.h:161: warning: `__isctype' defined but not used
/usr/include/ctype.h:170: warning: `toupper' defined but not used
/usr/include/ctype.h:177: warning: `tolower' defined but not used
are seen. These warnings are the result of mis-features in BSDI
include files. They do not have an impact on the operation
or performance. The work-a-round is to ignore these warnings
under BSDI.
## Copyright (C) 1999 Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL. You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.3 $
## @(#) $Id: BUGS,v 29.3 1999/12/14 19:41:07 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/RCS/BUGS,v $
##
## Under source code control: 1994/03/18 14:06:13
## File existed as early as: 1994
##
## chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
## Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/

205
CHANGES
View File

@@ -1,53 +1,6 @@
The following are the changes from calc version 2.11.1 to date: The following are the changes from calc version 2.11.0t10 to date:
Placed calc under version 2.1 of the GNU Lesser General Public License. Misc code cleanup. Removed dead code. Removed trailing whitespace.
The calc commands:
help copyright
help copying
help copying-lgpl
should display the generic calc copyright as well as the contents
of the COPYING and COPYING-LGPL files.
Those files contain information about the calc's GNU Lesser General
Public License, and in particular the conditions under which you
are allowed to change it and/or distribute copies of it.
Removed the lint facility from the Makefile. Eliminated Makefile
variables: ${LCFLAGS}, ${LINT}, ${LINTLIB} and ${LINTFLAGS}.
Removed the lint.sed file.
Cleaned up help display system. Help file lines that begin with
'##' are not displayed.
Calc source and documentation now uses the the these terms:
*.cal files calc resource file
*.a files calc binary link library
#! files calc shell script
Renamed 'help stdlib' to 'help resource'. The 'help stdlib' is
aliased to 'help resource' for ard compatibility.
Renamed config("lib_debug") to config("resource_debug").
The config("lib_debug") will have the same effect as
config("resource_debug") for backward compatibility.
Renamed the source sub-directory lib to cal. The default $CALCPATH
now uses ./cal:~/cal (instead of ./lib:~/lib). Changed LIB_PASSDOWN
Makefile variable to CAL_PASSDOWN.
Fixed misc compile warnings and bugs.
Fixed problem of incorrect paths in the formation of installed
calc shell scripts.
The following are the changes from calc version 2.11.0t10 to 2.11.0t11:
Misc code cleanup. Removed dead code. Removed trailing whitespace.
Fixed whitespace to make the best use of 8 character tabs. Fixed whitespace to make the best use of 8 character tabs.
Fixed some bugs relaing to '// and %' in combination with some Fixed some bugs relaing to '// and %' in combination with some
@@ -72,7 +25,7 @@ The following are the changes from calc version 2.11.0t10 to 2.11.0t11:
Added zero dimensional matrices. A zero dimensional matrix is defined as: Added zero dimensional matrices. A zero dimensional matrix is defined as:
mat A[] or A = mat[] mat A[] or A = mat[]
Updated the help/mat file to reflect the current status of matrices Updated the help/mat file to reflect the current status of matrices
including zero dimensional matrices. including zero dimensional matrices.
@@ -117,7 +70,7 @@ The following are the changes from calc version 2.11.0t10 to 2.11.0t11:
config("ctrl_d", "empty_eof") config("ctrl_d", "empty_eof")
The ^D always exits calc if typed on an empty line. This The ^D always exits calc if typed on an empty line. This
condition occurs when ^D either the first character typed, condition occurs when ^D either the first character typed,
or when all other characters on the line have been removed or when all other characters on the line have been removed
(say by deleting them). (say by deleting them).
@@ -130,7 +83,7 @@ The following are the changes from calc version 2.11.0t10 to 2.11.0t11:
then those char(s) will have this functionality. then those char(s) will have this functionality.
Updated help/config and help/mode, improved the readability and Updated help/config and help/mode, improved the readability and
fixed a few typos. Documented modes, block formats and block bases fixed a few typos. Documented modes, block formats and block bases
("mode", "blkfmt" & "blkbase") that were previously left off out of ("mode", "blkfmt" & "blkbase") that were previously left off out of
the documentation. the documentation.
@@ -138,6 +91,14 @@ The following are the changes from calc version 2.11.0t10 to 2.11.0t11:
instead of returning integers. One cannot use integers to set instead of returning integers. One cannot use integers to set
these values, so returning integers was useless. these values, so returning integers was useless.
The following config values return "on" or "off" strings:
tilde tab leadzero fullzero blkverbose verbose_quit
These config values can still be set with same boolean strings
("on", "off", "true", "false", "t", ...) as well as via the
numerical values 0 (for "off") and non-0 (for "on"), however.
Applied the dangling name fix from Ernest Bowen <ernie@turing.une.edu.au>. Applied the dangling name fix from Ernest Bowen <ernie@turing.une.edu.au>.
Show func prints function on order of their indices, and with Show func prints function on order of their indices, and with
@@ -167,7 +128,7 @@ The following are the changes from calc version 2.11.0t10 to 2.11.0t11:
objectionable as ``hi^A^D^D^D'' will cause calc to exit due to objectionable as ``hi^A^D^D^D'' will cause calc to exit due to
the issuing of one too many ^D's. the issuing of one too many ^D's.
Emacs users may want to put: Emacs users may want to put:
config("ctrl_d", "never_eof"),; config("ctrl_d", "never_eof"),;
@@ -177,118 +138,6 @@ The following are the changes from calc version 2.11.0t10 to 2.11.0t11:
Fixed the make depend rule. Fixed the make depend rule.
Applied Ernest Bowen's <ernie@turing.une.edu.au> complex function
power(), exp() and transcendental function patch:
Calc will return a "too-large argument" error-value for exp(x,
epsilon) if re(x) >= 2^30 or if an estimate indicates that the
result will have absolute value greater than 2^2^30 * epsilon.
Otherwise the evaluation will be attempted but may fail due to
shortage of memory or may require a long runtime if the result
will be very large.
The power(a, b, epsilon) builtin will return a "too-large result"
if an estimate indicates that the result will have absolute value
> 2^2^30 * epsilon. Otherwise the evaluation will be attempted
but may fail due to shortage of memory or may require a long
runtime if the result will be very large.
Changes have been made to the algorithms used for some special
functions sinh(), cosh(), tanh(), sin(), cos(), etc., that make
use of exp(). In particular tanh(x) is now much faster and
doesn't run out of memory when x is very large - the value to
be returned is then 1 to a high degree of accuracy.
When the true value of a transcendental function is 1, as is
cos(x) for x == 0, calc's version of the function will now return
1 rather than the nearest multiple of epsilon. E.g. cos(0, 3/8)
no longer returns 9/8.
The restriction of abs(n) < 1000000 on scale(x, n) has been
removed. The only condition n now has to satisfy for calc to
attempt the operation is n < 2^31, the same as for calc to
attempt x << n and x^n.
Changed root(x,n) so that when x is negative and n is odd it
returns the principal complex n-th root of x rather than -1, e.g.
root(-1,3) now returns -.5+.8660...i.
Changed power(a,b) to permit a to be negative when b is real.
E.g. power(-2,3) will now return 8 rather than cause a "negative
base" error.
Fixed several improper free and link problems in the comfunc.c code.
Removed BOOL_B64 symbol from Makefile.
The following config values return "true" or "false" strings:
tilde tab leadzero fullzero blkverbose verbose_quit
These config values can still be set with same boolean strings
("on", "off", "true", "false", "t", ...) as well as via the
numerical values 0 (for "false") and non-0 (for "true"), however.
Added -s to the calc command line. The -s flag will cause unused
args (args after all of the -options on the command line) to remain
as unevaluated strings.
If calc is called with -s, then the new function argv() will return
the number of strings on the command line. Also argv(n) will return
the n-th such string or null is no such string exists.
Calc now handles calc shell scripts. A calc shell script is an
executable file that starts with:
#!/usr/local/bin/calc -S
Where ``/usr/local/bin/calc'' is the path to the calc binary.
Additional -options may be added to the line, but it MUST
start with -S. For example, the the executable file ``plus''
contain the following:
#!/usr/local/bin/calc -S -e
/*
* This is a simple calc shell script to add two values
*/
print eval(argv(0)) + eval(argv(1));
then the following command:
./plus 23 'pi(1e-5)'
will print:
26.14159
If calc is called with -S as the first arg, then calc will assume that
it is being called from a #! calc shell script file. The -S implies
the -s flag. If -i is not given, -S also implies -d and -p.
Fixed the problem with non-literal string type checking for the
C printf-like functions. Able to determine if "%ld" or "%lld"
is appropriate for printing of 64 bit long longs by way of the C
symbol L64_FORMAT in the longlong.h header file.
The following lines are treated as comments by calc:
#! this is a comment
# this is a comment
# this is a comment
#
# The lone # above was also a comment
Improved how calc makes changes to file descriptor interactive state.
Moved state changing code to calc_tty() and orig_tty() in lib_calc.c.
The libcalc_call_me_last() function will restore all changed descriptor
states that have not already been restored.
Added the following read-only config values:
config("program") path to calc program or calc shell script
config("basename") basename of config("program")
config("version") calc version string
The following are the changes from calc version 2.11.0t8.9.1 to 2.11.0t9.4.5: The following are the changes from calc version 2.11.0t8.9.1 to 2.11.0t9.4.5:
@@ -4691,29 +4540,3 @@ Following is a list of visible changes to calc from version 1.24.7 to 1.26.1:
was fixed. was fixed.
A small bug in the library file regress.cal was fixed. A small bug in the library file regress.cal was fixed.
## Copyright (C) 1999 Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL. You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.2 $
## @(#) $Id: CHANGES,v 29.2 1999/12/14 19:40:18 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/RCS/CHANGES,v $
##
## Under source code control: 1993/06/02 18:12:57
## File existed as early as: 1989
##
## chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
## Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/

192
COPYING
View File

@@ -1,192 +0,0 @@
calc - arbitrary precision calculator
This file is Copyrighted
------------------------
This file is covered under the following Copyright:
Copyright (C) 1999 Landon Curt Noll
All rights reserved.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
# @(#) $Revision: 29.1 $
# @(#) $Id: COPYING,v 29.1 1999/12/14 09:15:29 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/RCS/COPYING,v $
=-=
Calc is covered by the GNU Lesser General Public License
--------------------------------------------------------
Calc is open software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by
the Free Software Foundation version 2.1 of the License.
Calc is several binary link libraries, several modules, associated
interface definition files and scripts used to control its compilation
and installation.
Calc is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
Public License for more details.
A copy of the GNU Lesser General Public License is distributed with
calc under the filename:
COPYING-LGPL
You may display this file by the calc command: help copying
You may display the GNU Lesser General
Public License by the calc command: help copying-lgpl
You should have received a copy of the version 2.1 GNU Lesser General
Public License with calc; if not, write to:
Free Software Foundation, Inc.
59 Temple Place
Suite 330
Boston, MA 02111-1307
USA
The contact addresses for calc is as follows:
Web: http://reality.sgi.com/chongo/tech/comp/calc/index.html
http://www.isthe.com/chongo/tech/comp/calc/index.html
EMail: calc-tester at postofc dot corp dot sgi dot com
calc-tester at isthe dot com
[[ Replace 'at' with @, 'dot' is with . and remove spaces ]]
The 2nd address set is provided in case the 1st address set no
longer functions.
=-=
Calc's relationship to the GNU Lesser General Public License
------------------------------------------------------------
In section 0 of the GNU Lesser General Public License, one finds
the following definition:
The "Library", below, refers to any such software library or
work which has been distributed under these terms.
Calc is distributed under the terms of the GNU Lesser
General Public License.
In the same section 0, one also find the following:
For a library, complete source code means all the source code
for all modules it contains, plus any associated interface
definition files, plus the scripts used to control compilation
and installation of the library.
There are at least two calc binary link libraries found in calc:
libcalc.a libcustcalc.a
Clearly all files that go into the creation of those binary link
libraries are covered under the License.
The ``scripts used to control compilation and installation of the
of the library'' include:
* Makefiles
* source files created by the Makefiles
* source code used in the creation of intermediate source files
All of those files are covered under the License.
The ``associated interface definition files'' are those files that:
* show how the calc binary link libraries are used
* test the validity of the binary link libraries
* document routines found in the binary link libraries
* show how one can interactively use the binary link libraries
Calc provides an extensive set of files that perform the above
functions.
* files under the sample sub-directory
* files under the help sub-directory
* files under the lib sub-directory
* the main calc.c file
The ``complete source code'' includes ALL files shipped with calc,
except for the exception files explicitly listed in the ``Calc
copyrights and exception files'' section below.
=-=
Calc copyrights and exception files
-----------------------------------
With the exception of the files listed below, Calc is covered under
the following Copyrights:
Copyright (C) year David I. Bell
Copyright (C) year David I. Bell and Landon Curt Noll
Copyright (C) year David I. Bell and Ernest Bowen
Copyright (C) year David I. Bell, Landon Curt Noll and Ernest Bowen
Copyright (C) year Landon Curt Noll
Copyright (C) year Ernest Bowen and Landon Curt Noll
Copyright (C) year Ernest Bowen
A few files are not covered under the GNU Lesser General Public
License. The source files not covered are:
shs1.c shs1.h shs.c shs.h
md5.c md5.h lib/qtime.cal COPYING
COPYING-LGPL
The file COPYING-LGPL, which contains a copy of the version 2.1
GNU Lesser General Public License, is itself Copyrighted by the
Free Software Foundation, Inc. Please note that the Free Software
Foundation, Inc. does NOT have a copyright over calc, only the
COPYING-LGPL that is supplied with calc.
This file, COPYING, is distributed under the Copyright found at the
top of this file. It is important to note that you may distribute
verbatim copies of this file but you may not modify this file.
=-=
General Copyleft and License info
---------------------------------
For general information on Copylefts, see:
http://www.gnu.org/copyleft/
For information on GNU Lesser General Public Licenses, see:
http://www.gnu.org/copyleft/lesser.html
http://www.gnu.org/copyleft/lesser.txt
=-=
Why calc did not use the GNU General Public License
---------------------------------------------------
It has been suggested that one should consider using the GNU General
Public License instead of the GNU Lesser General Public License:
http://www.gnu.org/philosophy/why-not-lgpl.html
As you can read in the above URL, there are times where a library
cannot give free software any particular advantage. One of those
times is when there is significantly similar versions available
that are not covered under a Copyleft such as the GNU General Public
License.
The reason why calc was placed under the GNU Lesser General Public
License is because for many years (1984 thru 1999), calc was offered
without any form of Copyleft. At the time calc was placed under
the GNU Lesser General Public License, a number of systems and
distributions distributed calc without a Copyleft.

View File

@@ -1,504 +0,0 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View File

@@ -48,29 +48,3 @@ Installing calc in 4 easy steps:
We suggest that you might want to read the README file and look at We suggest that you might want to read the README file and look at
the calc help subsystem. See the README file for details. the calc help subsystem. See the README file for details.
## Copyright (C) 1999 Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL. You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.1 $
## @(#) $Id: HOWTO.INSTALL,v 29.1 1999/12/14 09:15:29 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/RCS/HOWTO.INSTALL,v $
##
## Under source code control: 1999/09/27 20:48:44
## File existed as early as: 1999
##
## chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
## Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/

55
LIBRARY
View File

@@ -1,11 +1,11 @@
USING THE ARBITRARY PRECISION ROUTINES IN A C PROGRAM USING THE ARBITRARY PRECISION ROUTINES IN A C PROGRAM
Part of the calc release consists of an arbitrary precision math link library. Part of the calc release consists of an arbitrary precision math library.
This link library is used by the calc program to perform its own calculations. This library is used by the calc program to perform its own calculations.
If you wish, you can ignore the calc program entirely and call the arbitrary If you wish, you can ignore the calc program entirely and call the arbitrary
precision math routines from your own C programs. precision math routines from your own C programs.
The link library is called libcalc.a, and provides routines to handle arbitrary The library is called libcalc.a, and provides routines to handle arbitrary
precision arithmetic with integers, rational numbers, or complex numbers. precision arithmetic with integers, rational numbers, or complex numbers.
There are also many numeric functions such as factorial and gcd, along There are also many numeric functions such as factorial and gcd, along
with some transcendental functions such as sin and exp. with some transcendental functions such as sin and exp.
@@ -49,7 +49,8 @@ to see if it really does what you think it does. I won't guarantee that
obscure internal routines won't change or disappear in future releases! obscure internal routines won't change or disappear in future releases!
When calc is installed, all of the include files needed to build When calc is installed, all of the include files needed to build
libcalc.a along with the link library itself are installed into ${LIBDIR}. libcalc.a along with the library itself (and the lint library
llib-lcalc.ln, if made) are installed into ${LIBDIR}.
External programs may want to compile with: External programs may want to compile with:
@@ -76,9 +77,9 @@ level in your program, and use longjmp in the math_error routine to return
to that level and so recover from the error. This is what the calc program to that level and so recover from the error. This is what the calc program
does. does.
For convenience, the link library libcalc.a contains a math_error routine. For convenience, the library libcalc.a contains a math_error routine.
By default, this routine simply prints a message to stderr and then exits. By default, this routine simply prints a message to stderr and then exits.
By simply linking in this link library, any calc errors will result in a By simply linking in this library, any calc errors will result in a
error message on stderr followed by an exit. error message on stderr followed by an exit.
External programs that wish to use this math_error may want to compile with: External programs that wish to use this math_error may want to compile with:
@@ -116,7 +117,7 @@ For example:
OUTPUT ROUTINES OUTPUT ROUTINES
--------------- ---------------
The output from the routines in the link library normally goes to stdout. You The output from the routines in the library normally goes to stdout. You
can divert that output to either another FILE handle, or else to a string. can divert that output to either another FILE handle, or else to a string.
Read the routines in zio.c to see what is available. Diversions can be Read the routines in zio.c to see what is available. Diversions can be
nested. nested.
@@ -327,13 +328,13 @@ Examples of these are qnum to return the numerator, qden to return the
denominator, qint to return the integer part of, qfrac to return the denominator, qint to return the integer part of, qfrac to return the
fractional part of, and qinv to invert a fraction. fractional part of, and qinv to invert a fraction.
There are some transcendental functions in the link library, such as sin There are some transcendental functions in the library, such as sin and cos.
and cos. These cannot be evaluated exactly as fractions. Therefore, These cannot be evaluated exactly as fractions. Therefore, they accept
they accept another argument which tells how accurate you want the result. another argument which tells how accurate you want the result. This is an
This is an "epsilon" value, and the returned value will be within that "epsilon" value, and the returned value will be within that quantity of
quantity of the correct value. This is usually an absolute difference, the correct value. This is usually an absolute difference, but for some
but for some functions (such as exp), this is a relative difference. functions (such as exp), this is a relative difference. For example, to
For example, to calculate sin(0.5) to 100 decimal places, you could do: calculate sin(0.5) to 100 decimal places, you could do:
NUMBER *q, *ans, *epsilon; NUMBER *q, *ans, *epsilon;
@@ -454,29 +455,3 @@ call. This is not required, but is does bring things to a closure.
The function libcalc_call_me_last() takes no args and returns void. You The function libcalc_call_me_last() takes no args and returns void. You
need call libcalc_call_me_last() only once. need call libcalc_call_me_last() only once.
## Copyright (C) 1999 David I. Bell and Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL. You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.1 $
## @(#) $Id: LIBRARY,v 29.1 1999/12/14 09:15:29 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/RCS/LIBRARY,v $
##
## Under source code control: 1993/07/30 19:44:49
## File existed as early as: 1993
##
## chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
## Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/

382
Makefile
View File

@@ -1,39 +1,16 @@
#!/bin/make #!/bin/make
# #
# calc - arbitrary precision calculator
#
# (Generic calc makefile) # (Generic calc makefile)
# #
# Copyright (C) 1999 Landon Curt Noll # Copyright (c) 1995 David I. Bell and Landon Curt Noll
# Permission is granted to use, distribute, or modify this source,
# provided that this copyright notice remains intact.
# #
# Calc is open software; you can redistribute it and/or modify it under # Arbitrary precision calculator.
# the terms of the version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
#
# Calc is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
# Public License for more details.
#
# A copy of version 2.1 of the GNU Lesser General Public License is
# distributed with calc under the filename COPYING-LGPL. You should have
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.1 $
# @(#) $Id: Makefile.ship,v 29.1 1999/12/14 09:14:53 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/RCS/Makefile.ship,v $
#
# Under source code control: 1990/02/15 01:48:41
# File existed as early as: before 1990
#
# chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
# Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
# #
# calculator by David I. Bell with help/mods from others # calculator by David I. Bell with help/mods from others
# Makefile by Landon Curt Noll # Makefile by Landon Curt Noll
############################################################################## ##############################################################################
#-=-=-=-=-=-=-=-=- You may want to change some values below -=-=-=-=-=-=-=-=-# #-=-=-=-=-=-=-=-=- You may want to change some values below -=-=-=-=-=-=-=-=-#
############################################################################## ##############################################################################
@@ -325,21 +302,21 @@ HAVE_STRDUP=
ALIGN32= -DMUST_ALIGN32 ALIGN32= -DMUST_ALIGN32
#ALIGN32= -UMUST_ALIGN32 #ALIGN32= -UMUST_ALIGN32
# where to install the *.cal, *.h and *.a files # where to install binary files
#
# ${BINDIR} where to install binary files
# ${TOPDIR} the directory under which the calc directory will be placed.
# ${LIBDIR} where the *.cal, *.a, bindings and help dir are installed.
# ${INCDIR} where the locally installed include files are found.
# ${INCDIRCALC} where the calc include files are installed.
# ${HELPDIR} where the help directory is installed.
# ${CUSTOMLIBDIR} where custom *.cal files are installed.
# ${CUSTOMHELPDIR} where custom help files are installed.
# ${SCRIPTDIR} where calc shell scripts are installed.
# #
BINDIR= /usr/local/bin BINDIR= /usr/local/bin
#BINDIR= /usr/bin #BINDIR= /usr/bin
#BINDIR= /usr/contrib/bin #BINDIR= /usr/contrib/bin
# where to install the *.cal, *.h and *.a files
#
# ${TOPDIR} is the directory under which the calc directory will be placed.
# ${LIBDIR} is where the *.cal, *.a, bindings and help dir are installed.
# ${INCDIR} is where the locally installed include files are found.
# ${INCDIRCALC} is where the calc include files are installed.
# ${HELPDIR} is where the help directory is installed.
# ${CUSTOMLIBDIR} is where custom lib files are installed.
# ${CUSTOMHELPDIR} is where custom help files are installed.
# #
TOPDIR= /usr/local/lib TOPDIR= /usr/local/lib
#TOPDIR= /usr/lib #TOPDIR= /usr/lib
@@ -352,7 +329,6 @@ INCDIR= /usr/local/include
INCDIRCALC= ${INCDIR}/calc INCDIRCALC= ${INCDIR}/calc
CUSTOMLIBDIR= ${LIBDIR}/custom CUSTOMLIBDIR= ${LIBDIR}/custom
CUSTOMHELPDIR= ${HELPDIR}/custhelp CUSTOMHELPDIR= ${HELPDIR}/custhelp
SCRIPTDIR= ${BINDIR}/cscript
# where man pages are installed # where man pages are installed
# #
@@ -417,12 +393,12 @@ MANMAKE= /usr/local/bin/manmake
#MANMAKE= manmake #MANMAKE= manmake
# If the $CALCPATH environment variable is not defined, then the following # If the $CALCPATH environment variable is not defined, then the following
# path will be search for calc resource file routines. # path will be search for calc lib routines.
# #
CALCPATH= .:./cal:~/cal:${LIBDIR}:${CUSTOMLIBDIR} CALCPATH= .:./lib:~/lib:${LIBDIR}:${CUSTOMLIBDIR}
# If the $CALCRC environment variable is not defined, then the following # If the $CALCRC environment variable is not defined, then the following
# path will be search for calc resource files. # path will be search for calc lib routines.
# #
CALCRC= ${LIBDIR}/startup:~/.calcrc CALCRC= ${LIBDIR}/startup:~/.calcrc
@@ -435,11 +411,11 @@ CALCRC= ${LIBDIR}/startup:~/.calcrc
# NOTE: If you select the 'USE_READLINE= -DUSE_READLINE' mode, you must set: # NOTE: If you select the 'USE_READLINE= -DUSE_READLINE' mode, you must set:
# #
# READLINE_LIB The flags needed to link in the readline # READLINE_LIB The flags needed to link in the readline
# and history link libraries # and history libs
# READLINE_INCLUDE Where the readline include files reside # READLINE_INCLUDE Where the readline include files reside
# #
# NOTE: The GNU-readline code is not shipped with calc. You must have # NOTE: The GNU-readline code is not shipped with calc. You must have
# the appropriate headers and link libs installed on your system in # the appropriate headers and libs installed on your system in
# order to use it. # order to use it.
# #
# If in doubt, set USE_READLINE, READLINE_LIB and READLINE_INCLUDE to nothing. # If in doubt, set USE_READLINE, READLINE_LIB and READLINE_INCLUDE to nothing.
@@ -465,35 +441,30 @@ CALCPAGER= more
# Debug/Optimize options for ${CC} and ${LCC} # Debug/Optimize options for ${CC} and ${LCC}
# #
#DEBUG=
#
#DEBUG= -O #DEBUG= -O
#DEBUG= -O -g #DEBUG= -O -g
#DEBUG= -O -g3 #DEBUG= -O -g3
#
#DEBUG= -O1 #DEBUG= -O1
#DEBUG= -O1 -g #DEBUG= -O1 -g
#DEBUG= -O1 -g3 #DEBUG= -O1 -g3
#
#DEBUG= -O2 #DEBUG= -O2
#DEBUG= -O2 -g #DEBUG= -O2 -g
DEBUG= -O2 -g3 DEBUG= -O2 -g3
#DEBUG= -O2 -ipa #DEBUG= -O2 -ipa
#DEBUG= -O2 -g3 -ipa #DEBUG= -O2 -g3 -ipa
#
#DEBUG= -O3 #DEBUG= -O3
#DEBUG= -O3 -g #DEBUG= -O3 -g
#DEBUG= -O3 -g3 #DEBUG= -O3 -g3
#DEBUG= -O3 -ipa #DEBUG= -O3 -ipa
#DEBUG= -O3 -g3 -ipa #DEBUG= -O3 -g3 -ipa
#
#DEBUG= -g #DEBUG= -g
#DEBUG= -g3 #DEBUG= -g3
#DEBUG= -gx #DEBUG= -gx
#DEBUG= -WM,-g #DEBUG= -WM,-g
#DEBUG=
# On systems that have dynamic shared link libs, you may want want to disable # On systems that have dynamic shared libs, you may want want to disable them
# them for faster calc startup. # for faster calc startup.
# #
# System type NO_SHARED recommendation # System type NO_SHARED recommendation
# #
@@ -508,7 +479,7 @@ NO_SHARED=
#NO_SHARED= -dn #NO_SHARED= -dn
#NO_SHARED= -non_shared #NO_SHARED= -non_shared
# On some systems where you are disabling dynamic shared link libs, you may # On some systems where you are disabling dynamic shared libs, you may
# need to pass a special flag to ${CC} and ${LCC} during linking stage. # need to pass a special flag to ${CC} and ${LCC} during linking stage.
# #
# System type NO_SHARED recommendation # System type NO_SHARED recommendation
@@ -523,12 +494,41 @@ LD_NO_SHARED=
#LD_NO_SHARED= -Wl,-rdata_shared #LD_NO_SHARED= -Wl,-rdata_shared
# Some systems require one to use ranlib to add a symbol table to # Some systems require one to use ranlib to add a symbol table to
# a *.a link library. Set RANLIB to the utility that performs this # a *.a library. Set RANLIB to the utility that performs this action.
# action. Set RANLIB to : if your system does not need such a utility. # Set RANLIB to : if your system does not need such a utility.
# #
RANLIB=ranlib RANLIB=ranlib
#RANLIB=: #RANLIB=:
# Some systems are able to form lint libs. How it is formed depends
# on your system. If you do not care about lint, use : as the
# LINTLIB value.
#
# System type LINTLIB recommendation
#
# BSD ${LINT} ${LCFLAGS} ${LINTFLAGS} -u -Ccalc
# SYSV ${LINT} ${LCFLAGS} ${LINTFLAGS} -u -o calc
# disable :
#
# If in doubt and you don't care about lint, use LINTLIB= :
#
#LINTLIB= ${LINT} ${LCFLAGS} ${LINTFLAGS} -u -Ccalc
#LINTLIB= ${LINT} ${LCFLAGS} ${LINTFLAGS} -u -o calc
LINTLIB= :
# The lint flags vary from system to system. Some systems have the
# opposite meaning for the flags below. Other systems change flag
# meaning altogether.
#
# System LINTFLAGS recommendation
#
# SunOs -a -h -v -z
#
# If in doubt and you don't care about lint, set LINTFLAGS to empty.
#
#LINTFLAGS= -a -h -v -z
LINTFLAGS=
# Normally certain files depend on the Makefile. If the Makefile is # Normally certain files depend on the Makefile. If the Makefile is
# changed, then certain steps should be redone. If MAKE_FILE is # changed, then certain steps should be redone. If MAKE_FILE is
# set to Makefile, then these files will depend on Makefile. If # set to Makefile, then these files will depend on Makefile. If
@@ -548,9 +548,9 @@ MAKE_FILE= Makefile
#PURIFY= purify -logfile=pure.out #PURIFY= purify -logfile=pure.out
#PURIFY= purify -m71-engine -logfile=pure.out #PURIFY= purify -m71-engine -logfile=pure.out
# If you want to use a debugging link library such as a malloc debug link # If you want to use a debugging library such as a malloc debug library,
# library, or need to add special ld flags after the calc link libraries # or need to add special ld flags after the calc libraries are included,
# are included, set ${LD_DEBUG} below. # set ${LD_DEBUG} below.
# #
# If in doubt, set LD_DEBUG to empty. # If in doubt, set LD_DEBUG to empty.
# #
@@ -564,18 +564,18 @@ LD_DEBUG=
# make debug # make debug
# #
# the ${CALC_ENV} is used to supply the proper environment variables # the ${CALC_ENV} is used to supply the proper environment variables
# to calc. Most people will simply need 'CALCPATH=./cal' to ensure # to calc. Most people will simply need 'CALCPATH=./lib' to ensure
# that these debug rules will only use calc resource files under the # that these debug rules will only use calc lib files under the
# local source directory. The longer lines (with MALLOC_VERBOSE=1 ...) # local source directory. The longer lines (with MALLOC_VERBOSE=1 ...)
# are useful for SGI IRIX people who have 'WorkShop Performance Tools' # are useful for SGI IRIX people who have 'WorkShop Performance Tools'
# and who also set 'LD_DEBUG= -lmalloc_cv' above. # and who also set 'LD_DEBUG= -lmalloc_cv' above.
# #
# If in doubt, use CALC_ENV= CALCPATH=./cal. # If in doubt, use CALC_ENV= CALCPATH=./lib.
# #
CALC_ENV= CALCPATH=./cal CALC_ENV= CALCPATH=./lib
#CALC_ENV= CALCPATH=./cal MALLOC_VERBOSE=1 MALLOC_TRACING=1 \ #CALC_ENV= CALCPATH=./lib MALLOC_VERBOSE=1 MALLOC_TRACING=1 \
# MALLOC_FASTCHK=1 MALLOC_FULLWARN=1 # MALLOC_FASTCHK=1 MALLOC_FULLWARN=1
#CALC_ENV= CALCPATH=./cal MALLOC_VERBOSE=1 MALLOC_TRACING=1 \ #CALC_ENV= CALCPATH=./lib MALLOC_VERBOSE=1 MALLOC_TRACING=1 \
# MALLOC_FASTCHK=1 MALLOC_FULLWARN=1 MALLOC_CLEAR_FREE=1 \ # MALLOC_FASTCHK=1 MALLOC_FULLWARN=1 MALLOC_CLEAR_FREE=1 \
# MALLOC_CLEAR_MALLOC=1 # MALLOC_CLEAR_MALLOC=1
@@ -603,6 +603,7 @@ ALLOW_CUSTOM= -DCUSTOM
# CFLAGS are all flags given to ${CC} [[often includes CCOPT, CCWARN, CCMISC]] # CFLAGS are all flags given to ${CC} [[often includes CCOPT, CCWARN, CCMISC]]
# ICFLAGS are given to ${CC} for intermediate progs # ICFLAGS are given to ${CC} for intermediate progs
# #
# LCFLAGS are CC-style flags for ${LINT}
# LDFLAGS are flags given to ${CC} for linking .o files # LDFLAGS are flags given to ${CC} for linking .o files
# ILDFLAGS are flags given to ${CC} for linking .o files for intermediate progs # ILDFLAGS are flags given to ${CC} for linking .o files for intermediate progs
# #
@@ -615,8 +616,8 @@ ALLOW_CUSTOM= -DCUSTOM
# #
# Tested on Red Hat 6.0 Linux but should run on almost any Linux release. # Tested on Red Hat 6.0 Linux but should run on almost any Linux release.
# #
# For better performance, set the following above: DEBUG= -O2 -g3 # for better performance, set the following above:
# You might even try: DEBUG= -O3 -g3 # DEBUG= -O2
# #
CCWARN= -Wall -Wno-implicit -Wno-comment CCWARN= -Wall -Wno-implicit -Wno-comment
CCOPT= ${DEBUG} ${NO_SHARED} CCOPT= ${DEBUG} ${NO_SHARED}
@@ -625,6 +626,7 @@ CCMISC=
CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC} CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC}
ICFLAGS= ${CCWARN} ${CCMISC} ICFLAGS= ${CCWARN} ${CCMISC}
# #
LCFLAGS=
LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED} LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED}
ILDFLAGS= ILDFLAGS=
# #
@@ -635,8 +637,8 @@ CC= ${PURIFY} ${LCC}
# #
# gcc set (some call it gcc2, some call it gcc) # gcc set (some call it gcc2, some call it gcc)
# #
# For better performance, set the following above: DEBUG= -O2 -g3 # for better performance, set the following above:
# You might even try: DEBUG= -O3 -g3 # DEBUG= -O2
# #
#CCWARN= -Wall -Wno-implicit -Wno-comment #CCWARN= -Wall -Wno-implicit -Wno-comment
#CCOPT= ${DEBUG} ${NO_SHARED} #CCOPT= ${DEBUG} ${NO_SHARED}
@@ -645,6 +647,7 @@ CC= ${PURIFY} ${LCC}
#CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC} #CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC}
#ICFLAGS= ${CCWARN} ${CCMISC} #ICFLAGS= ${CCWARN} ${CCMISC}
# #
#LCFLAGS=
#LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED} #LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED}
#ILDFLAGS= #ILDFLAGS=
# #
@@ -656,9 +659,6 @@ CC= ${PURIFY} ${LCC}
# #
# common cc set # common cc set
# #
# For better performance, set the following above: DEBUG= -O2 -g3
# Or if -O2 -g3 are not supported try: DEBUG= -O -g
#
#CCWARN= #CCWARN=
#CCOPT= ${DEBUG} ${NO_SHARED} #CCOPT= ${DEBUG} ${NO_SHARED}
#CCMISC= #CCMISC=
@@ -666,6 +666,7 @@ CC= ${PURIFY} ${LCC}
#CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC} #CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC}
#ICFLAGS= ${CCWARN} ${CCMISC} #ICFLAGS= ${CCWARN} ${CCMISC}
# #
#LCFLAGS=
#LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED} #LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED}
#ILDFLAGS= #ILDFLAGS=
# #
@@ -676,9 +677,11 @@ CC= ${PURIFY} ${LCC}
# #
# SGI IRIX6.2 (or later) -n32 (v7.1 or later) Compiler # SGI IRIX6.2 (or later) -n32 (v7.1 or later) Compiler
# #
# You must set above: RANLIB=: # You must set above:
# RANLIB=:
# #
# For better performance, set the following above: DEBUG= -O2 -g3 # for better performance, set the following above:
# DEBUG= -O2 -g3
# #
# If you have the directory /usr/lib32/nonshared, then set the following above: # If you have the directory /usr/lib32/nonshared, then set the following above:
# NO_SHARED= -non_shared # NO_SHARED= -non_shared
@@ -693,6 +696,7 @@ CC= ${PURIFY} ${LCC}
#CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC} #CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC}
#ICFLAGS= ${CCWARN} ${CCMISC} #ICFLAGS= ${CCWARN} ${CCMISC}
# #
#LCFLAGS=
#LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED} #LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED}
#ILDFLAGS= #ILDFLAGS=
# #
@@ -703,10 +707,11 @@ CC= ${PURIFY} ${LCC}
# #
# HP-UX set # HP-UX set
# #
# For better performance, set the following above: DEBUG= -O -g # for better performance, try set the following above:
# DEBUG= -O
# #
# Warning: Some HP-UX optimizers are brain-damaged. # Warning: Some HP-UX optimizers are brain-damaged. If 'make check' fails use:
# If 'make check' fails use: DEBUG= -g # DEBUG= -g
# #
#CCWARN= #CCWARN=
#CCOPT= ${DEBUG} ${NO_SHARED} #CCOPT= ${DEBUG} ${NO_SHARED}
@@ -715,6 +720,7 @@ CC= ${PURIFY} ${LCC}
#CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC} #CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC}
#ICFLAGS= ${CCWARN} ${CCMISC} #ICFLAGS= ${CCWARN} ${CCMISC}
# #
#LCFLAGS=
#LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED} #LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED}
#ILDFLAGS= #ILDFLAGS=
# #
@@ -732,6 +738,7 @@ CC= ${PURIFY} ${LCC}
#CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC} #CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC}
#ICFLAGS= ${CCWARN} ${CCMISC} #ICFLAGS= ${CCWARN} ${CCMISC}
# #
#LCFLAGS=
#LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED} #LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED}
#ILDFLAGS= #ILDFLAGS=
# #
@@ -742,7 +749,8 @@ CC= ${PURIFY} ${LCC}
# #
# Solaris Sun cc compiler set # Solaris Sun cc compiler set
# #
# For better performance, set the following above: DEBUG= -O -g # for better performance, set the following above:
# DEBUG= -O
# #
# We need -DFORCE_STDC to make use of ANSI-C like features and # We need -DFORCE_STDC to make use of ANSI-C like features and
# to avoid the use of -Xc (which as a lose performance wise). # to avoid the use of -Xc (which as a lose performance wise).
@@ -754,6 +762,7 @@ CC= ${PURIFY} ${LCC}
#CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC} #CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC}
#ICFLAGS= ${CCWARN} ${CCMISC} #ICFLAGS= ${CCWARN} ${CCMISC}
# #
#LCFLAGS=
#LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED} #LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED}
#ILDFLAGS= #ILDFLAGS=
# #
@@ -764,8 +773,8 @@ CC= ${PURIFY} ${LCC}
# #
# BSDI's BSD/OS 4.0 (or later) set # BSDI's BSD/OS 4.0 (or later) set
# #
# For better performance, set the following above: DEBUG= -O2 -g3 # for better performance, set the following above:
# You might even try: DEBUG= -O3 -g3 # DEBUG= -O2
# #
#CCWARN= -Wall -Wno-implicit -Wno-comment #CCWARN= -Wall -Wno-implicit -Wno-comment
#CCOPT= ${DEBUG} ${NO_SHARED} #CCOPT= ${DEBUG} ${NO_SHARED}
@@ -774,6 +783,7 @@ CC= ${PURIFY} ${LCC}
#CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC} #CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC}
#ICFLAGS= ${CCWARN} ${CCMISC} -Wno-unused #ICFLAGS= ${CCWARN} ${CCMISC} -Wno-unused
# #
#LCFLAGS=
#LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED} #LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED}
#ILDFLAGS= #ILDFLAGS=
# #
@@ -784,7 +794,8 @@ CC= ${PURIFY} ${LCC}
# #
# Dec Alpha / Compaq Tru64 cc (non-gnu) compiler set # Dec Alpha / Compaq Tru64 cc (non-gnu) compiler set
# #
# For better performance, set the following above: DEBUG= -O2 -g3 # for better performance, set the following above:
# DEBUG= -O2
# #
#CCWARN= #CCWARN=
#CCOPT= ${DEBUG} ${NO_SHARED} #CCOPT= ${DEBUG} ${NO_SHARED}
@@ -793,6 +804,7 @@ CC= ${PURIFY} ${LCC}
#CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC} #CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC}
#ICFLAGS= ${CCWARN} ${CCMISC} -Wno-unused #ICFLAGS= ${CCWARN} ${CCMISC} -Wno-unused
# #
#LCFLAGS=
#LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED} #LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED}
#ILDFLAGS= #ILDFLAGS=
# #
@@ -811,8 +823,8 @@ AWK= awk
SED= sed SED= sed
SORT= sort SORT= sort
TEE= tee TEE= tee
LINT= lint
CTAGS= ctags CTAGS= ctags
CHMOD= chmod
FMT= fmt FMT= fmt
# assume the X11 makedepend tool for the depend rule # assume the X11 makedepend tool for the depend rule
MAKEDEPEND= makedepend MAKEDEPEND= makedepend
@@ -832,7 +844,7 @@ Q=@
V=@: V=@:
#V=@ #V=@
# the source files which are built into a math link library # the source files which are built into a math library
# #
# There MUST be a .o for every .c in LIBOBJS # There MUST be a .o for every .c in LIBOBJS
# #
@@ -845,7 +857,7 @@ LIBSRC= addop.c assocfunc.c blkcpy.c block.c byteswap.c \
string.c symbol.c token.c value.c version.c zfunc.c zio.c \ string.c symbol.c token.c value.c version.c zfunc.c zio.c \
zmath.c zmod.c zmul.c zprime.c zrand.c zrandom.c zmath.c zmod.c zmul.c zprime.c zrand.c zrandom.c
# the object files which are built into a math link library # the object files which are built into a math library
# #
# There MUST be a .o for every .c in LIBSRC plus calcerr.o # There MUST be a .o for every .c in LIBSRC plus calcerr.o
# which is built via this Makefile. # which is built via this Makefile.
@@ -951,13 +963,13 @@ CUSTOM_PASSDOWN= Q="${Q}" \
CCMISC="${CCMISC}" \ CCMISC="${CCMISC}" \
CFLAGS="${CFLAGS} ${ALLOW_CUSTOM}" \ CFLAGS="${CFLAGS} ${ALLOW_CUSTOM}" \
ICFLAGS="${ICFLAGS}" \ ICFLAGS="${ICFLAGS}" \
LCFLAGS="${LCFLAGS}" \
LDFLAGS="${LDFLAGS}" \ LDFLAGS="${LDFLAGS}" \
ILDFLAGS="${ILDFLAGS}" \ ILDFLAGS="${ILDFLAGS}" \
LCC="${LCC}" \ LCC="${LCC}" \
CC="${CC}" \ CC="${CC}" \
MAKE_FILE=${MAKE_FILE} \ MAKE_FILE=${MAKE_FILE} \
SED=${SED} \ SED=${SED} \
CHMOD=${CHMOD} \
MAKEDEPEND=${MAKEDEPEND} \ MAKEDEPEND=${MAKEDEPEND} \
SORT=${SORT} SORT=${SORT}
@@ -977,6 +989,7 @@ SAMPLE_PASSDOWN= Q="${Q}" \
CCMISC="${CCMISC}" \ CCMISC="${CCMISC}" \
CFLAGS="${CFLAGS} ${ALLOW_CUSTOM}" \ CFLAGS="${CFLAGS} ${ALLOW_CUSTOM}" \
ICFLAGS="${ICFLAGS}" \ ICFLAGS="${ICFLAGS}" \
LCFLAGS="${LCFLAGS}" \
LDFLAGS="${LDFLAGS}" \ LDFLAGS="${LDFLAGS}" \
ILDFLAGS="${ILDFLAGS}" \ ILDFLAGS="${ILDFLAGS}" \
CALC_LIBS="../libcalc.a ../custom/libcustcalc.a ${READLINE_LIB}" \ CALC_LIBS="../libcalc.a ../custom/libcustcalc.a ${READLINE_LIB}" \
@@ -985,7 +998,6 @@ SAMPLE_PASSDOWN= Q="${Q}" \
MAKE_FILE=${MAKE_FILE} \ MAKE_FILE=${MAKE_FILE} \
SED=${SED} \ SED=${SED} \
MAKEDEPEND=${MAKEDEPEND} \ MAKEDEPEND=${MAKEDEPEND} \
CHMOD=${CHMOD} \
SORT=${SORT} SORT=${SORT}
# The compelte list of makefile vars passed down to help/Makefile. # The compelte list of makefile vars passed down to help/Makefile.
@@ -994,31 +1006,23 @@ HELP_PASSDOWN= Q="${Q}" \
TOPDIR="${TOPDIR}" \ TOPDIR="${TOPDIR}" \
LIBDIR="${LIBDIR}" \ LIBDIR="${LIBDIR}" \
HELPDIR="${HELPDIR}" \ HELPDIR="${HELPDIR}" \
CFLAGS="${CFLAGS} ${ALLOW_CUSTOM}" \
ICFLAGS="${ICFLAGS}" \ ICFLAGS="${ICFLAGS}" \
ILDFLAGS="${ILDFLAGS}" \ ILDFLAGS="${ILDFLAGS}" \
LCC="${LCC}" \ LCC="${LCC}" \
MAKE_FILE=${MAKE_FILE} \ MAKE_FILE=${MAKE_FILE} \
SED=${SED} \ SED=${SED} \
CHMOD=${CHMOD} \
FMT=${FMT} FMT=${FMT}
# The compelte list of makefile vars passed down to cal/Makefile. # The compelte list of makefile vars passed down to lib/Makefile.
# #
CAL_PASSDOWN= Q="${Q}" \ LIB_PASSDOWN= Q="${Q}" \
TOPDIR="${TOPDIR}" \ TOPDIR="${TOPDIR}" \
LIBDIR="${LIBDIR}" \ LIBDIR="${LIBDIR}" \
HELPDIR="${HELPDIR}" \
MAKE_FILE=${MAKE_FILE} \ MAKE_FILE=${MAKE_FILE} \
CHMOD=${CHMOD}
# The compelte list of makefile vars passed down to cscript/Makefile.
#
CSCRIPT_PASSDOWN= Q="${Q}" \
BINDIR="${BINDIR}" \
SCRIPTDIR="${SCRIPTDIR}" \
MAKE_FILE=${MAKE_FILE} \
CHMOD=${CHMOD} \
SED=${SED} \ SED=${SED} \
FMT=${FMT} \ MAKEDEPEND=${MAKEDEPEND} \
SORT=${SORT} SORT=${SORT}
# complete list of .h files found (but not built) in the distribution # complete list of .h files found (but not built) in the distribution
@@ -1029,16 +1033,12 @@ H_SRC= ${LIB_H_SRC}
# #
C_SRC= ${LIBSRC} ${CALCSRC} ${UTIL_C_SRC} C_SRC= ${LIBSRC} ${CALCSRC} ${UTIL_C_SRC}
# The list of files that describe calc's GNU Lesser General Public License
#
LICENSE= COPYING COPYING-LGPL
# These files are found (but not built) in the distribution # These files are found (but not built) in the distribution
# #
DISTLIST= ${C_SRC} ${H_SRC} ${MAKE_FILE} BUGS CHANGES LIBRARY README \ DISTLIST= ${C_SRC} ${H_SRC} ${MAKE_FILE} BUGS CHANGES LIBRARY README \
calc.man HOWTO.INSTALL ${UTIL_MISC_SRC} ${LICENSE} calc.man lint.sed HOWTO.INSTALL ${UTIL_MISC_SRC}
# These files are used to make (but not built) a calc .a link library # These files are used to make (but not built) a calc .a library
# #
CALCLIBLIST= ${LIBSRC} ${UTIL_C_SRC} ${LIB_H_SRC} ${MAKE_FILE} \ CALCLIBLIST= ${LIBSRC} ${UTIL_C_SRC} ${LIB_H_SRC} ${MAKE_FILE} \
${UTIL_MISC_SRC} BUGS CHANGES LIBRARY ${UTIL_MISC_SRC} BUGS CHANGES LIBRARY
@@ -1057,8 +1057,8 @@ PROGS= calc ${UTIL_PROGS}
# complete list of targets # complete list of targets
# #
TARGETS= ${LICENSE} ${CALC_LIBS} custom/.all calc sample/sample \ TARGETS= ${CALC_LIBS} custom/.all calc sample/sample \
cal/.all help/.all help/builtin cscript/.all calc.1 lib/.all help/.all help/builtin calc.1
### ###
@@ -1076,17 +1076,12 @@ libcalc.a: ${LIBOBJS} ${MAKE_FILE}
-rm -f libcalc.a -rm -f libcalc.a
ar qc libcalc.a ${LIBOBJS} ar qc libcalc.a ${LIBOBJS}
${RANLIB} libcalc.a ${RANLIB} libcalc.a
${CHMOD} 0644 libcalc.a chmod 0644 libcalc.a
calc.1: calc.man ${MAKE_FILE} calc.1: calc.man ${MAKE_FILE}
-rm -f calc.1 -rm -f calc.1
${SED} -e 's:$${LIBDIR}:${LIBDIR}:g' \ ${SED} -e 's:$${LIBDIR}:${LIBDIR}:g' \
-e 's,$${BINDIR},${BINDIR},g' \
-e 's,$${CALCPATH},${CALCPATH},g' \ -e 's,$${CALCPATH},${CALCPATH},g' \
-e 's,$${SCRIPTDIR},${SCRIPTDIR},g' \
-e 's,$${INCDIRCALC},${INCDIRCALC},g' \
-e 's,$${CUSTOMLIBDIR},${CUSTOMLIBDIR},g' \
-e 's,$${CUSTOMHELPDIR},${CUSTOMHELPDIR},g' \
-e 's,$${CALCRC},${CALCRC},g' < calc.man > calc.1 -e 's,$${CALCRC},${CALCRC},g' < calc.man > calc.1
## ##
@@ -1142,34 +1137,34 @@ conf.h: ${MAKE_FILE}
${Q}echo '' >> conf.h ${Q}echo '' >> conf.h
${Q}echo '' >> conf.h ${Q}echo '' >> conf.h
${Q}echo '/* the default :-separated search path */' >> conf.h ${Q}echo '/* the default :-separated search path */' >> conf.h
${Q}echo '#if !defined(DEFAULTCALCPATH)' >> conf.h ${Q}echo '#ifndef DEFAULTCALCPATH' >> conf.h
${Q}echo '#define DEFAULTCALCPATH "${CALCPATH}"' >> conf.h ${Q}echo '#define DEFAULTCALCPATH "${CALCPATH}"' >> conf.h
${Q}echo '#endif /* DEFAULTCALCPATH */' >> conf.h ${Q}echo '#endif /* DEFAULTCALCPATH */' >> conf.h
${Q}echo '' >> conf.h ${Q}echo '' >> conf.h
${Q}echo '/* the default :-separated startup file list */' >> conf.h ${Q}echo '/* the default :-separated startup file list */' >> conf.h
${Q}echo '#if !defined(DEFAULTCALCRC)' >> conf.h ${Q}echo '#ifndef DEFAULTCALCRC' >> conf.h
${Q}echo '#define DEFAULTCALCRC "${CALCRC}"' >> conf.h ${Q}echo '#define DEFAULTCALCRC "${CALCRC}"' >> conf.h
${Q}echo '#endif /* DEFAULTCALCRC */' >> conf.h ${Q}echo '#endif /* DEFAULTCALCRC */' >> conf.h
${Q}echo '' >> conf.h ${Q}echo '' >> conf.h
${Q}echo '/* the location of the help directory */' >> conf.h ${Q}echo '/* the location of the help directory */' >> conf.h
${Q}echo '#if !defined(HELPDIR)' >> conf.h ${Q}echo '#ifndef HELPDIR' >> conf.h
${Q}echo '#define HELPDIR "${HELPDIR}"' >> conf.h ${Q}echo '#define HELPDIR "${HELPDIR}"' >> conf.h
${Q}echo '#endif /* HELPDIR */' >> conf.h ${Q}echo '#endif /* HELPDIR */' >> conf.h
${Q}echo '' >> conf.h ${Q}echo '' >> conf.h
${Q}echo '/* the location of the custom help directory */' >> conf.h ${Q}echo '/* the location of the custom help directory */' >> conf.h
${Q}echo '#if !defined(CUSTOMHELPDIR)' >> conf.h ${Q}echo '#ifndef CUSTOMHELPDIR' >> conf.h
${Q}echo '#define CUSTOMHELPDIR "${CUSTOMHELPDIR}"' >> conf.h ${Q}echo '#define CUSTOMHELPDIR "${CUSTOMHELPDIR}"' >> conf.h
${Q}echo '#endif /* CUSTOMHELPDIR */' >> conf.h ${Q}echo '#endif /* CUSTOMHELPDIR */' >> conf.h
${Q}echo '' >> conf.h ${Q}echo '' >> conf.h
${Q}echo '/* the default pager to use */' >> conf.h ${Q}echo '/* the default pager to use */' >> conf.h
${Q}echo '#if !defined(DEFAULTCALCPAGER)' >> conf.h ${Q}echo '#ifndef DEFAULTCALCPAGER' >> conf.h
${Q}echo '#define DEFAULTCALCPAGER "${CALCPAGER}"' >> conf.h ${Q}echo '#define DEFAULTCALCPAGER "${CALCPAGER}"' >> conf.h
${Q}echo '#endif /* DEFAULTCALCPAGER */' >> conf.h ${Q}echo '#endif /* DEFAULTCALCPAGER */' >> conf.h
${Q}echo '' >> conf.h ${Q}echo '' >> conf.h
${Q}echo '/* where the echo command is located */' >> conf.h ${Q}echo '/* where the echo command is located */' >> conf.h
${Q}echo '#if !defined(ECHO_PROG)' >> conf.h ${Q}echo '#ifndef ECHO' >> conf.h
${Q}echo '#define ECHO_PROG "${ECHO}"' >> conf.h ${Q}echo '#define ECHO "${ECHO}"' >> conf.h
${Q}echo '#endif /* ECHO_PROG */' >> conf.h ${Q}echo '#endif /* ECHO */' >> conf.h
${Q}echo '' >> conf.h ${Q}echo '' >> conf.h
${Q}echo '' >> conf.h ${Q}echo '' >> conf.h
${Q}echo '#endif /* !__CONF_H__ */' >> conf.h ${Q}echo '#endif /* !__CONF_H__ */' >> conf.h
@@ -1496,10 +1491,10 @@ longlong.h: longlong.c have_stdlib.h have_string.h ${MAKE_FILE}
-${Q}if [ -s ll_tmp ]; then \ -${Q}if [ -s ll_tmp ]; then \
cat ll_tmp >> longlong.h; \ cat ll_tmp >> longlong.h; \
else \ else \
echo '/* no long long type */'; \
echo '#undef HAVE_LONGLONG' >> longlong.h; \ echo '#undef HAVE_LONGLONG' >> longlong.h; \
echo '#define LONGLONG_BITS 0 /* no */' >> longlong.h; \ echo '#define LONGLONG_BITS 0 /* no */' >> longlong.h; \
echo '#undef L64_FORMAT' >> longlong.h; \ echo '#undef LL_FORMAT' >> longlong.h; \
echo '#undef L_FORMAT' >> longlong.h; \
fi fi
${Q}echo '' >> longlong.h ${Q}echo '' >> longlong.h
${Q}echo '' >> longlong.h ${Q}echo '' >> longlong.h
@@ -2314,10 +2309,10 @@ longbits: longbits.o
# #
## ##
cal/.all: lib/.all:
${V} echo '=-=-=-=-= start of $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= start of $@ rule =-=-=-=-='
${V} echo '=-=-=-=-= Invoking all rule for cal =-=-=-=-=' ${V} echo '=-=-=-=-= Invoking all rule for lib =-=-=-=-='
cd cal; ${MAKE} -f Makefile ${CAL_PASSDOWN} all cd lib; ${MAKE} -f Makefile ${LIB_PASSDOWN} all
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-='
@@ -2335,13 +2330,6 @@ help/builtin: func.c help/builtin.top help/builtin.end help/funclist.sed
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-='
cscript/.all:
${V} echo '=-=-=-=-= start of $@ rule =-=-=-=-='
${V} echo '=-=-=-=-= Invoking all rule for cscript =-=-=-=-='
cd cscript; ${MAKE} -f Makefile ${CSCRIPT_PASSDOWN} all
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-='
# This is a special rule that first tries to determine of a lower level # This is a special rule that first tries to determine of a lower level
# make is needed, and it so a make will be performed. Because it is # make is needed, and it so a make will be performed. Because it is
# triggered as the first dependent of the all rule, it will ensure # triggered as the first dependent of the all rule, it will ensure
@@ -2435,12 +2423,29 @@ bsdi: ${LIB_H_SRC} ${BUILD_H_SRC} calc.1
rm -f gen_h/$$i; \ rm -f gen_h/$$i; \
echo cp $$i gen_h; \ echo cp $$i gen_h; \
cp $$i gen_h; \ cp $$i gen_h; \
echo ${CHMOD} 0444 gen_h/$$i; \ echo chmod 0444 gen_h/$$i; \
${CHMOD} 0444 gen_h/$$i; \ chmod 0444 gen_h/$$i; \
done done
cd help; ${MAKE} -f Makefile ${HELP_PASSDOWN} bsdi cd help; ${MAKE} -f Makefile ${HELP_PASSDOWN} bsdi
${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-='
##
#
# These rules help with linting. Adjust ${LINT}, ${LINTLIB}, ${LINTFLAGS}
# and the lint.sed file as needed for your system.
#
##
llib-lcalc.ln: ${BUILD_H_SRC} ${LIBSRC} ${MAKE_FILE}
-rm -f llib-lcalc.ln llib.out
-touch llib-lcalc.ln
${LINTLIB} ${LIBSRC} 2>&1 | ${SED} -f lint.sed | ${TEE} llib.out
lint: ${BUILD_H_SRC} ${CALCSRC} llib-lcalc.ln lint.sed ${MAKE_FILE}
-rm -f lint.out
${LINT} ${LINTFLAGS} ${LCFLAGS} llib-lcalc.ln ${CALCSRC} 2>&1 | \
${SED} -f lint.sed | ${TEE} lint.out
## ##
# #
# Home grown make dependency rules. Your system make not support # Home grown make dependency rules. Your system make not support
@@ -2533,17 +2538,15 @@ distlist: ${DISTLIST}
echo $$i; \ echo $$i; \
done; \ done; \
(cd help; ${MAKE} ${HELP_PASSDOWN} $@); \ (cd help; ${MAKE} ${HELP_PASSDOWN} $@); \
(cd cal; ${MAKE} ${CAL_PASSDOWN} $@); \ (cd lib; ${MAKE} ${LIB_PASSDOWN} $@); \
(cd custom; ${MAKE} ${CUSTOM_PASSDOWN} $@); \ (cd custom; ${MAKE} ${CUSTOM_PASSDOWN} $@); \
(cd cscript; ${MAKE} ${CSCRIPT_PASSDOWN} $@); \
(cd sample; ${MAKE} ${SAMPLE_PASSDOWN} $@)) | ${SORT} (cd sample; ${MAKE} ${SAMPLE_PASSDOWN} $@)) | ${SORT}
distdir: distdir:
${Q}(echo .; \ ${Q}(echo .; \
(cd help; ${MAKE} ${HELP_PASSDOWN} $@); \ (cd help; ${MAKE} ${HELP_PASSDOWN} $@); \
(cd cal; ${MAKE} ${CAL_PASSDOWN} $@); \ (cd lib; ${MAKE} ${LIB_PASSDOWN} $@); \
(cd custom; ${MAKE} ${CUSTOM_PASSDOWN} $@); \ (cd custom; ${MAKE} ${CUSTOM_PASSDOWN} $@); \
(cd cscript; ${MAKE} ${CSCRIPT_PASSDOWN} $@); \
(cd sample; ${MAKE} ${SAMPLE_PASSDOWN} $@)) | ${SORT} (cd sample; ${MAKE} ${SAMPLE_PASSDOWN} $@)) | ${SORT}
calcliblist: calcliblist:
@@ -2551,9 +2554,8 @@ calcliblist:
echo $$i; \ echo $$i; \
done; \ done; \
(cd help; ${MAKE} ${HELP_PASSDOWN} $@); \ (cd help; ${MAKE} ${HELP_PASSDOWN} $@); \
(cd cal; ${MAKE} ${CAL_PASSDOWN} $@); \ (cd lib; ${MAKE} ${LIB_PASSDOWN} $@); \
(cd custom; ${MAKE} ${CUSTOM_PASSDOWN} $@); \ (cd custom; ${MAKE} ${CUSTOM_PASSDOWN} $@); \
(cd cscript; ${MAKE} ${CSCRIPT_PASSDOWN} $@); \
(cd sample; ${MAKE} ${SAMPLE_PASSDOWN} $@)) | ${SORT} (cd sample; ${MAKE} ${SAMPLE_PASSDOWN} $@)) | ${SORT}
calcliblistfmt: calcliblistfmt:
@@ -2571,10 +2573,10 @@ calcliblistfmt:
# #
## ##
check: all ./cal/regress.cal check: all ./lib/regress.cal
${CALC_ENV} ./calc -d -q read regress ${CALC_ENV} ./calc -d -q read regress
chk: ./cal/regress.cal chk: ./lib/regress.cal
${V} echo '=-=-=-=-= start of $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= start of $@ rule =-=-=-=-='
${CALC_ENV} ./calc -d -q read regress 2>&1 | ${AWK} -f check.awk ${CALC_ENV} ./calc -d -q read regress 2>&1 | ${AWK} -f check.awk
${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-='
@@ -2623,7 +2625,6 @@ env:
@echo "HELPDIR=${HELPDIR}"; echo "" @echo "HELPDIR=${HELPDIR}"; echo ""
@echo "CUSTOMLIBDIR=${CUSTOMLIBDIR}"; echo "" @echo "CUSTOMLIBDIR=${CUSTOMLIBDIR}"; echo ""
@echo "CUSTOMHELPDIR=${CUSTOMHELPDIR}"; echo "" @echo "CUSTOMHELPDIR=${CUSTOMHELPDIR}"; echo ""
@echo "SCRIPTDIR=${SCRIPTDIR}"; echo ""
@echo "MANDIR=${MANDIR}"; echo "" @echo "MANDIR=${MANDIR}"; echo ""
@echo "CATDIR=${CATDIR}"; echo "" @echo "CATDIR=${CATDIR}"; echo ""
@echo "MANEXT=${MANEXT}"; echo "" @echo "MANEXT=${MANEXT}"; echo ""
@@ -2638,6 +2639,8 @@ env:
@echo "NO_SHARED=${NO_SHARED}"; echo "" @echo "NO_SHARED=${NO_SHARED}"; echo ""
@echo "LD_NO_SHARED=${LD_NO_SHARED}"; echo "" @echo "LD_NO_SHARED=${LD_NO_SHARED}"; echo ""
@echo "RANLIB=${RANLIB}"; echo "" @echo "RANLIB=${RANLIB}"; echo ""
@echo "LINTLIB=${LINTLIB}"; echo ""
@echo "LINTFLAGS=${LINTFLAGS}"; echo ""
@echo "MAKE_FILE=${MAKE_FILE}"; echo "" @echo "MAKE_FILE=${MAKE_FILE}"; echo ""
@echo "PURIFY=${PURIFY}"; echo "" @echo "PURIFY=${PURIFY}"; echo ""
@echo "LD_DEBUG=${LD_DEBUG}"; echo "" @echo "LD_DEBUG=${LD_DEBUG}"; echo ""
@@ -2648,6 +2651,7 @@ env:
@echo "CCMISC=${CCMISC}"; echo "" @echo "CCMISC=${CCMISC}"; echo ""
@echo "CFLAGS=${CFLAGS}"; echo "" @echo "CFLAGS=${CFLAGS}"; echo ""
@echo "ICFLAGS=${ICFLAGS}"; echo "" @echo "ICFLAGS=${ICFLAGS}"; echo ""
@echo "LCFLAGS=${LCFLAGS}"; echo ""
@echo "LDFLAGS=${LDFLAGS}"; echo "" @echo "LDFLAGS=${LDFLAGS}"; echo ""
@echo "ILDFLAGS=${ILDFLAGS}"; echo "" @echo "ILDFLAGS=${ILDFLAGS}"; echo ""
@echo "LCC=${LCC}"; echo "" @echo "LCC=${LCC}"; echo ""
@@ -2658,6 +2662,7 @@ env:
@echo "SED=${SED}"; echo "" @echo "SED=${SED}"; echo ""
@echo "SORT=${SORT}"; echo "" @echo "SORT=${SORT}"; echo ""
@echo "TEE=${TEE}"; echo "" @echo "TEE=${TEE}"; echo ""
@echo "LINT=${LINT}"; echo ""
@echo "CTAGS=${CTAGS}"; echo "" @echo "CTAGS=${CTAGS}"; echo ""
@echo "MAKEDEPEND=${MAKEDEPEND}"; echo "" @echo "MAKEDEPEND=${MAKEDEPEND}"; echo ""
@echo "Q=${Q}"; echo "" @echo "Q=${Q}"; echo ""
@@ -2677,8 +2682,7 @@ env:
@echo "CUSTOM_PASSDOWN=${CUSTOM_PASSDOWN}"; echo "" @echo "CUSTOM_PASSDOWN=${CUSTOM_PASSDOWN}"; echo ""
@echo "SAMPLE_PASSDOWN=${SAMPLE_PASSDOWN}"; echo "" @echo "SAMPLE_PASSDOWN=${SAMPLE_PASSDOWN}"; echo ""
@echo "HELP_PASSDOWN=${HELP_PASSDOWN}"; echo "" @echo "HELP_PASSDOWN=${HELP_PASSDOWN}"; echo ""
@echo "CAL_PASSDOWN=${CAL_PASSDOWN}"; echo "" @echo "LIB_PASSDOWN=${LIB_PASSDOWN}"; echo ""
@echo "CSCRIPT_PASSDOWN=${CSCRIPT_PASSDOWN}"; echo ""
@echo "H_SRC=${H_SRC}"; echo "" @echo "H_SRC=${H_SRC}"; echo ""
@echo "C_SRC=${C_SRC}"; echo "" @echo "C_SRC=${C_SRC}"; echo ""
@echo "DISTLIST=${DISTLIST}"; echo "" @echo "DISTLIST=${DISTLIST}"; echo ""
@@ -2764,6 +2768,9 @@ tags: ${CALCSRC} ${LIBSRC} ${H_SRC} ${BUILD_H_SRC} ${MAKE_FILE}
-${CTAGS} ${CALCSRC} ${LIBSRC} ${H_SRC} ${BUILD_H_SRC} 2>&1 | \ -${CTAGS} ${CALCSRC} ${LIBSRC} ${H_SRC} ${BUILD_H_SRC} 2>&1 | \
egrep -v 'Duplicate entry|Second entry ignored' egrep -v 'Duplicate entry|Second entry ignored'
lintclean:
-rm -f llib-lcalc.ln llib.out lint.out
clean: clean:
${V} echo '=-=-=-=-= start of $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= start of $@ rule =-=-=-=-='
-rm -f ${LIBOBJS} -rm -f ${LIBOBJS}
@@ -2775,8 +2782,8 @@ clean:
${Q}echo '=-=-=-=-= Invoking $@ rule for help =-=-=-=-=' ${Q}echo '=-=-=-=-= Invoking $@ rule for help =-=-=-=-='
-cd help; ${MAKE} -f Makefile ${HELP_PASSDOWN} clean -cd help; ${MAKE} -f Makefile ${HELP_PASSDOWN} clean
${Q}echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' ${Q}echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
${Q}echo '=-=-=-=-= Invoking $@ rule for cal =-=-=-=-=' ${Q}echo '=-=-=-=-= Invoking $@ rule for lib =-=-=-=-='
-cd cal; ${MAKE} -f Makefile ${CAL_PASSDOWN} clean -cd lib; ${MAKE} -f Makefile ${LIB_PASSDOWN} clean
${Q}echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' ${Q}echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
${V} echo '=-=-=-=-= Invoking $@ rule for custom =-=-=-=-=' ${V} echo '=-=-=-=-= Invoking $@ rule for custom =-=-=-=-='
cd custom; ${MAKE} -f Makefile ${CUSTOM_PASSDOWN} clean cd custom; ${MAKE} -f Makefile ${CUSTOM_PASSDOWN} clean
@@ -2784,16 +2791,12 @@ clean:
${V} echo '=-=-=-=-= Invoking $@ rule for sample =-=-=-=-=' ${V} echo '=-=-=-=-= Invoking $@ rule for sample =-=-=-=-='
cd sample; ${MAKE} -f Makefile ${SAMPLE_PASSDOWN} clean cd sample; ${MAKE} -f Makefile ${SAMPLE_PASSDOWN} clean
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
${V} echo '=-=-=-=-= Invoking $@ rule for cscript =-=-=-=-='
cd cscript; ${MAKE} -f Makefile ${CSCRIPT_PASSDOWN} clean
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
${Q}echo remove files that are obsolete ${Q}echo remove files that are obsolete
-rm -rf lib -rm -f endian.h stdarg.h libcalcerr.a lib/obj help/obj
-rm -f endian.h stdarg.h libcalcerr.a cal/obj help/obj
-rm -f have_vs.c std_arg.h try_stdarg.c fnvhash.c -rm -f have_vs.c std_arg.h try_stdarg.c fnvhash.c
${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-='
clobber: clobber: lintclean
${V} echo '=-=-=-=-= start of $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= start of $@ rule =-=-=-=-='
-rm -f ${LIBOBJS} -rm -f ${LIBOBJS}
-rm -f ${CALCOBJS} -rm -f ${CALCOBJS}
@@ -2812,8 +2815,8 @@ clobber:
${V} echo '=-=-=-=-= Invoking $@ rule for help =-=-=-=-=' ${V} echo '=-=-=-=-= Invoking $@ rule for help =-=-=-=-='
-cd help; ${MAKE} -f Makefile ${HELP_PASSDOWN} clobber -cd help; ${MAKE} -f Makefile ${HELP_PASSDOWN} clobber
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
${V} echo '=-=-=-=-= Invoking $@ rule for cal =-=-=-=-=' ${V} echo '=-=-=-=-= Invoking $@ rule for lib =-=-=-=-='
-cd cal; ${MAKE} -f Makefile ${CAL_PASSDOWN} clobber -cd lib; ${MAKE} -f Makefile ${LIB_PASSDOWN} clobber
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
${V} echo '=-=-=-=-= Invoking $@ rule for custom =-=-=-=-=' ${V} echo '=-=-=-=-= Invoking $@ rule for custom =-=-=-=-='
cd custom; ${MAKE} -f Makefile ${CUSTOM_PASSDOWN} clobber cd custom; ${MAKE} -f Makefile ${CUSTOM_PASSDOWN} clobber
@@ -2821,12 +2824,8 @@ clobber:
${V} echo '=-=-=-=-= Invoking $@ rule for sample =-=-=-=-=' ${V} echo '=-=-=-=-= Invoking $@ rule for sample =-=-=-=-='
cd sample; ${MAKE} -f Makefile ${SAMPLE_PASSDOWN} clobber cd sample; ${MAKE} -f Makefile ${SAMPLE_PASSDOWN} clobber
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
${V} echo '=-=-=-=-= Invoking $@ rule for cscript =-=-=-=-='
cd cscript; ${MAKE} -f Makefile ${CSCRIPT_PASSDOWN} clobber
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
${V} echo remove files that are obsolete ${V} echo remove files that are obsolete
-rm -rf lib -rm -f endian.h stdarg.h libcalcerr.a lib/obj help/obj
-rm -f endian.h stdarg.h libcalcerr.a cal/obj help/obj
-rm -f have_vs.c std_arg.h try_stdarg.c fnvhash.c -rm -f have_vs.c std_arg.h try_stdarg.c fnvhash.c
${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-='
@@ -2838,57 +2837,50 @@ install: calc libcalc.a ${LIB_H_SRC} ${BUILD_H_SRC} calc.1
else \ else \
true; \ true; \
fi fi
-${CHMOD} 0755 ${TOPDIR} -chmod 0755 ${TOPDIR}
-${Q}if [ ! -d ${LIBDIR} ]; then \ -${Q}if [ ! -d ${LIBDIR} ]; then \
echo mkdir ${LIBDIR}; \ echo mkdir ${LIBDIR}; \
mkdir ${LIBDIR}; \ mkdir ${LIBDIR}; \
else \ else \
true; \ true; \
fi fi
-${CHMOD} 0755 ${LIBDIR} -chmod 0755 ${LIBDIR}
-${Q}if [ ! -d ${HELPDIR} ]; then \ -${Q}if [ ! -d ${HELPDIR} ]; then \
echo mkdir ${HELPDIR}; \ echo mkdir ${HELPDIR}; \
mkdir ${HELPDIR}; \ mkdir ${HELPDIR}; \
else \ else \
true; \ true; \
fi fi
-${CHMOD} 0755 ${HELPDIR} -chmod 0755 ${HELPDIR}
-${Q}if [ ! -d ${SCRIPTDIR} ]; then \
echo mkdir ${SCRIPTDIR}; \
mkdir ${SCRIPTDIR}; \
else \
true; \
fi
-${CHMOD} 0755 ${SCRIPTDIR}
-${Q}if [ ! -d ${INCDIR} ]; then \ -${Q}if [ ! -d ${INCDIR} ]; then \
echo mkdir ${INCDIR}; \ echo mkdir ${INCDIR}; \
mkdir ${INCDIR}; \ mkdir ${INCDIR}; \
else \ else \
true; \ true; \
fi fi
-${CHMOD} 0755 ${INCDIR} -chmod 0755 ${INCDIR}
-${Q}if [ ! -d ${INCDIRCALC} ]; then \ -${Q}if [ ! -d ${INCDIRCALC} ]; then \
echo mkdir ${INCDIRCALC}; \ echo mkdir ${INCDIRCALC}; \
mkdir ${INCDIRCALC}; \ mkdir ${INCDIRCALC}; \
else \ else \
true; \ true; \
fi fi
-${CHMOD} 0755 ${INCDIRCALC} -chmod 0755 ${INCDIRCALC}
-${Q}if [ ! -d ${BINDIR} ]; then \ -${Q}if [ ! -d ${BINDIR} ]; then \
echo mkdir ${BINDIR}; \ echo mkdir ${BINDIR}; \
mkdir ${BINDIR}; \ mkdir ${BINDIR}; \
else \ else \
true; \ true; \
fi fi
-${CHMOD} 0755 ${BINDIR} -chmod 0755 ${BINDIR}
-rm -f ${BINDIR}/calc -rm -f ${BINDIR}/calc
cp calc ${BINDIR} cp calc ${BINDIR}
-${CHMOD} 0555 ${BINDIR}/calc -chmod 0555 ${BINDIR}/calc
${V} echo '=-=-=-=-= Invoking $@ rule for help =-=-=-=-=' ${V} echo '=-=-=-=-= Invoking $@ rule for help =-=-=-=-='
cd help; ${MAKE} -f Makefile ${HELP_PASSDOWN} install cd help; ${MAKE} -f Makefile ${HELP_PASSDOWN} install
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
${V} echo '=-=-=-=-= Invoking $@ rule for cal =-=-=-=-=' ${V} echo '=-=-=-=-= Invoking $@ rule for lib =-=-=-=-='
cd cal; ${MAKE} -f Makefile ${CAL_PASSDOWN} install cd lib; ${MAKE} -f Makefile ${LIB_PASSDOWN} install
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
${V} echo '=-=-=-=-= Invoking $@ rule for custom =-=-=-=-=' ${V} echo '=-=-=-=-= Invoking $@ rule for custom =-=-=-=-='
cd custom; ${MAKE} -f Makefile ${CUSTOM_PASSDOWN} install cd custom; ${MAKE} -f Makefile ${CUSTOM_PASSDOWN} install
@@ -2896,13 +2888,10 @@ install: calc libcalc.a ${LIB_H_SRC} ${BUILD_H_SRC} calc.1
${V} echo '=-=-=-=-= Invoking $@ rule for sample =-=-=-=-=' ${V} echo '=-=-=-=-= Invoking $@ rule for sample =-=-=-=-='
cd sample; ${MAKE} -f Makefile ${SAMPLE_PASSDOWN} install cd sample; ${MAKE} -f Makefile ${SAMPLE_PASSDOWN} install
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
${V} echo '=-=-=-=-= Invoking $@ rule for cscript =-=-=-=-='
cd cscript; ${MAKE} -f Makefile ${CSCRIPT_PASSDOWN} install
${V} echo '=-=-=-=-= Back to the main Makefile for $@ rule =-=-=-=-='
-rm -f ${LIBDIR}/libcalc.a -rm -f ${LIBDIR}/libcalc.a
cp -f libcalc.a ${LIBDIR}/libcalc.a cp -f libcalc.a ${LIBDIR}/libcalc.a
${RANLIB} ${LIBDIR}/libcalc.a ${RANLIB} ${LIBDIR}/libcalc.a
-${CHMOD} 0444 ${LIBDIR}/libcalc.a -chmod 0644 ${LIBDIR}/libcalc.a
-${Q}for i in ${LIB_H_SRC} ${BUILD_H_SRC}; do \ -${Q}for i in ${LIB_H_SRC} ${BUILD_H_SRC}; do \
echo rm -f ${LIBDIR}/$$i; \ echo rm -f ${LIBDIR}/$$i; \
rm -f ${LIBDIR}/$$i; \ rm -f ${LIBDIR}/$$i; \
@@ -2910,9 +2899,20 @@ install: calc libcalc.a ${LIB_H_SRC} ${BUILD_H_SRC} calc.1
rm -f ${INCDIRCALC}/$$i; \ rm -f ${INCDIRCALC}/$$i; \
echo cp $$i ${INCDIRCALC}; \ echo cp $$i ${INCDIRCALC}; \
cp $$i ${INCDIRCALC}; \ cp $$i ${INCDIRCALC}; \
echo ${CHMOD} 0444 ${INCDIRCALC}/$$i; \ echo chmod 0444 ${INCDIRCALC}/$$i; \
${CHMOD} 0444 ${INCDIRCALC}/$$i; \ chmod 0444 ${INCDIRCALC}/$$i; \
done done
${Q}: If lint was made, install the lint library.
-${Q}if [ -f llib-lcalc.ln ]; then \
echo rm -f ${LIBDIR}/llib-lcalc.ln; \
rm -f ${LIBDIR}/llib-lcalc.ln; \
echo cp llib-lcalc.ln ${LIBDIR}; \
cp llib-lcalc.ln ${LIBDIR}; \
echo chmod 0444 ${LIBDIR}/llib-lcalc.ln; \
chmod 0444 ${LIBDIR}/llib-lcalc.ln; \
else \
true; \
fi
-${Q}if [ -z "${MANDIR}" ]; then \ -${Q}if [ -z "${MANDIR}" ]; then \
echo '$${MANDIR} is empty, calc man page will not be installed'; \ echo '$${MANDIR} is empty, calc man page will not be installed'; \
else \ else \
@@ -2920,8 +2920,8 @@ install: calc libcalc.a ${LIB_H_SRC} ${BUILD_H_SRC} calc.1
rm -f ${MANDIR}/calc.${MANEXT}; \ rm -f ${MANDIR}/calc.${MANEXT}; \
echo "cp calc.1 ${MANDIR}/calc.${MANEXT}"; \ echo "cp calc.1 ${MANDIR}/calc.${MANEXT}"; \
cp calc.1 ${MANDIR}/calc.${MANEXT}; \ cp calc.1 ${MANDIR}/calc.${MANEXT}; \
echo "${CHMOD} 0444 ${MANDIR}/calc.${MANEXT}"; \ echo "chmod 0444 ${MANDIR}/calc.${MANEXT}"; \
${CHMOD} 0444 ${MANDIR}/calc.${MANEXT}; \ chmod 0444 ${MANDIR}/calc.${MANEXT}; \
fi fi
-${Q}if [ -z "${CATDIR}" ]; then \ -${Q}if [ -z "${CATDIR}" ]; then \
echo '$${CATDIR} is empty, calc cat page will not be installed'; \ echo '$${CATDIR} is empty, calc cat page will not be installed'; \
@@ -2934,8 +2934,8 @@ install: calc libcalc.a ${LIB_H_SRC} ${BUILD_H_SRC} calc.1
rm -f ${CATDIR}/calc.${CATEXT}; \ rm -f ${CATDIR}/calc.${CATEXT}; \
echo "${NROFF} ${NROFF_ARG} calc.1 > ${CATDIR}/calc.${CATEXT}";\ echo "${NROFF} ${NROFF_ARG} calc.1 > ${CATDIR}/calc.${CATEXT}";\
${NROFF} ${NROFF_ARG} calc.1 > ${CATDIR}/calc.${CATEXT}; \ ${NROFF} ${NROFF_ARG} calc.1 > ${CATDIR}/calc.${CATEXT}; \
echo "${CHMOD} ${MANMODE} ${MANDIR}/calc.${MANEXT}"; \ echo "chmod ${MANMODE} ${MANDIR}/calc.${MANEXT}"; \
${CHMOD} ${MANMODE} ${MANDIR}/calc.${MANEXT}; \ chmod ${MANMODE} ${MANDIR}/calc.${MANEXT}; \
fi; \ fi; \
fi fi
${Q}echo remove files that are obsolete ${Q}echo remove files that are obsolete
@@ -2944,11 +2944,8 @@ install: calc libcalc.a ${LIB_H_SRC} ${BUILD_H_SRC} calc.1
-rm -f ${LIBDIR}/prototype.h prototype.h -rm -f ${LIBDIR}/prototype.h prototype.h
-rm -f ${LIBDIR}/libcalcerr.a libcalcerr.a -rm -f ${LIBDIR}/libcalcerr.a libcalcerr.a
-rm -f ${LIBDIR}/calc_errno.h calc_errno.h ${INCDIRCALC}/calc_errno.h -rm -f ${LIBDIR}/calc_errno.h calc_errno.h ${INCDIRCALC}/calc_errno.h
-rm -f calc_errno.c calc_errno.o calc_errno lint.sed -rm -f calc_errno.c calc_errno.o calc_errno
-rm -f alloc.c alloc.o have_vs.c have_vs.o have_vs io.c io.o -rm -f ${LIBDIR}/altbind ${HELPDIR}/altbind
-rm -f std_arg.h try_stdarg.c try_stdarg.o try_stdarg
-rm -f ${LIBDIR}/altbind ${HELPDIR}/altbind cal/altbind
-rm -f ${LIBDIR}/llib-lcalc.ln
${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-=' ${V} echo '=-=-=-=-= end of $@ rule =-=-=-=-='
## ##
@@ -3195,7 +3192,6 @@ config.o: have_malloc.h
config.o: have_memmv.h config.o: have_memmv.h
config.o: have_newstr.h config.o: have_newstr.h
config.o: have_stdlib.h config.o: have_stdlib.h
config.o: have_strdup.h
config.o: have_string.h config.o: have_string.h
config.o: longbits.h config.o: longbits.h
config.o: md5.h config.o: md5.h
@@ -3434,6 +3430,7 @@ hist.o: qmath.h
hist.o: shs.h hist.o: shs.h
hist.o: shs1.h hist.o: shs1.h
hist.o: string.h hist.o: string.h
hist.o: terminal.h
hist.o: value.h hist.o: value.h
hist.o: zmath.h hist.o: zmath.h
input.o: alloc.h input.o: alloc.h
@@ -3525,7 +3522,6 @@ lib_calc.o: shs.h
lib_calc.o: shs1.h lib_calc.o: shs1.h
lib_calc.o: string.h lib_calc.o: string.h
lib_calc.o: symbol.h lib_calc.o: symbol.h
lib_calc.o: terminal.h
lib_calc.o: token.h lib_calc.o: token.h
lib_calc.o: value.h lib_calc.o: value.h
lib_calc.o: zmath.h lib_calc.o: zmath.h

31
README
View File

@@ -52,10 +52,9 @@ C programmers should note some unexpected differences in the calc syntax:
> help unexpected > help unexpected
Calc is shipped with a standard collection of calc resource files. Calc is shipped with a library of calc scripts. For a list see:
For a list of calc standard resource files see:
> help resource > help stdlib
=-= =-=
@@ -99,29 +98,3 @@ but see the BUGS file first.
The calc web site is located at: The calc web site is located at:
http://reality.sgi.com/chongo/tech/comp/calc/ http://reality.sgi.com/chongo/tech/comp/calc/
## Copyright (C) 1999 Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL. You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.1 $
## @(#) $Id: README,v 29.1 1999/12/14 09:15:29 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/RCS/README,v $
##
## Under source code control: 1995/10/25 05:27:59
## File existed as early as: 1995
##
## chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
## Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/

46
addop.c
View File

@@ -1,35 +1,11 @@
/* /*
* addop - add opcodes to a function being compiled * Copyright (c) 1997 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 David I. Bell and Ernest Bowen * Add opcodes to a function being compiled.
*
* Primary author: David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: addop.c,v 29.1 1999/12/14 09:15:29 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/addop.c,v $
*
* Under source code control: 1990/02/15 01:48:10
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#include <stdio.h> #include <stdio.h>
#include "calc.h" #include "calc.h"
#include "opcodes.h" #include "opcodes.h"
@@ -92,7 +68,7 @@ showfunctions(void)
count = 0; count = 0;
if (funccount > 0) { if (funccount > 0) {
if (conf->resource_debug & RSCDBG_FUNC_INFO) if (conf->lib_debug & LIBDBG_FUNC_INFO)
math_str("Index\tName \tArgs\tOpcodes\n" math_str("Index\tName \tArgs\tOpcodes\n"
"-----\t------ \t---- \t------\n"); "-----\t------ \t---- \t------\n");
else else
@@ -100,7 +76,7 @@ showfunctions(void)
"----\t---------\n"); "----\t---------\n");
for (index = 0; index < funccount; index++) { for (index = 0; index < funccount; index++) {
fp = functions[index]; fp = functions[index];
if (conf->resource_debug & RSCDBG_FUNC_INFO) { if (conf->lib_debug & LIBDBG_FUNC_INFO) {
math_fmt("%5ld\t%-12s\t", index, math_fmt("%5ld\t%-12s\t", index,
namestr(&funcnames,index)); namestr(&funcnames,index));
@@ -120,7 +96,7 @@ showfunctions(void)
} }
} }
} }
if (conf->resource_debug & RSCDBG_FUNC_INFO) { if (conf->lib_debug & LIBDBG_FUNC_INFO) {
math_fmt("\nNumber non-null: %ld\n", count); math_fmt("\nNumber non-null: %ld\n", count);
math_fmt("Number null: %ld\n", funccount - count); math_fmt("Number null: %ld\n", funccount - count);
math_fmt("Total number: %ld\n", funccount); math_fmt("Total number: %ld\n", funccount);
@@ -215,8 +191,8 @@ endfunc(void)
size += dumpop(&fp->f_opcodes[size]); size += dumpop(&fp->f_opcodes[size]);
} }
} }
if ((inputisterminal() && conf->resource_debug & RSCDBG_STDIN_FUNC) || if ((inputisterminal() && conf->lib_debug & LIBDBG_STDIN_FUNC) ||
(!inputisterminal() && conf->resource_debug & RSCDBG_FILE_FUNC)) { (!inputisterminal() && conf->lib_debug & LIBDBG_FILE_FUNC)) {
printf("%s(", newname); printf("%s(", newname);
for (index = 0; index < fp->f_paramcount; index++) { for (index = 0; index < fp->f_paramcount; index++) {
if (index) if (index)
@@ -288,8 +264,8 @@ rmuserfunc(char *name)
return; return;
freenumbers(functions[index]); freenumbers(functions[index]);
free(functions[index]); free(functions[index]);
if ((inputisterminal() && conf->resource_debug & RSCDBG_STDIN_FUNC) || if ((inputisterminal() && conf->lib_debug & LIBDBG_STDIN_FUNC) ||
(!inputisterminal() && conf->resource_debug & RSCDBG_FILE_FUNC)) (!inputisterminal() && conf->lib_debug & LIBDBG_FILE_FUNC))
printf("%s() undefined\n", name); printf("%s() undefined\n", name);
functions[index] = NULL; functions[index] = NULL;
} }

View File

@@ -1,34 +1,26 @@
/* /*
* align32 - determine if 32 bit accesses must be aligned * align32 - determine if 32 bit accesses must be aligned
* *
* Copyright (C) 1999 Landon Curt Noll * This file was written by:
* *
* Calc is open software; you can redistribute it and/or modify it under * Landon Curt Noll
* the terms of the version 2.1 of the GNU Lesser General Public License * http://reality.sgi.com/chongo/
* as published by the Free Software Foundation.
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * chongo <was here> /\../\
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
* *
* A copy of version 2.1 of the GNU Lesser General Public License is * This code has been placed in the public domain. Please do not
* distributed with calc under the filename COPYING-LGPL. You should have * copyright this code.
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* *
* @(#) $Revision: 29.1 $ * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO
* @(#) $Id: align32.c,v 29.1 1999/12/14 09:15:29 chongo Exp $ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MER-
* @(#) $Source: /usr/local/src/cmd/calc/RCS/align32.c,v $ * CHANTABILITY AND FITNESS. IN NO EVENT SHALL LANDON CURT
* * NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
* Under source code control: 1995/11/23 05:18:06 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* File existed as early as: 1995 * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#include <stdio.h> #include <stdio.h>
#include <signal.h> #include <signal.h>
#include "longbits.h" #include "longbits.h"

29
alloc.h
View File

@@ -1,30 +1,7 @@
/* /*
* alloc - storage allocation and storage debug macros * Copyright (c) 1997 David I. Bell
* * Permission is granted to use, distribute, or modify this source,
* Copyright (C) 1999 David I. Bell * provided that this copyright notice remains intact.
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: alloc.h,v 29.1 1999/12/14 09:15:29 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/alloc.h,v $
*
* Under source code control: 1990/02/15 01:48:29
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */

View File

@@ -1,33 +1,8 @@
/* /*
* assocfunc - association table routines * Copyright (c) 1995 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: assocfunc.c,v 29.1 1999/12/14 09:15:29 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/assocfunc.c,v $
*
* Under source code control: 1993/07/20 23:04:27
* File existed as early as: 1993
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* Association table routines. * Association table routines.
* An association table is a type of value which can be "indexed" by * An association table is a type of value which can be "indexed" by
* one or more arbitrary values. Each element in the table is thus an * one or more arbitrary values. Each element in the table is thus an
@@ -36,7 +11,6 @@
* quick access. * quick access.
*/ */
#include "value.h" #include "value.h"

View File

@@ -1,35 +1,12 @@
/* /*
* blkcpy - general values and related routines used by the calculator * Copyright (c) 1997 Ernest Bowen and Landon Curt Noll
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 Landon Curt Noll and Ernest Bowen * By: Ernest Bowen and Landon Curt Noll
* * ernie@neumann.une.edu.au and http://reality.sgi.com/chongo/
* Primary author: Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: blkcpy.c,v 29.1 1999/12/14 09:15:29 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/blkcpy.c,v $
*
* Under source code control: 1997/04/18 20:41:26
* File existed as early as: 1997
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#include <stdio.h> #include <stdio.h>
#include <sys/types.h> #include <sys/types.h>
#include "calc.h" #include "calc.h"

View File

@@ -1,32 +1,9 @@
/* /*
* blkcpy - general values and related routines used by the calculator * Copyright (c) 1997 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 Landon Curt Noll and Ernest Bowen * Definitions of general values and related routines used by the calculator.
*
* Primary author: Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: blkcpy.h,v 29.1 1999/12/14 09:15:29 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/blkcpy.h,v $
*
* Under source code control: 1997/04/18 20:41:25
* File existed as early as: 1997
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */

45
block.c
View File

@@ -1,33 +1,36 @@
/* /*
* block - fixed, dynamic, fifo and circular memory blocks * block - fixed, dynamic, fifo and circular memory blocks
*/
/*
* Copyright (c) 1997 by Landon Curt Noll. All Rights Reserved.
* *
* Copyright (C) 1999 Landon Curt Noll and Ernest Bowen * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
* *
* Primary author: Landon Curt Noll * supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
* *
* Calc is open software; you can redistribute it and/or modify it under * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* the terms of the version 2.1 of the GNU Lesser General Public License * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* as published by the Free Software Foundation. * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * Comments, suggestions, bug fixes and questions about these routines
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * are welcome. Send EMail to the address given below.
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
* *
* A copy of version 2.1 of the GNU Lesser General Public License is * Happy bit twiddling,
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* *
* @(#) $Revision: 29.1 $ * Landon Curt Noll
* @(#) $Id: block.c,v 29.1 1999/12/14 09:15:29 chongo Exp $ * http://reality.sgi.com/chongo/
* @(#) $Source: /usr/local/src/cmd/calc/RCS/block.c,v $
* *
* Under source code control: 1997/02/27 00:29:40 * chongo <was here> /\../\
* File existed as early as: 1997
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */

45
block.h
View File

@@ -1,33 +1,36 @@
/* /*
* block - fixed, dynamic, fifo and circular memory blocks * block - fixed, dynamic, fifo and circular memory blocks
*/
/*
* Copyright (c) 1997 by Landon Curt Noll. All Rights Reserved.
* *
* Copyright (C) 1999 Landon Curt Noll and Ernest Bowen * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
* *
* Primary author: Landon Curt Noll * supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
* *
* Calc is open software; you can redistribute it and/or modify it under * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* the terms of the version 2.1 of the GNU Lesser General Public License * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* as published by the Free Software Foundation. * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * Comments, suggestions, bug fixes and questions about these routines
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * are welcome. Send EMail to the address given below.
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
* *
* A copy of version 2.1 of the GNU Lesser General Public License is * Happy bit twiddling,
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* *
* @(#) $Revision: 29.1 $ * Landon Curt Noll
* @(#) $Id: block.h,v 29.1 1999/12/14 09:15:30 chongo Exp $ * http://reality.sgi.com/chongo/
* @(#) $Source: /usr/local/src/cmd/calc/RCS/block.h,v $
* *
* Under source code control: 1997/02/21 05:03:39 * chongo <was here> /\../\
* File existed as early as: 1997
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */

View File

@@ -1,34 +1,25 @@
/* /*
* byteswap - byte swapping routines * Copyright (c) 1995 by Landon Curt Noll. All Rights Reserved.
* *
* Copyright (C) 1999 Landon Curt Noll * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
* *
* Calc is open software; you can redistribute it and/or modify it under * supporting documentation
* the terms of the version 2.1 of the GNU Lesser General Public License * source copies
* as published by the Free Software Foundation. * source works derived from this source
* binaries derived from this source or from derived source
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* Public License for more details. * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* A copy of version 2.1 of the GNU Lesser General Public License is * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* distributed with calc under the filename COPYING-LGPL. You should have * PERFORMANCE OF THIS SOFTWARE.
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: byteswap.c,v 29.1 1999/12/14 09:15:30 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/byteswap.c,v $
*
* Under source code control: 1995/10/11 04:44:01
* File existed as early as: 1995
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#include "cmath.h" #include "cmath.h"
#include "byteswap.h" #include "byteswap.h"

View File

@@ -1,31 +1,23 @@
/* /*
* byteswap - byte swapping macros * Copyright (c) 1997 by Landon Curt Noll. All Rights Reserved.
* *
* Copyright (C) 1999 Landon Curt Noll * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
* *
* Calc is open software; you can redistribute it and/or modify it under * supporting documentation
* the terms of the version 2.1 of the GNU Lesser General Public License * source copies
* as published by the Free Software Foundation. * source works derived from this source
* binaries derived from this source or from derived source
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* Public License for more details. * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* A copy of version 2.1 of the GNU Lesser General Public License is * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* distributed with calc under the filename COPYING-LGPL. You should have * PERFORMANCE OF THIS SOFTWARE.
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: byteswap.h,v 29.1 1999/12/14 09:15:30 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/byteswap.h,v $
*
* Under source code control: 1995/10/11 04:44:01
* File existed as early as: 1995
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */

View File

@@ -1,50 +0,0 @@
/*
* beer - 99 bottles of beer
*
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: beer.cal,v 29.1 1999/12/14 09:15:30 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/beer.cal,v $
*
* Under source code control: 1996/11/13 13:21:05
* File existed as early as: 1996
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* See: http://www.ionet.net/~timtroyr/funhouse/beer.html#calc
*/
for (i=99; i > 0;) {
/* current wall state */
some_bottles = (i != 1) ? "bottles" : "bottle";
print i, some_bottles, "of beer on the wall,",;
print i, some_bottles, "of beer!";
/* glug, glug */
--i;
print "Take one down and pass it around,",;
/* new wall state */
less = (i > 0) ? i : "no";
bottles = (i!=1) ? "bottles" : "bottle";
print less, bottles, "of beer on the wall!\n";
}

View File

@@ -1,49 +0,0 @@
/*
* bigprime - a prime test, base a, on p*2^x+1 for even x>m
*
* Copyright (C) 1999 David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: bigprime.cal,v 29.1 1999/12/14 09:15:30 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/bigprime.cal,v $
*
* Under source code control: 1991/05/22 21:56:32
* File existed as early as: 1991
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
define bigprime(a, m, p)
{
local n1, n;
n1 = 2^m * p;
for (;;) {
m++;
n1 += n1;
n = n1 + 1;
if (isodd(m))
continue;
print m;
if (pmod(a, n1 / 2, n) != n1)
continue;
if (pmod(a, n1 / p, n) == 1)
continue;
print " " : n;
}
}

View File

@@ -1,75 +0,0 @@
# bindings - default key bindings for calc line editing functions
#
# Copyright (C) 1999 David I. Bell
#
# Calc is open software; you can redistribute it and/or modify it under
# the terms of the version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
#
# Calc is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
# Public License for more details.
#
# A copy of version 2.1 of the GNU Lesser General Public License is
# distributed with calc under the filename COPYING-LGPL. You should have
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.1 $
# @(#) $Id: bindings,v 29.1 1999/12/14 09:15:30 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/bindings,v $
#
# Under source code control: 1993/05/02 20:09:19
# File existed as early as: 1993
#
# Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
# NOTE: This facility is ignored if calc was compiled with GNU-readline.
# In that case, the standard readline mechanisms (see readline(3))
# are used in place of those found below.
map base-map
default insert-char
^@ set-mark
^A start-of-line
^B backward-char
^D delete-char
^E end-of-line
^F forward-char
^H backward-kill-char
^J new-line
^K kill-line
^L refresh-line
^M new-line
^N forward-history
^O save-line
^P backward-history
^R reverse-search
^T swap-chars
^U flush-input
^V quote-char
^W kill-region
^Y yank
^? backward-kill-char
^[ ignore-char esc-map
map esc-map
default ignore-char base-map
G start-of-line
H backward-history
P forward-history
K backward-char
M forward-char
O end-of-line
S delete-char
g goto-line
s backward-word
t forward-word
d forward-kill-word
u uppercase-word
l lowercase-word
h list-history
^[ flush-input
[ arrow-key

View File

@@ -1,36 +0,0 @@
/*
* hello - print Hello World! forever
*
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: hello.cal,v 29.1 1999/12/14 09:15:31 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/hello.cal,v $
*
* Under source code control: 1996/11/13 13:25:43
* File existed as early as: 1996
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* See: http://www.latech.edu/~acm/helloworld/calc.html
*/
while(1) print "Hello World!";

View File

@@ -1,61 +0,0 @@
/*
* mersenne - perform a primality test of 2^p-1, for prime p>1
*
* Copyright (C) 1999 David I. Bell and Landon Curt Noll
*
* Primary author: David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: mersenne.cal,v 29.1 1999/12/14 09:15:31 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/mersenne.cal,v $
*
* Under source code control: 1991/05/22 21:56:36
* File existed as early as: 1991
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* NOTE: See lucas.cal for a more general routine.
*/
define mersenne(p)
{
local u, i, p_mask;
/* firewall */
if (! isint(p))
quit "p is not an integer";
/* two is a special case */
if (p == 2)
return 1;
/* if p is not prime, then 2^p-1 is not prime */
if (! ptest(p,1))
return 0;
/* lltest: u(i+1) = u(i)^2 - 2 mod 2^p-1 */
u = 4;
for (i = 2; i < p; ++i) {
u = hnrmod(u^2 - 2, 1, p, -1);
}
/* 2^p-1 is prime iff u(p) = 0 mod 2^p-1 */
return (u == 0);
}

View File

@@ -1,94 +0,0 @@
/*
* pell - solve Pell's equation
*
* Copyright (C) 1999 David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: pell.cal,v 29.1 1999/12/14 09:15:31 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/pell.cal,v $
*
* Under source code control: 1990/02/15 01:50:34
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* Solve Pell's equation; Returns the solution X to: X^2 - D * Y^2 = 1.
* Type the solution to pells equation for a particular D.
*/
define pell(D)
{
local X, Y;
X = pellx(D);
if (isnull(X)) {
print "D=":D:" is square";
return;
}
Y = isqrt((X^2 - 1) / D);
print X : "^2 - " : D : "*" : Y : "^2 = " : X^2 - D*Y^2;
}
/*
* Function to solve Pell's equation
* Returns the solution X to:
* X^2 - D * Y^2 = 1
*/
define pellx(D)
{
local R, Rp, U, Up, V, Vp, A, T, Q1, Q2, n;
local mat ans[2,2];
local mat tmp[2,2];
R = isqrt(D);
Vp = D - R^2;
if (Vp == 0)
return;
Rp = R + R;
U = Rp;
Up = U;
V = 1;
A = 0;
n = 0;
ans[0,0] = 1;
ans[1,1] = 1;
tmp[0,1] = 1;
tmp[1,0] = 1;
do {
T = V;
V = A * (Up - U) + Vp;
Vp = T;
A = U // V;
Up = U;
U = Rp - U % V;
tmp[0,0] = A;
ans *= tmp;
n++;
} while (A != Rp);
Q2 = ans[[1]];
Q1 = isqrt(Q2^2 * D + 1);
if (isodd(n)) {
T = Q1^2 + D * Q2^2;
Q2 = Q1 * Q2 * 2;
Q1 = T;
}
return Q1;
}

View File

@@ -1,71 +0,0 @@
/*
* pix - iterative method of finding the number of primes less than x
*
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: pix.cal,v 29.1 1999/12/14 09:15:31 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/pix.cal,v $
*
* Under source code control: 1996/07/09 03:14:14
* File existed as early as: 1996
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* Here is an iterative method of finding the number of primes less than
* or equal to a given number. This method is from "Computer Recreations"
* June 1996 issue of Scientific American.
*
* NOTE: For reasonable values of x, the builtin function pix(x) is
* much faster. This code is provided because the method
* is interesting.
*/
define pi_of_x(x)
{
local An; /* A(n) */
local An1; /* A(n-1) */
local An2; /* A(n-2) */
local An3; /* A(n-3) */
local primes; /* number of primes found */
local n; /* loop counter */
/*
* setup
*/
An1 = 2;
An2 = 0;
An3 = 3;
primes = 1;
/*
* main A(n+1)=A(n-1)+A(n-2) sequence loop
*/
for (n = 3; n < x; ++n) {
An = An2 + An3;
An3 = An2;
An2 = An1;
An1 = An;
if (An % n == 0)
++primes;
}
return primes;
}

View File

@@ -1,52 +0,0 @@
/*
* pollard - factor using Pollard's p-1 method
*
* Copyright (C) 1999 David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: pollard.cal,v 29.1 1999/12/14 09:15:31 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/pollard.cal,v $
*
* Under source code control: 1991/05/22 21:56:37
* File existed as early as: 1991
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
define pfactor(N, B, ai, af)
{
local a, k, i, d;
if (isnull(B))
B = 1000;
if (isnull(ai))
ai = 2;
if (isnull(af))
af = ai + 20;
k = lcmfact(B);
d = lfactor(N, B);
if (d > 1)
return d;
for (a = ai; a <= af; a++) {
i = pmod(a, k, N);
d = gcd(i - 1, N);
if ((d > 1) && (d != N))
return d;
}
return 1;
}

View File

@@ -1,74 +0,0 @@
/*
* psqrt - calculate square roots modulo a prime
*
* Copyright (C) 1999 David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: psqrt.cal,v 29.1 1999/12/14 09:15:32 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/psqrt.cal,v $
*
* Under source code control: 1990/02/15 01:50:35
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* Returns null if number is not prime or if there is no square root.
* The smaller square root is always returned.
*/
define psqrt(u, p)
{
local p1, q, n, y, r, v, w, t, k;
p1 = p - 1;
r = lowbit(p1);
q = p >> r;
t = 1 << (r - 1);
for (n = 2; ; n++) {
if (ptest(n, 1) == 0)
continue;
y = pmod(n, q, p);
k = pmod(y, t, p);
if (k == 1)
continue;
if (k != p1)
return;
break;
}
t = pmod(u, (q - 1) / 2, p);
v = (t * u) % p;
w = (t^2 * u) % p;
while (w != 1) {
k = 0;
t = w;
do {
k++;
t = t^2 % p;
} while (t != 1);
if (k == r)
return;
t = pmod(y, 1 << (r - k - 1), p);
y = t^2 % p;
v = (v * t) % p;
w = (w * y) % p;
r = k;
}
return min(v, p - v);
}

View File

@@ -1,68 +0,0 @@
/*
* qtime - Display time as English sentence
*
* usage:
* qtime(utc_hr_offset)
*
* utc_hr_offset Offset from UTC in hours.
*
* Written by: Klaus Alexander Seistrup <kseis@magnetic-ink.dk>
* With minor mods by: Landon Curt Noll <http://reality.sgi.com/chongo/>
*
* See:
* http://www.magnetic-ink.dk/download/qtime.html
*
* for examples of qtime() written on other languages.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: qtime.cal,v 29.1 1999/12/14 09:15:32 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/qtime.cal,v $
*
* This file is not covered under version 2.1 of the GNU LGPL.
*/
/*
* qtime - Display time as English sentence
*/
define qtime(utc_hr_offset)
{
static mat hr[12] = {
"twelve", "one", "two", "three", "four", "five",
"six", "seven", "eight", "nine", "ten", "eleven"
};
static mat mn[7] = {
"", "five ", "ten ", "a quarter ", "twenty ", "twenty-five ", "half "
};
static mat ny[5] = {
"nearly ", "almost ", "", "just after ", "after "
};
static mat up[3] = {
"to ", "", "past "
};
local adj_mins = (((time() + utc_hr_offset*3600) % 86400) + 30)//60+27;
local hours = (adj_mins // 60) % 12;
local minutes = adj_mins % 60;
local almost = minutes % 5;
local divisions = (minutes // 5) - 5;
local to_past_idx = divisions > 0 ? 1 : 0;
if (divisions < 0) {
divisions = -divisions;
to_past_idx = -1;
}
++to_past_idx;
/*
* Print the English sentence
*
* We avoid forward and back quotes just to show that the char()
* builtin function can be used in conjunction with a printf.
*/
printf("It%cs %s%s%s%s",
char(0x27), ny[almost], mn[divisions],
up[to_past_idx], hr[hours]);
if (divisions == 0)
printf(" o%cclock", char(0x27));
print ".";
}

View File

@@ -1,69 +0,0 @@
/*
* solve - solve f(x) = 0 to within the desired error value for x
*
* Copyright (C) 1999 David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: solve.cal,v 29.1 1999/12/14 09:15:33 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/solve.cal,v $
*
* Under source code control: 1990/02/15 01:50:37
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* Solve the equation f(x) = 0 to within the desired error value for x.
* The function 'f' must be defined outside of this routine, and the low
* and high values are guesses which must produce values with opposite signs.
*/
define solve(low, high, epsilon)
{
local flow, fhigh, fmid, mid, places;
if (isnull(epsilon))
epsilon = epsilon();
if (epsilon <= 0)
quit "Non-positive epsilon value";
places = highbit(1 + int(1/epsilon)) + 1;
flow = f(low);
if (abs(flow) < epsilon)
return low;
fhigh = f(high);
if (abs(flow) < epsilon)
return high;
if (sgn(flow) == sgn(fhigh))
quit "Non-opposite signs";
while (1) {
mid = bround(high - fhigh * (high - low) / (fhigh - flow), places);
if ((mid == low) || (mid == high))
places++;
fmid = f(mid);
if (abs(fmid) < epsilon)
return mid;
if (sgn(fmid) == sgn(flow)) {
low = mid;
flow = fmid;
} else {
high = mid;
fhigh = fmid;
}
}
}

View File

@@ -1,65 +0,0 @@
/*
* sumsq - find unique two positive integers whose squares sum to a given prime
*
* Copyright (C) 1999 David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: sumsq.cal,v 29.1 1999/12/14 09:15:33 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/sumsq.cal,v $
*
* Under source code control: 1990/02/15 01:50:37
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* Determine the unique two positive integers whose squares sum to the
* specified prime. This is always possible for all primes of the form
* 4N+1, and always impossible for primes of the form 4N-1.
*/
define ss(p)
{
local a, b, i, p4;
if (p == 2) {
print "1^2 + 1^2 = 2";
return;
}
if ((p % 4) != 1) {
print p, "is not of the form 4N+1";
return;
}
if (!ptest(p, min(p-2, 10))) {
print p, "is not a prime";
return;
}
p4 = (p - 1) / 4;
i = 2;
do {
a = pmod(i++, p4, p);
} while ((a^2 % p) == 1);
b = p;
while (b^2 > p) {
i = b % a;
b = a;
a = i;
}
print a : "^2 +" , b : "^2 =" , a^2 + b^2;
}

View File

@@ -1,32 +0,0 @@
/*
* test1700 - 1700 series of the regress.cal test suite
*
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: test1700.cal,v 29.1 1999/12/14 09:15:33 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test1700.cal,v $
*
* Under source code control: 1994/03/14 23:12:51
* File existed as early as: 1994
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
++value;

View File

@@ -1,40 +0,0 @@
/*
* test3100 - 3100 series of the regress.cal test suite
*
* Copyright (C) 1999 Ernest Bowen and Landon Curt Noll
*
* Primary author: Ernest Bowen
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: test3100.cal,v 29.1 1999/12/14 09:15:33 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test3100.cal,v $
*
* Under source code control: 1995/11/28 11:56:57
* File existed as early as: 1995
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
obj res {r};
global md;
define res_test(a) = !ismult(a.r, md);
define res_sub(a,b) {local obj res v = {(a.r - b.r) % md}; return v;};
define res_mul(a,b) {local obj res v = {(a.r * b.r) % md}; return v;};
define res_neg(a) {local obj res v = {(-a.r) % md}; return v;};
define res_inv(a) {local obj res v = {minv(a.r, md)}; return v;};
define res(x) {local obj res v = {x % md}; return v;};

View File

@@ -1,71 +0,0 @@
/*
* test5100 - 5100 series of the regress.cal test suite
*
* Copyright (C) 1999 Ernest Bowen and Landon Curt Noll
*
* Primary author: Ernest Bowen
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: test5100.cal,v 29.1 1999/12/14 09:15:34 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test5100.cal,v $
*
* Under source code control: 1996/12/02 23:57:10
* File existed as early as: 1996
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
global defaultverbose = 1; /* default verbose value */
global err;
/*
* We test the new code generator declaration scope and order.
*
* In this function two static variables a5100 and b5100 are created,
* with zero value, when the definition is read.
*
* The variable a5100 is initialized with the value x if and when this
* function is first called with a positive even x. The varable b5100
* is similarly initialized if and when this function is first called positive
* odd x.
*
* Each time this function is called with positive integer x, a5100 or
* b5100 is incremented.
*
* Finally the values of the static variables are assigned to the global
* variables a5100 and b5100.
*
* Immediately after the last of several calls to this function
* a5100 = 0 if none of the x's have been positive even, otherwise
* a5100 = the first positive even x + the number of positive even x's,
* and b5100 = 0 if none of the x's have been positive odd, otherwise
* b5100 = the first positive odd x + the number of positive odd x's.
*/
define test5100(x)
{
if (isint(x) && x > 0) {
if (iseven(x)) {
static a5100 = x;
a5100++;
} else {
static b5100 = x;
b5100++;
}
}
global a5100 = a5100, b5100 = b5100;
}

View File

@@ -1,53 +0,0 @@
/*
* test5200 - 5200 series of the regress.cal test suite
*
* Copyright (C) 1999 Ernest Bowen and Landon Curt Noll
*
* Primary author: Ernest Bowen
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: test5200.cal,v 29.1 1999/12/14 09:15:34 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test5200.cal,v $
*
* Under source code control: 1997/02/07 02:48:10
* File existed as early as: 1997
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
global defaultverbose = 1; /* default verbose value */
global err;
/*
* test the fix of a global/static bug
*
* Given the following:
*
* global a = 10;
* static a = 20;
* define f(x) = a + x;
* define g(x) {global a = 30; return a + x;}
* define h(x) = a + x;
*
* Older versions of
*/
global a5200 = 10;
static a5200 = 20;
define f5200(x) = a5200 + x;
define g5200(x) {global a5200 = 30; return a5200 + x;}
define h5200(x) = a5200 + x;

View File

@@ -1,48 +0,0 @@
/*
* test8400 - 8400 series of the regress.cal test suite
*
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: test8400.cal,v 29.1 1999/12/14 09:15:34 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test8400.cal,v $
*
* Under source code control: 1999/10/31 01:00:03
* File existed as early as: 1999
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
print "8401: in test8400.cal";
/*
* test8400 - dummy function to allow a check of quit-based memory leaks
*/
define test8400()
{
local x8401 = 19937; /* watch for lost memory */
static s8401 = 44497; /* watch for lost memory */
return x8401+s8401;
}
print "8402: parsed test8400()";
vrfy(test8400() == 64434, '8403: test8400() == 64434');
quit;
prob('quit did not end test8400.cal');

View File

@@ -1,55 +0,0 @@
/*
* unixfrac - represent a fraction as a sum of distince unit fractions
*
* Copyright (C) 1999 David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: unitfrac.cal,v 29.1 1999/12/14 09:15:34 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/unitfrac.cal,v $
*
* Under source code control: 1990/02/15 01:50:38
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* Represent a fraction as sum of distinct unit fractions.
* The output is the unit fractions themselves, and in square brackets,
* the number of digits in the numerator and denominator of the value left
* to be found. Numbers larger than 3.5 become very difficult to calculate.
*/
define unitfrac(x)
{
local d, di, n;
if (x <= 0)
quit "Non-positive argument";
d = 2;
do {
n = int(1 / x) + 1;
if (n > d)
d = n;
di = 1/d;
print ' [': digits(num(x)): '/': digits(den(x)): ']',, di;
x -= di;
d++;
} while ((num(x) > 1) || (x == di) || (x == 1));
print ' [1/1]',, x;
}

View File

@@ -1,54 +0,0 @@
/*
* varargs - example of a varargs-like use
*
* Copyright (C) 1999 David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: varargs.cal,v 29.1 1999/12/14 09:15:34 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/varargs.cal,v $
*
* Under source code control: 1991/05/22 21:56:34
* File existed as early as: 1991
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* Example program to use 'varargs'.
*
* Program to sum the cubes of all the specified numbers.
*/
define sc()
{
local s, i;
s = 0;
for (i = 1; i <= param(0); i++) {
if (!isnum(param(i))) {
print "parameter",i,"is not a number";
continue;
}
s += param(i)^3;
}
return s;
}
if (config("resource_debug") & 3) {
print "sc(a, b, ...) defined";
}

237
calc.c
View File

@@ -1,35 +1,11 @@
/* /*
* calc - arbitrary precision calculator * Copyright (c) 1997 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 David I. Bell, Landon Curt Noll and Ernest Bowen * Arbitrary precision calculator.
*
* Primary author: David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: calc.c,v 29.1 1999/12/14 09:15:34 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.c,v $
*
* Under source code control: 1990/02/15 01:48:11
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#include <stdio.h> #include <stdio.h>
#include <signal.h> #include <signal.h>
#include <pwd.h> #include <pwd.h>
@@ -70,7 +46,7 @@
* static definitions and functions * static definitions and functions
*/ */
static void intint(int arg); /* interrupt routine */ static void intint(int arg); /* interrupt routine */
static int script_args(int argc,char ***argv,char **shellfile,char **program); static void script_args(int *argc, char ***argv, char **shellfile);
/* /*
@@ -81,7 +57,7 @@ main(int argc, char **argv)
{ {
int want_defhelp = 0; /* 1=> we only want the default help */ int want_defhelp = 0; /* 1=> we only want the default help */
int cmdlen; /* length of the command string */ int cmdlen; /* length of the command string */
char *shellfile = NULL; /* != NULL ==> name of calc shell script */ char *shellfile = NULL; /* =!NULL ==> name of calc shell script */
extern char *optarg; /* option argument */ extern char *optarg; /* option argument */
extern int optind; /* option index */ extern int optind; /* option index */
int c; /* option */ int c; /* option */
@@ -92,12 +68,10 @@ main(int argc, char **argv)
* parse args * parse args
*/ */
program = argv[0]; program = argv[0];
/* catch the case of a leading -S option */ /* catch the case of a leading -s option */
if (argc > 2 && strncmp(argv[1], "-S", 2) == 0) { if (argc > 2 && strncmp(argv[1], "-s", 2) == 0) {
/* convert the calc shell options into command line options */ /* convert the calc shell options into command line options */
argc = script_args(argc, &argv, &shellfile, &program); script_args(&argc, &argv, &shellfile);
/* -S implies -s */
s_flag = TRUE;
} }
/* process command line options */ /* process command line options */
while ((c = getopt(argc, argv, "Cehim:npquvcdD:s")) != -1) { while ((c = getopt(argc, argv, "Cehim:npquvcdD:s")) != -1) {
@@ -170,15 +144,15 @@ main(int argc, char **argv)
* parse the -D optarg * parse the -D optarg
* *
* Could be calc_debug * Could be calc_debug
* or calc_debug:resource_debug * or calc_debug:lib_debug
* or calc_debug:resource_debug:user_debug * or calc_debug:lib_debug:user_debug
*/ */
calc_debug = optarg; calc_debug = optarg;
p = strchr(optarg, ':'); p = strchr(optarg, ':');
if (p != NULL) { if (p != NULL) {
*p = '\0'; *p = '\0';
resource_debug = p+1; lib_debug = p+1;
p = strchr(resource_debug, ':'); p = strchr(lib_debug, ':');
if (p != NULL) { if (p != NULL) {
*p = '\0'; *p = '\0';
user_debug = p+1; user_debug = p+1;
@@ -186,10 +160,14 @@ main(int argc, char **argv)
} }
break; break;
case 's': case 's':
s_flag = TRUE; /*
break; * we are too early in processing to call
case 'S': * libcalc_call_me_last() - nothing to cleanup
/*FALLTHRU*/ */
fprintf(stderr,
"%s: -s may only be used in a calc shell script\n",
program);
exit(1);
default: default:
/* /*
* we are too early in processing to call * we are too early in processing to call
@@ -197,69 +175,47 @@ main(int argc, char **argv)
*/ */
fprintf(stderr, fprintf(stderr,
"usage: %s [-c] [-C] [-d] [-e] [-h] [-i] [-m mode]\n" "usage: %s [-c] [-C] [-d] [-e] [-h] [-i] [-m mode]\n"
"\t[-D calc_debug[:resource_debug:[user_debug]]]\n" "\t[-D calc_debug[:lib_debug:[user_debug]]]\n"
"\t[-n] [-p] [-q] [-s] [-u] [-v] " "\t[-n] [-p] [-q] [-u] [-v] [[--] calc_cmd ...]\n",
"[[--] calc_cmd ...]\n",
program); program);
exit(1); exit(1);
} }
} }
havecommands = (optind < argc);
/*
* If -S was given via a calc shell script, imply -p and -d
* unless -i was also given.
*/
if (shellfile != NULL && !i_flag) {
p_flag = TRUE;
d_flag = TRUE;
}
/* /*
* look at the length of any trailing command args * look at the length of any trailing command args
* *
* We make room for the trailing '\0\n' as well as an extra guard byte. * We make room for the trailing '\0\n' as well as an extra guard byte.
* */
* However, if -S is in effect, we will pretend that we have no for (cmdlen=0, i=optind; i < argc; ++i) {
* command args and allow the argv() builtin access to the strings. /* argument + space separator */
cmdlen += strlen(argv[i]) + 1;
}
if (i > MAXCMD) {
/*
* we are too early in processing to call
* libcalc_call_me_last() - nothing to cleanup
*/
fprintf(stderr,
"%s: command in arg list is too long\n", program);
exit(1);
}
/*
* We will form a command the remaining args separated by spaces.
*/ */
cmdbuf[0] = '\0'; cmdbuf[0] = '\0';
if (s_flag) { if (optind < argc) {
havecommands = FALSE; strcpy(cmdbuf, argv[optind]);
argc_value = argc - optind; cmdlen = strlen(argv[optind]);
argv_value = argv + optind; for (i=optind+1; i < argc; ++i) {
} else { cmdbuf[cmdlen++] = ' ';
havecommands = (optind < argc); strcpy(cmdbuf+cmdlen, argv[i]);
for (cmdlen=0, i=optind; i < argc; ++i) { cmdlen += strlen(argv[i]);
/* argument + space separator */
cmdlen += strlen(argv[i]) + 1;
} }
if (i > MAXCMD) { cmdbuf[cmdlen++] = '\n';
/* cmdbuf[cmdlen] = '\0';
* we are too early in processing to call
* libcalc_call_me_last() - nothing to cleanup
*/
fprintf(stderr,
"%s: command in arg list is too long\n",
program);
exit(1);
}
/*
* Form a command the remaining args separated by spaces.
*/
if (optind < argc) {
strcpy(cmdbuf, argv[optind]);
cmdlen = strlen(argv[optind]);
for (i=optind+1; i < argc; ++i) {
cmdbuf[cmdlen++] = ' ';
strcpy(cmdbuf+cmdlen, argv[i]);
cmdlen += strlen(argv[i]);
}
cmdbuf[cmdlen++] = '\n';
cmdbuf[cmdlen] = '\0';
}
argc_value = 0;
argv_value = argv+argc;
} }
/* /*
@@ -276,7 +232,7 @@ main(int argc, char **argv)
libcalc_call_me_first(); libcalc_call_me_first();
stdin_tty = isatty(0); /* assume stdin is on fd 0 */ stdin_tty = isatty(0); /* assume stdin is on fd 0 */
if (conf->calc_debug & CALCDBG_TTY) if (conf->calc_debug & CALCDBG_TTY)
printf("main: stdin_tty is %d\n", stdin_tty); printf("DEBUG: stdin_tty is %d\n", stdin_tty);
if (want_defhelp) { if (want_defhelp) {
givehelp(DEFAULTCALCHELP); givehelp(DEFAULTCALCHELP);
libcalc_call_me_last(); libcalc_call_me_last();
@@ -289,8 +245,6 @@ main(int argc, char **argv)
if (!havecommands && stdin_tty) { if (!havecommands && stdin_tty) {
if (!d_flag) { if (!d_flag) {
printf("%s (version %s)\n", CALC_TITLE, version()); printf("%s (version %s)\n", CALC_TITLE, version());
printf("Calc is open software. For license details "
"type: help copyright\n");
printf("[%s]\n\n", printf("[%s]\n\n",
"Type \"exit\" to exit, or \"help\" for help."); "Type \"exit\" to exit, or \"help\" for help.");
} }
@@ -334,14 +288,14 @@ main(int argc, char **argv)
if (run_state == RUN_BEGIN) { if (run_state == RUN_BEGIN) {
if (!q_flag && allow_read) { if (!q_flag && allow_read) {
if (conf->calc_debug & CALCDBG_RUNSTATE) if (conf->calc_debug & CALCDBG_RUNSTATE)
printf("main: run_state from %s to %s\n", printf("DEBUG: run_state from %s to %s\n",
run_state_name(run_state), run_state_name(run_state),
run_state_name(RUN_RCFILES)); run_state_name(RUN_RCFILES));
run_state = RUN_RCFILES; run_state = RUN_RCFILES;
runrcfiles(); runrcfiles();
} }
if (conf->calc_debug & CALCDBG_RUNSTATE) if (conf->calc_debug & CALCDBG_RUNSTATE)
printf("main: run_state from %s to %s\n", printf("DEBUG: run_state from %s to %s\n",
run_state_name(run_state), run_state_name(run_state),
run_state_name(RUN_PRE_CMD_ARGS)); run_state_name(RUN_PRE_CMD_ARGS));
run_state = RUN_PRE_CMD_ARGS; run_state = RUN_PRE_CMD_ARGS;
@@ -355,7 +309,7 @@ main(int argc, char **argv)
closeinput(); closeinput();
runrcfiles(); runrcfiles();
if (conf->calc_debug & CALCDBG_RUNSTATE) if (conf->calc_debug & CALCDBG_RUNSTATE)
printf("main: run_state from %s to %s\n", printf("DEBUG: run_state from %s to %s\n",
run_state_name(run_state), run_state_name(run_state),
run_state_name(RUN_PRE_CMD_ARGS)); run_state_name(RUN_PRE_CMD_ARGS));
run_state = RUN_PRE_CMD_ARGS; run_state = RUN_PRE_CMD_ARGS;
@@ -365,13 +319,13 @@ main(int argc, char **argv)
} else { } else {
if ((havecommands && !i_flag) || !stdin_tty) { if ((havecommands && !i_flag) || !stdin_tty) {
if (conf->calc_debug & CALCDBG_RUNSTATE) if (conf->calc_debug & CALCDBG_RUNSTATE)
printf("main: run_state from %s to %s\n", printf("DEBUG: run_state from %s to %s\n",
run_state_name(run_state), run_state_name(run_state),
run_state_name(RUN_EXIT_WITH_ERROR)); run_state_name(RUN_EXIT_WITH_ERROR));
run_state = RUN_EXIT_WITH_ERROR; run_state = RUN_EXIT_WITH_ERROR;
} else { } else {
if (conf->calc_debug & CALCDBG_RUNSTATE) if (conf->calc_debug & CALCDBG_RUNSTATE)
printf("main: run_state from %s to %s\n", printf("DEBUG: run_state from %s to %s\n",
run_state_name(run_state), run_state_name(run_state),
run_state_name(RUN_PRE_CMD_ARGS)); run_state_name(RUN_PRE_CMD_ARGS));
run_state = RUN_PRE_CMD_ARGS; run_state = RUN_PRE_CMD_ARGS;
@@ -379,27 +333,21 @@ main(int argc, char **argv)
} }
} }
/* XXX - if shellfile != NULL process shellfile here */
if (run_state == RUN_PRE_CMD_ARGS) { if (run_state == RUN_PRE_CMD_ARGS) {
if (havecommands) { if (havecommands) {
if (conf->calc_debug & CALCDBG_RUNSTATE) if (conf->calc_debug & CALCDBG_RUNSTATE)
printf("main: run_state from %s to %s\n", printf("DEBUG: run_state from %s to %s\n",
run_state_name(run_state), run_state_name(run_state),
run_state_name(RUN_CMD_ARGS)); run_state_name(RUN_CMD_ARGS));
run_state = RUN_CMD_ARGS; run_state = RUN_CMD_ARGS;
(void) openstring(cmdbuf, (long) strlen(cmdbuf)); (void) openstring(cmdbuf, (long) strlen(cmdbuf));
getcommands(FALSE); getcommands(FALSE);
closeinput(); closeinput();
} else if (shellfile != NULL) {
/* XXX - shellfile stuff needs it own run_state name */
if (conf->calc_debug & CALCDBG_RUNSTATE)
printf("main: run_state from %s to %s\n",
run_state_name(run_state),
run_state_name(RUN_CMD_ARGS));
run_state = RUN_CMD_ARGS;
getshellfile(shellfile);
} }
if (conf->calc_debug & CALCDBG_RUNSTATE) if (conf->calc_debug & CALCDBG_RUNSTATE)
printf("main: run_state from %s to %s\n", printf("DEBUG: run_state from %s to %s\n",
run_state_name(run_state), run_state_name(run_state),
run_state_name(RUN_PRE_TOP_LEVEL)); run_state_name(RUN_PRE_TOP_LEVEL));
run_state = RUN_PRE_TOP_LEVEL; run_state = RUN_PRE_TOP_LEVEL;
@@ -411,7 +359,7 @@ main(int argc, char **argv)
getcommands(FALSE); getcommands(FALSE);
if (inputlevel() == 0) if (inputlevel() == 0)
if (conf->calc_debug & CALCDBG_RUNSTATE) if (conf->calc_debug & CALCDBG_RUNSTATE)
printf("main: run_state from %s to %s\n", printf("DEBUG: run_state from %s to %s\n",
run_state_name(run_state), run_state_name(run_state),
run_state_name(RUN_PRE_TOP_LEVEL)); run_state_name(RUN_PRE_TOP_LEVEL));
run_state = RUN_PRE_TOP_LEVEL; run_state = RUN_PRE_TOP_LEVEL;
@@ -420,13 +368,13 @@ main(int argc, char **argv)
closeinput(); closeinput();
if (!stdin_tty || !i_flag || p_flag) { if (!stdin_tty || !i_flag || p_flag) {
if (conf->calc_debug & CALCDBG_RUNSTATE) if (conf->calc_debug & CALCDBG_RUNSTATE)
printf("main: run_state from %s to %s\n", printf("DEBUG: run_state from %s to %s\n",
run_state_name(run_state), run_state_name(run_state),
run_state_name(RUN_EXIT_WITH_ERROR)); run_state_name(RUN_EXIT_WITH_ERROR));
run_state = RUN_EXIT_WITH_ERROR; run_state = RUN_EXIT_WITH_ERROR;
} else { } else {
if (conf->calc_debug & CALCDBG_RUNSTATE) if (conf->calc_debug & CALCDBG_RUNSTATE)
printf("main: run_state from %s to %s\n", printf("DEBUG: run_state from %s to %s\n",
run_state_name(run_state), run_state_name(run_state),
run_state_name(RUN_PRE_TOP_LEVEL)); run_state_name(RUN_PRE_TOP_LEVEL));
run_state = RUN_PRE_TOP_LEVEL; run_state = RUN_PRE_TOP_LEVEL;
@@ -435,10 +383,9 @@ main(int argc, char **argv)
} }
if (run_state == RUN_PRE_TOP_LEVEL) { if (run_state == RUN_PRE_TOP_LEVEL) {
if (stdin_tty && if (stdin_tty && ((havecommands && !i_flag) || p_flag)) {
(((havecommands || shellfile) && !i_flag) || p_flag)) {
if (conf->calc_debug & CALCDBG_RUNSTATE) if (conf->calc_debug & CALCDBG_RUNSTATE)
printf("main: run_state from %s to %s\n", printf("DEBUG: run_state from %s to %s\n",
run_state_name(run_state), run_state_name(run_state),
run_state_name(RUN_EXIT)); run_state_name(RUN_EXIT));
run_state = RUN_EXIT; run_state = RUN_EXIT;
@@ -450,7 +397,7 @@ main(int argc, char **argv)
openterminal(); openterminal();
} }
if (conf->calc_debug & CALCDBG_RUNSTATE) if (conf->calc_debug & CALCDBG_RUNSTATE)
printf("main: run_state from %s to %s\n", printf("DEBUG: run_state from %s to %s\n",
run_state_name(run_state), run_state_name(run_state),
run_state_name(RUN_TOP_LEVEL)); run_state_name(RUN_TOP_LEVEL));
run_state = RUN_TOP_LEVEL; run_state = RUN_TOP_LEVEL;
@@ -469,7 +416,7 @@ main(int argc, char **argv)
getcommands(TRUE); getcommands(TRUE);
} else { } else {
if (conf->calc_debug & CALCDBG_RUNSTATE) if (conf->calc_debug & CALCDBG_RUNSTATE)
printf("main: run_state from %s to %s\n", printf("DEBUG: run_state from %s to %s\n",
run_state_name(run_state), run_state_name(run_state),
run_state_name(RUN_EXIT_WITH_ERROR)); run_state_name(RUN_EXIT_WITH_ERROR));
run_state = RUN_EXIT_WITH_ERROR; run_state = RUN_EXIT_WITH_ERROR;
@@ -545,9 +492,9 @@ math_error(char *fmt, ...)
* script_args - concert shell script options into command line form * script_args - concert shell script options into command line form
* *
* When a calc shell script is executed, the args are presented to calc * When a calc shell script is executed, the args are presented to calc
* in a different form. Consider the a calc shell script called /tmp/calcit: * in a different form. Consider the a calc shell script called /tmp/calcit:
* *
* #!/usr/local/bin/calc -S -q -p * #!/usr/local/bin/calc -s -q -p
* a=eval(prompt("Enter a: ")); * a=eval(prompt("Enter a: "));
* b=eval(prompt("Enter b: ")); * b=eval(prompt("Enter b: "));
* print a+b; * print a+b;
@@ -560,20 +507,20 @@ math_error(char *fmt, ...)
* *
* argc: 5 * argc: 5
* argv[0]: "/usr/local/bin/calc" * argv[0]: "/usr/local/bin/calc"
* argv[1]: "-S -q -p -e" * argv[1]: "-s -q -p -e"
* argv[2]: "/tmp/calcit" * argv[2]: "/tmp/calcit"
* argv[3]: "-D" * argv[3]: "-D"
* argv[4]: "31" * argv[4]: "31"
* argv[5]: NULL * argv[5]: NULL
* *
* NOTE: The user MUST put -S as the first characters on the calc shell * NOTE: The user MUST put -s as the first characters on the calc shell
* script #! line, right after the calc binary path. * script #! line, right after the calc binary path.
* *
* NOTE: The arg supplied on the #! calc shell script line are returned * NOTE: The arg supplied on the #! calc shell script line are returned
* as a single string. All tabs are converted into spaces. * as a single string. All tabs are converted into spaces.
* *
* We must remember the calc script filename, break apart the #! args * We must remember the calc script filename, break apart the #! args
* and remove the -S argument. In the above case we would return: * and remove the -s argument. In the above case we would return:
* *
* argc: 6 * argc: 6
* argv[0]: "/usr/local/bin/calc" * argv[0]: "/usr/local/bin/calc"
@@ -585,12 +532,12 @@ math_error(char *fmt, ...)
* argv[6]: NULL * argv[6]: NULL
* *
* shellfile: "/tmp/calcit" * shellfile: "/tmp/calcit"
* s_flag: TRUE
*/ */
static int static void
script_args(int argc, char ***argv_p, char **shellfile_p, char **program_p) script_args(int *argc_p, char ***argv_p, char **shellfile_p)
{ {
char **argv; /* new argv to return */ int argc; /* argc to return */
char **argv; /* argv to return */
char *shellfile; /* shell file pathname to return */ char *shellfile; /* shell file pathname to return */
int delta; /* the change needed in argc */ int delta; /* the change needed in argc */
int i; int i;
@@ -599,10 +546,11 @@ script_args(int argc, char ***argv_p, char **shellfile_p, char **program_p)
char *q; char *q;
/* /*
* must have at least 3 args and the 2nd must start with -S * must have at least 3 args and the 2nd must start with -s
*/ */
argc = *argc_p;
argv = *argv_p; argv = *argv_p;
if (argc < 3 || strncmp(argv[1], "-S", 2) != 0) { if (argc < 3 || strncmp(argv[1], "-s", 2) != 0) {
/* /*
* we are too early in processing to call * we are too early in processing to call
* libcalc_call_me_last() - nothing to cleanup * libcalc_call_me_last() - nothing to cleanup
@@ -614,18 +562,18 @@ script_args(int argc, char ***argv_p, char **shellfile_p, char **program_p)
shellfile = argv[2]; shellfile = argv[2];
/* /*
* count the additional args beyond the -S * count the additional args beyond the -s
*/ */
if (argv[1][2] == ' ') { if (argv[1][2] == ' ') {
/* /*
* process args beyond -S on the #!/usr/local/bin line * process args beyond -s on the #!/usr/local/bin line
*/ */
p = argv[1]+3 + strspn(argv[1]+3," "); p = argv[1]+3 + strspn(argv[1]+3," ");
q = p; q = p;
if (q == '\0') { if (q == '\0') {
/* only trailing spaces after -S, ignore them */ /* only trailing spaces after -s, ignore them */
for (i = 3; i <= argc; ++i) { for (i = 3; i <= argc; ++i) {
argv[i-2] = argv[i]; argv[i-2] = argv[i];
} }
@@ -633,7 +581,7 @@ script_args(int argc, char ***argv_p, char **shellfile_p, char **program_p)
} else { } else {
/* count the space separated strings that follow -S */ /* count the space separated strings that follow -s */
for (delta = -1; p != NULL && *p; for (delta = -1; p != NULL && *p;
p = strchr(p+1,' '), ++delta) { p = strchr(p+1,' '), ++delta) {
/* skip multiple spaces in a row */ /* skip multiple spaces in a row */
@@ -649,7 +597,7 @@ script_args(int argc, char ***argv_p, char **shellfile_p, char **program_p)
*/ */
fprintf(stderr, fprintf(stderr,
"%s: failed to malloc %d pointers\n", "%s: failed to malloc %d pointers\n",
shellfile, argc+delta); program, argc+delta);
exit(1); exit(1);
} }
@@ -665,7 +613,7 @@ script_args(int argc, char ***argv_p, char **shellfile_p, char **program_p)
*/ */
fprintf(stderr, fprintf(stderr,
"%s: failed to duplicate 1st arg\n", "%s: failed to duplicate 1st arg\n",
shellfile); program);
exit(1); exit(1);
} }
@@ -686,7 +634,7 @@ script_args(int argc, char ***argv_p, char **shellfile_p, char **program_p)
} }
/* /*
* catch the case of #!/usr/local/bin -Stuff_not_extra_args * catch the case of #!/usr/local/bin -stuff_not_extra_args
*/ */
} else if (argv[1][2] != '\0') { } else if (argv[1][2] != '\0') {
@@ -695,13 +643,13 @@ script_args(int argc, char ***argv_p, char **shellfile_p, char **program_p)
* libcalc_call_me_last() - nothing to cleanup * libcalc_call_me_last() - nothing to cleanup
*/ */
fprintf(stderr, fprintf(stderr,
"%s: malformed #! line, -S must be " "%s: malformed #! line, -s must be "
"followed by space or newline\n", "followed by space or newline\n",
shellfile); program);
exit(1); exit(1);
/* /*
* Only -S was given in the #!/usr/local/bin line, so we just * Only -s was given in the #!/usr/local/bin line, so we just
* toss the 2nd and 3rd args * toss the 2nd and 3rd args
*/ */
} else { } else {
@@ -712,11 +660,10 @@ script_args(int argc, char ***argv_p, char **shellfile_p, char **program_p)
} }
/* /*
* return and set the argc, argv, shellfile_p and s_flag values * return and set the argc, argv, shellfile_p values
*/ */
*argc_p = argc;
*argv_p = argv; *argv_p = argv;
*shellfile_p = shellfile; *shellfile_p = shellfile;
*program_p = shellfile; return;
s_flag = TRUE;
return argc;
} }

42
calc.h
View File

@@ -1,30 +1,9 @@
/* /*
* calc - definitions for calculator program * Copyright (c) 1997 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 David I. Bell * Definitions for calculator program.
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.2 $
* @(#) $Id: calc.h,v 29.2 1999/12/14 19:37:46 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.h,v $
*
* Under source code control: 1990/02/15 01:48:31
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
@@ -163,11 +142,8 @@ extern void getcommands(BOOL toplevel);
extern void givehelp(char *type); extern void givehelp(char *type);
extern void libcalc_call_me_first(void); extern void libcalc_call_me_first(void);
extern void libcalc_call_me_last(void); extern void libcalc_call_me_last(void);
extern BOOL calc_tty(int fd);
extern BOOL orig_tty(int fd);
extern void showerrors(void); extern void showerrors(void);
extern char *calc_strdup(CONST char *); extern char *calc_strdup(CONST char *);
extern void getshellfile(char *shellfile);
/* /*
* Initialization * Initialization
@@ -188,21 +164,16 @@ extern jmp_buf jmpbuf; /* for errors */
extern int p_flag; /* TRUE => pipe mode */ extern int p_flag; /* TRUE => pipe mode */
extern int q_flag; /* TRUE => don't execute rc files */ extern int q_flag; /* TRUE => don't execute rc files */
extern int u_flag; /* TRUE => unbuffer stdin and stdout */ extern int u_flag; /* TRUE => unbuffer stdin and stdout */
extern int d_flag; /* TRUE => disable heading, resource_debug */ extern int d_flag; /* TRUE => disable heading, lib_debug == 0 */
extern int c_flag; /* TRUE => continue after error if permitted */ extern int c_flag; /* TRUE => continue after error if permitted */
extern int i_flag; /* TRUE => try to go interactive after error */ extern int i_flag; /* TRUE => try to go interactive after error */
extern int s_flag; /* TRUE => keep args as strings for argv() */
extern int stoponerror; /* >0 => stop, <0 => continue, ==0 => use -c */ extern int stoponerror; /* >0 => stop, <0 => continue, ==0 => use -c */
extern BOOL abort_now; /* TRUE => try to go interactive */ extern BOOL abort_now; /* TRUE => try to go interactive */
extern int argc_value; /* count of argv[] strings for argv() builtin */
extern char **argv_value; /* argv[] strings for argv() builtin */
extern char *pager; /* $PAGER or default */ extern char *pager; /* $PAGER or default */
extern int stdin_tty; /* TRUE if stdin is a tty */ extern int stdin_tty; /* TRUE if stdin is a tty */
extern int havecommands; /* TRUE if have cmd args) */ extern int havecommands; /* TRUE if have cmd args) */
extern char *program; /* our name */ extern char *program; /* our name */
extern char *base_name; /* basename of our name */
extern char cmdbuf[]; /* command line expression */ extern char cmdbuf[]; /* command line expression */
extern int abortlevel; /* current level of aborts */ extern int abortlevel; /* current level of aborts */
@@ -250,8 +221,7 @@ extern int calc_major_ver;
extern int calc_minor_ver; extern int calc_minor_ver;
extern int calc_major_patch; extern int calc_major_patch;
extern char *calc_minor_patch; extern char *calc_minor_patch;
extern char *Copyright; extern char *version(void); /* return version string */
extern char *version(void);
#endif /* !__CALC_H__ */ #endif /* !__CALC_H__ */

379
calc.man
View File

@@ -1,34 +1,13 @@
.\" .\"
.\" Copyright (C) 1999 Landon Curt Noll .\" Copyright (c) 1993 David I. Bell and Landon Curt Noll
.\" .\" Original man page dated 15nov93
.\" Calc is open software; you can redistribute it and/or modify it under .\" Copyright (c) 1999 David I. Bell and Landon Curt Noll
.\" the terms of the version 2.1 of the GNU Lesser General Public License .\" Permission is granted to use, distribute, or modify this source,
.\" as published by the Free Software Foundation. .\" provided that this copyright notice remains intact.
.\"
.\" Calc is distributed in the hope that it will be useful, but WITHOUT
.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
.\" or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
.\" Public License for more details.
.\"
.\" A copy of version 2.1 of the GNU Lesser General Public License is
.\" distributed with calc under the filename COPYING-LGPL. You should have
.\" received a copy with calc; if not, write to Free Software Foundation, Inc.
.\" 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
.\"
.\" @(#) $Revision: 29.1 $
.\" @(#) $Id: calc.man,v 29.1 1999/12/14 09:15:35 chongo Exp $
.\" @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.man,v $
.\"
.\" Under source code control: 1991/07/23 05:48:26
.\" File existed as early as: 1991
.\"
.\" chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
.\" Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
.\" .\"
.\" calculator by David I. Bell .\" calculator by David I. Bell
.\" man page by Landon Noll .\" man page by Landon Noll
.\" .TH calc 1 "^..^" "15Oct1999"
.TH calc 1 "^..^" "1999-11-30"
.SH NAME .SH NAME
calc \- arbitrary precision calculator calc \- arbitrary precision calculator
.SH SYNOPSIS .SH SYNOPSIS
@@ -36,7 +15,7 @@ calc \- arbitrary precision calculator
.RB [ \-c ] .RB [ \-c ]
.RB [ \-C ] .RB [ \-C ]
.RB [ \-d ] .RB [ \-d ]
.RB [ -D\ \&calc_debug[:resource_debug:[user_debug]] ] .RB [ -D\ \&calc_debug[:lib_debug:[user_debug]] ]
.br .br
.in +5n .in +5n
.RB [ \-e ] .RB [ \-e ]
@@ -46,18 +25,15 @@ calc \- arbitrary precision calculator
.RB [ \-n ] .RB [ \-n ]
.RB [ \-p ] .RB [ \-p ]
.RB [ \-q ] .RB [ \-q ]
.RB [ \-s ]
.RB [ \-u ] .RB [ \-u ]
.RB [ \-v ] .RB [ \-v ]
.br .br
.RB [ calc_cmd\ \&.\|.\|. ] .RB [ calc_cmd\ \&.\|.\|. ]
.in -5n .in -5n
.sp
\fI#!${BINDIR}/calc\fP\ \fB\-S\fP\ [\-other_flags\ \&...]
.SH DESCRIPTION .SH DESCRIPTION
\& \&
.br .br
CALC OPTIONS CALC COMMAND LINE
.PP .PP
.TP .TP
@@ -89,17 +65,16 @@ cause
to try to process each line being read to try to process each line being read
despite the errors that it encounters. despite the errors that it encounters.
.sp 1 .sp 1
By default, calc startup resource files ($CALCRC) are silently By default, calc startup scripts ($CALCRC) are silently
ignored if not found. ignored if not found.
This flag will report missing This flag will report missing
startup resource files unless startup scripts unless
.B \-d .B \-d
is also given. is also given.
.TP .TP
.B \-C .B \-C
Permit the execution of custom builtin functions. Permit the execution of custom builtin functions. Without
Without
this flag, calling the custom() builtin function will this flag, calling the custom() builtin function will
simply generate an error. simply generate an error.
.sp 1 .sp 1
@@ -112,8 +87,8 @@ functions are disabled by default for this reason.
.TP .TP
.B \-d .B \-d
Disable the printing of the opening title. The printing Disable the printing of the opening title. The printing
of resource file debug and informational messages is also disabled of library debug and informational messages is also disabled
as if \fBconfig("resource_debug", 0)\fP had been executed. as if \fBconfig("lib_debug", 0)\fP had been executed.
.sp 1 .sp 1
For example: For example:
.sp 1 .sp 1
@@ -147,12 +122,12 @@ It's nearly ten past six.
.in -5n .in -5n
.sp 1 .sp 1
This flag disables the reporting of missing calc This flag disables the reporting of missing calc
startup resource files ($CALCRC). startup scripts ($CALCRC).
.TP .TP
.BR -D " calc_debug[:resource_debug:[user_debug]]" .BR -D " calc_debug[:lib_debug:[user_debug]]"
Force the initial value of config("calc_debug"), Force the initial value of config("calc_debug"),
config("resource_debug") and config("user_debug"). config("lib_debug") and config("user_debug").
.sp 1 .sp 1
The : separated strings are interpreted as signed 32 bit values. The : separated strings are interpreted as signed 32 bit values.
After an optional leading sign a leading zero indicates octal After an optional leading sign a leading zero indicates octal
@@ -162,9 +137,9 @@ conversion. Otherwise, decimal conversion is assumed.
By default, By default,
.I calc_debug .I calc_debug
is 0, is 0,
.I resource_debug .I lib_debug
is 3 and is 3 and
.I user_debug .I lib_debug
is 0. is 0.
.sp 1 .sp 1
For more information use the following For more information use the following
@@ -294,7 +269,7 @@ unknown mode.
will attempt to read or write them if directed. will attempt to read or write them if directed.
.sp 1 .sp 1
If the mode disables opening of files for reading, then If the mode disables opening of files for reading, then
the startup resource files are disabled as of the startup library scripts are disabled as of
.B \-q .B \-q
was given. was given.
The reading of key bindings is also disabled The reading of key bindings is also disabled
@@ -330,15 +305,7 @@ flag overrides
.TP .TP
.B \-q .B \-q
Disable the use of the $CALCRC startup resource files. Disable the use of the $CALCRC startup scripts.
.TP
.B \-s
By default, all
.I calc_cmd
args are evaluated and executed.
This flag will disable their evaluation and instead make
them available as strings for the argv() builtin function.
.TP .TP
.B \-u .B \-u
@@ -350,23 +317,15 @@ Print the
.B calc .B calc
version number and exit. version number and exit.
.PP .PP
\&
.br
CALC COMMAND LINE
.PP
Without Without
.IR calc_cmd , .IR calc_cmd ,
.B calc .B calc
operates interactively. operates interactively.
If one or more If one or more
.I calc_cmd .I calc_cmd
are given on the command line and are given on the command line,
.B \-s
is NOT given, then
.B calc .B calc
will evaluate and execute them and then exit. will execute them and exit.
.sp
If If
.B \-i .B \-i
is given, is given,
@@ -375,28 +334,19 @@ will attempt to become interactive
even of one or more even of one or more
.I calc_cmd .I calc_cmd
are given on the command line. are given on the command line.
.sp
If
.B \-s
is given,
.B calc
will not evaluate any
.I calc_cmd
arguments but instead make them available
as strings to the argv() builtin function.
.PP .PP
Normally on startup, Normally on startup,
.B calc .B calc
attempts to execute a collection of attempts to execute a collection of
startup resource files. library scripts.
The environment variable $CALCRC (if non-existent The environment variable $CALCRC (if non-existent
then a compiled in value) contains a : separated list of startup then a compiled in value) contains a : separated list of startup
resource files. library scripts.
No error conditions are produced if these startup No error conditions are produced if these startup
resource files are not found. library scripts are not found.
.PP .PP
If the mode disables opening of files for reading, then the startup If the mode disables opening of files for reading, then the startup
resource files are disabled as of library scripts are disabled as of
.B \-q .B \-q
was given and $CALCRC as well was given and $CALCRC as well
as the default compiled in value are ignored. as the default compiled in value are ignored.
@@ -442,129 +392,6 @@ help config
.in -5n .in -5n
.sp 1 .sp 1
.PP .PP
\&
.br
SHELL SCRIPT MODE
.PP
If an executable file begins with:
.sp 1
.in +5n
.nf
\fI#!${BINDIR}/calc\fP\ \fB\-S\fP\ [\-other_flags\ \&...]
.fi
.in -5n
.sp 1
the rest of the file will be processed in
.BR "shell script mode" .
Note that
.B \-S
(UPPER CASE
.BR \-S )
must be the first \-flag on the ``#!'' line.
Any other optional ``\-other_flags'' must come after
the
.BR \-S .
.sp 1
In
.B "shell script mode"
the contents of the file
are evaluated and executed as if they were processed
by the
.B read
command.
Any optional ``\-other_flags'' will by parsed first
followed by any arguments given shell script itself.
.sp 1
In
.BR "shell script mode" ,
.B \-s
(lower case
.BR \-s )
is always assumed.
In addition,
.B \-d
and
.B \-p
are automatically set if
.B \-i
is not given.
.sp 1
For example, if
the file
.BR /tmp/mersenne :
.sp 1
.in +5n
.nf
\fI#!${BINDIR}/calc\fP\ \fB\-S\fP\ \&\fB\-q\fP
#
# mersenne - an example of a calc \fBshell script file\fP
/* parse args */
if (argv() != 1) {
fprintf(files(2), "usage: %s exp\\n", config("program"));
abort "must give one exponent arg";
}
/* print the mersenne number */
print "2^": argv(0) : "-1 =", 2^eval(argv(0))-1;
.fi
.in -5n
.sp 1
is made an executable file by:
.sp 1
.in +5n
.nf
chmod +x /tmp/mersenne
.fi
.in -5n
.sp 1
then the command line:
.sp 1
.in +5n
.nf
/tmp/mersenne 127
.fi
.in -5n
.sp 1
will print:
.sp 1
.in +5n
.nf
2^127-1 = 170141183460469231731687303715884105727
.fi
.in -5n
.sp 1
Note that because
.B \-s
is assumed in
.B "shell script mode"
and non-dashed args are made available as
strings via the
.BR argv ()
builtin function.
Therefore:
.sp 1
.in +5n
.nf
2^eval(argv(0))-1
.fi
.in -5n
.sp 1
will print the decimal value of 2^n-1
but
.sp 1
.in +5n
.nf
2^argv(0)-1
.fi
.in -5n
.sp 1
will not.
.PP
\&
.br
DATA TYPES DATA TYPES
.PP .PP
Fundamental builtin data types include integers, real numbers, Fundamental builtin data types include integers, real numbers,
@@ -590,9 +417,6 @@ help obj
show objfuncs show objfuncs
.in -1.0i .in -1.0i
.PP .PP
\&
.br
VARIABLES VARIABLES
.PP .PP
Variables in \fIcalc\fP are typeless. Variables in \fIcalc\fP are typeless.
@@ -618,9 +442,6 @@ help list
show globals show globals
.in -1.0i .in -1.0i
.PP .PP
\&
.br
INPUT/OUTPUT INPUT/OUTPUT
.PP .PP
A leading ``0x'' implies a hexadecimal value, A leading ``0x'' implies a hexadecimal value,
@@ -653,9 +474,6 @@ command:
help file help file
.in -1.0i .in -1.0i
.PP .PP
\&
.br
CALC LANGUAGE CALC LANGUAGE
.PP .PP
The \fIcalc\fP language is a C-like language. The \fIcalc\fP language is a C-like language.
@@ -666,7 +484,7 @@ These commands are very similar to their counterparts in C.
The language also include a number of commands particular The language also include a number of commands particular
to \fIcalc\fP itself. to \fIcalc\fP itself.
These include commands such as function definition, help, These include commands such as function definition, help,
reading in resource files, dump files to a file, error notification, reading in library scripts, dump files to a file, error notification,
configuration control and status. configuration control and status.
.PP .PP
For more information use the following For more information use the following
@@ -689,54 +507,29 @@ help config
\& \&
.br .br
.PD 0 .PD 0
.TP 5 .TP 20
${BINDIR}/calc
calc binary
.sp 1
.TP 5
${SCRIPTDIR}/*
calc shell scripts
.sp 1
.TP 5
${LIBDIR}/*.cal ${LIBDIR}/*.cal
calc standard resource files library scripts shipped with
.sp 1 .B calc
.TP 5 .br
.sp
.TP 20
${LIBDIR}/help/* ${LIBDIR}/help/*
help files help files
.sp 1 .br
.TP 5 .sp
.TP 20
${LIBDIR}/bindings ${LIBDIR}/bindings
non-GNU-readline command line editor bindings command line editor bindings
.sp 1 .sp
.TP 5
${INCDIRCALC}/*.h
include files for C interface use
.sp 1
.TP 5
${LIBDIR}/libcalc.a
calc binary link library
.sp 1
.TP 5
${LIBDIR}/libcustcalc.a
custom binary link library
.sp 1
.TP 5
${CUSTOMLIBDIR}/*.cal
custom resource files
.sp 1
.TP 5
${CUSTOMHELPDIR}/*
custom help files
.sp 1
.SH ENVIRONMENT .SH ENVIRONMENT
\& \&
.br .br
.PD 0 .PD 0
.TP 5 .TP 5
CALCPATH CALCPATH
A :-separated list of directories used to search for calc A :-separated list of directories used to search for
resource filenames that do not begin with /, ./ or ~. scripts filenames that do not begin with /, ./ or ~.
.br .br
.sp .sp
Default value: ${CALCPATH} Default value: ${CALCPATH}
@@ -773,13 +566,12 @@ In that case, the standard readline mechanisms (see readline(3)) are used.
.SH CREDIT .SH CREDIT
\& \&
.br .br
The main chunk of The majority of
.B calc .B calc
was written by David I. Bell. was written by David I. Bell.
.sp .sp
The .B Calc
.B calc The Calc primary mirror, calc mailing list and calc bug report
primary mirror, calc mailing list and calc bug report
processing is performed by Landon Curt Noll. processing is performed by Landon Curt Noll.
.sp .sp
Landon Curt Noll maintains the master reference source, performs Landon Curt Noll maintains the master reference source, performs
@@ -798,83 +590,28 @@ Ernest also supplied the original text for many of the help files.
.sp .sp
Portions of this program are derived from an earlier set of Portions of this program are derived from an earlier set of
public domain arbitrarily precision routines which was posted public domain arbitrarily precision routines which was posted
to the net around 1984. to the net around 1984. By now, there is almost no recognizable
By now, there is almost no recognizable
code left from that original source. code left from that original source.
.sp .sp
.SH "COPYING / CALC GNU LESSER GENERAL PUBLIC LICENSE" Most of this source and binary has one of the following copyrights:
\&
.sp
Calc is open software, and is
covered under version 2.1 of the GNU Lesser General Public License.
You are
welcome to change it and/or distribute copies of it under certain
conditions.
The calc commands:
.sp .sp
.in +0.5i .in +0.5i
.nf Copyright (c) 19xx David I. Bell
help copyright
help copying
help copying-lgpl
.fi
.in -0.5i
.sp
should display the contents of the COPYING and COPYING-LGPL files.
Those files contain information about the calc's GNU Lesser General
Public License, and in particular the conditions under which you
are allowed to change it and/or distribute copies of it.
.sp
You should have received a copy of the version 2.1 of the GNU Lesser General
Public License.
If you do not have these files, write to:
.sp
.in +0.5i
.nf
Free Software Foundation, Inc.
59 Temple Place
Suite 330
Boston, MA 02111-1307
USA
.fi
.in -0.5i
.sp
Calc is copyrighted in several different ways.
These ways include:
.sp
.in +0.5i
.nf
Copyright (C) year David I. Bell
Copyright (C) year David I. Bell and Landon Curt Noll
Copyright (C) year David I. Bell and Ernest Bowen
Copyright (C) year David I. Bell, Landon Curt Noll and Ernest Bowen
Copyright (C) year Landon Curt Noll
Copyright (C) year Ernest Bowen and Landon Curt Noll
Copyright (C) year Ernest Bowen
.fi
.in -0.5i
.sp
This man page is:
.sp
.in +0.5i
.nf
Copyright (C) 1999 Landon Curt Noll
.fi
.in -0.5i
.sp
and is covered under version 2.1 GNU Lesser General
Public License.
.sp
.SH "BUG REPORTS / BUG FIXES / ENHANCEMENTS"
\&
.br .br
Copyright (c) 19xx David I. Bell and Landon Curt Noll
.br
Copyright (c) 19xx Landon Curt Noll
.br
Copyright (c) 19xx Ernest Bowen and Landon Curt Noll
.in -0.5i
.sp
Permission is granted to use, distribute, or modify this source,
provided that this copyright notice remains intact.
.sp .sp
Send comments, suggestions, bug fixes, enhancements Send comments, suggestions, bug fixes, enhancements
and interesting and interesting
.B calc .B calc
resource files, scripts that you would like you see included
.B calc
shell scripts that you would like you see included
in future distributions to: in future distributions to:
.sp .sp
.in +0.5i .in +0.5i
@@ -886,7 +623,6 @@ calc-tester at postofc dot corp dot sgi dot com
.in -0.5i .in -0.5i
.sp .sp
Bug reports are sent to: Bug reports are sent to:
.sp
.in +0.5i .in +0.5i
.nf .nf
calc-bugs at postofc dot corp dot sgi dot com calc-bugs at postofc dot corp dot sgi dot com
@@ -909,9 +645,6 @@ help bugs
.sp .sp
for more information about bug reporting. for more information about bug reporting.
.sp .sp
.SH "CALC WEB SITE / MAILING LIST"
\&
.br
Landon Noll maintains the the Landon Noll maintains the the
.B calc .B calc
web site is located at: web site is located at:

View File

@@ -1,31 +1,3 @@
#
# calcerr - error codes and messages
#
# Copyright (C) 1999 Ernest Bowen
#
# Calc is open software; you can redistribute it and/or modify it under
# the terms of the version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
#
# Calc is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
# Public License for more details.
#
# A copy of version 2.1 of the GNU Lesser General Public License is
# distributed with calc under the filename COPYING-LGPL. You should have
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.1 $
# @(#) $Id: calcerr.tbl,v 29.1 1999/12/14 09:15:35 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr.tbl,v $
#
# Under source code control: 1996/05/23 17:38:44
# File existed as early as: 1996
#
# Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
# This file is used to build calcerr.h include file. # This file is used to build calcerr.h include file.
# #
# Lines should be of the form: # Lines should be of the form:
@@ -366,12 +338,3 @@ E_BACKSLASH Bad argument type for unary backslash
E_SETMINUS Bad argument type for setminus E_SETMINUS Bad argument type for setminus
E_INDICES1 Bad first argument type for indices E_INDICES1 Bad first argument type for indices
E_INDICES2 Bad second argument for indices E_INDICES2 Bad second argument for indices
E_EXP3 Too-large re(argument) for exp
E_SINH3 Too-large re(argument) for sinh
E_COSH3 Too-large re(argument) for cosh
E_SIN3 Too-large im(argument) for sin
E_COS3 Too-large im(argument) for cos
E_GD3 Infinite or too-large result for gd
E_AGD3 Infinite or too-large result for agd
E_POWER4 Too-large value for power
E_ROOT4 Too-large value for root

View File

@@ -1,33 +1,3 @@
#!/usr/bin/sed
#
# calcerr_c - help produce calcerr.c from calcerr.tbl
#
# Copyright (C) 1999 Landon Curt Noll
#
# Calc is open software; you can redistribute it and/or modify it under
# the terms of the version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
#
# Calc is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
# Public License for more details.
#
# A copy of version 2.1 of the GNU Lesser General Public License is
# distributed with calc under the filename COPYING-LGPL. You should have
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.1 $
# @(#) $Id: calcerr_c.awk,v 29.1 1999/12/14 09:15:35 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr_c.awk,v $
#
# Under source code control: 1996/05/24 03:15:35
# File existed as early as: 1996
#
# chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
# Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
#
BEGIN { BEGIN {
printf("#include <stdio.h>\n"); printf("#include <stdio.h>\n");
printf("#include \"calcerr.h\"\n\n"); printf("#include \"calcerr.h\"\n\n");

View File

@@ -1,33 +1,3 @@
#!/usr/bin/sed
#
# calcerr_c - help produce calcerr.c from calcerr.tbl
#
# Copyright (C) 1999 Landon Curt Noll
#
# Calc is open software; you can redistribute it and/or modify it under
# the terms of the version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
#
# Calc is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
# Public License for more details.
#
# A copy of version 2.1 of the GNU Lesser General Public License is
# distributed with calc under the filename COPYING-LGPL. You should have
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.1 $
# @(#) $Id: calcerr_c.sed,v 29.1 1999/12/14 09:15:35 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr_c.sed,v $
#
# Under source code control: 1996/05/24 03:15:35
# File existed as early as: 1996
#
# chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
# Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
#
s/#.*// s/#.*//
s/[ ][ ]*$// s/[ ][ ]*$//
/^$/d /^$/d

View File

@@ -1,33 +1,3 @@
#!/usr/bin/awk
#
# calcerr_h - help produce calcerr.h from calcerr.tbl
#
# Copyright (C) 1999 Landon Curt Noll
#
# Calc is open software; you can redistribute it and/or modify it under
# the terms of the version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
#
# Calc is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
# Public License for more details.
#
# A copy of version 2.1 of the GNU Lesser General Public License is
# distributed with calc under the filename COPYING-LGPL. You should have
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.1 $
# @(#) $Id: calcerr_h.awk,v 29.1 1999/12/14 09:15:35 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr_h.awk,v $
#
# Under source code control: 1996/05/23 17:38:44
# File existed as early as: 1996
#
# chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
# Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
#
BEGIN { BEGIN {
ebase = 10000; ebase = 10000;
printf("#define E__BASE %d\t/* calc errors start above here */\n\n", ebase); printf("#define E__BASE %d\t/* calc errors start above here */\n\n", ebase);

View File

@@ -1,33 +1,3 @@
#!/usr/bin/sed
#
# calcerr_h - help produce calcerr.h from calcerr.tbl
#
# Copyright (C) 1999 Landon Curt Noll
#
# Calc is open software; you can redistribute it and/or modify it under
# the terms of the version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
#
# Calc is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
# Public License for more details.
#
# A copy of version 2.1 of the GNU Lesser General Public License is
# distributed with calc under the filename COPYING-LGPL. You should have
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.1 $
# @(#) $Id: calcerr_h.sed,v 29.1 1999/12/14 09:15:35 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/RCS/calcerr_h.sed,v $
#
# Under source code control: 1996/05/23 17:38:44
# File existed as early as: 1996
#
# chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
# Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
#
s/#.*// s/#.*//
s/[ ][ ]*$// s/[ ][ ]*$//
/^$/d /^$/d

150
check.awk
View File

@@ -1,114 +1,84 @@
#!/usr/bin/awk
#
# check - check the regression output for problems
#
# Copyright (C) 1999 Landon Curt Noll
#
# Calc is open software; you can redistribute it and/or modify it under
# the terms of the version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
#
# Calc is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
# Public License for more details.
#
# A copy of version 2.1 of the GNU Lesser General Public License is
# distributed with calc under the filename COPYING-LGPL. You should have
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.1 $
# @(#) $Id: check.awk,v 29.1 1999/12/14 09:15:35 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/RCS/check.awk,v $
#
# Under source code control: 1996/05/25 22:07:58
# File existed as early as: 1996
#
# chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
# Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
#
# This awk script will print 3 lines before and after any non-blank line that # This awk script will print 3 lines before and after any non-blank line that
# does not begin with a number. This allows the 'make debug' rule to remove # does not begin with a number. This allows the 'make debug' rule to remove
# all non-interest lines the the 'make check' regression output while providing # all non-interest lines the the 'make check' regression output while providing
# 3 lines of context around unexpected output. # 3 lines of context around unexpected output.
# #
BEGIN { BEGIN {
havebuf0=0; havebuf0=0;
buf0=0; buf0=0;
havebuf1=0; havebuf1=0;
buf1=0; buf1=0;
havebuf2=0; havebuf2=0;
buf2=0; buf2=0;
error = 0; error = 0;
end_seen = 0; end_seen = 0;
} }
NF == 0 { NF == 0 {
if (error > 0) { if (error > 0) {
if (havebuf2) { if (havebuf2) {
print buf2; print buf2;
}
--error;
} }
buf2 = buf1; --error;
havebuf2 = havebuf1; }
buf1 = buf0; buf2 = buf1;
havebuf1 = havebuf0; havebuf2 = havebuf1;
buf0 = $0; buf1 = buf0;
havebuf0 = 1; havebuf1 = havebuf0;
next; buf0 = $0;
havebuf0 = 1;
next;
} }
/: Ending regression tests$/ { /: Ending regression tests$/ {
end_seen = 1; end_seen = 1;
} }
$1 ~ /^[0-9]+:/ { $1 ~ /^[0-9]+:/ {
if (error > 0) { if (error > 0) {
if (havebuf2) { if (havebuf2) {
print buf2; print buf2;
}
--error;
} }
buf2 = buf1; --error;
havebuf2 = havebuf1; }
buf1 = buf0; buf2 = buf1;
havebuf1 = havebuf0; havebuf2 = havebuf1;
buf0 = $0; buf1 = buf0;
havebuf0 = 1; havebuf1 = havebuf0;
next; buf0 = $0;
havebuf0 = 1;
next;
} }
{ {
error = 6; error = 6;
if (havebuf2) { if (havebuf2) {
print buf2; print buf2;
} }
buf2 = buf1; buf2 = buf1;
havebuf2 = havebuf1; havebuf2 = havebuf1;
buf1 = buf0; buf1 = buf0;
havebuf1 = havebuf0; havebuf1 = havebuf0;
buf0 = $0; buf0 = $0;
havebuf0 = 1; havebuf0 = 1;
next; next;
} }
END { END {
if (error > 0 && havebuf2) { if (error > 0 && havebuf2) {
print buf2; print buf2;
--error; --error;
} }
if (error > 0 && havebuf1) { if (error > 0 && havebuf1) {
print buf1; print buf1;
--error; --error;
} }
if (error > 0 && havebuf0) { if (error > 0 && havebuf0) {
print buf0; print buf0;
} }
if (error > 0 || !end_seen) { if (error > 0 || !end_seen) {
exit(1); exit(1);
} else { } else {
exit(0); exit(0);
} }
} }

29
cmath.h
View File

@@ -1,30 +1,9 @@
/* /*
* cmath - data structures for extended precision complex arithmetic * Copyright (c) 1997 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 David I. Bell * Data structure declarations for extended precision complex arithmetic.
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: cmath.h,v 29.1 1999/12/14 09:15:35 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/cmath.h,v $
*
* Under source code control: 1993/07/30 19:42:45
* File existed as early as: 1993
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */

222
codegen.c
View File

@@ -1,35 +1,11 @@
/* /*
* codegen - module to generate opcodes from the input tokens * Copyright (c) 1997 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 David I. Bell and Ernest Bowen * Module to generate opcodes from the input tokens.
*
* Primary author: David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: codegen.c,v 29.1 1999/12/14 09:15:35 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/codegen.c,v $
*
* Under source code control: 1990/02/15 01:48:13
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#include <stdio.h> #include <stdio.h>
#include "have_unistd.h" #include "have_unistd.h"
#if defined(HAVE_UNISTD_H) #if defined(HAVE_UNISTD_H)
@@ -156,8 +132,7 @@ getcommands(BOOL toplevel)
/* previously read and -once was given */ /* previously read and -once was given */
break; break;
case -2: case -2:
scanerror(T_NULL, scanerror(T_NULL, "Maximum input depth reached");
"Maximum input depth reached");
break; break;
default: default:
scanerror(T_NULL, "Cannot open \"%s\"\n", name); scanerror(T_NULL, "Cannot open \"%s\"\n", name);
@@ -174,8 +149,7 @@ getcommands(BOOL toplevel)
break; break;
} }
if (writeglobals(name)) if (writeglobals(name))
scanerror(T_NULL, scanerror(T_NULL, "Error writing \"%s\"\n", name);
"Error writing \"%s\"\n", name);
break; break;
case T_CD: case T_CD:
@@ -183,8 +157,6 @@ getcommands(BOOL toplevel)
break; break;
case T_NEWLINE: case T_NEWLINE:
case T_SEMICOLON: case T_SEMICOLON:
case T_POUNDBANG:
case T_POUNDCOMMENT:
break; break;
default: default:
@@ -346,9 +318,7 @@ getfunction(void)
index = addparam(name); index = addparam(name);
break; break;
default: default:
scanerror(T_NULL, scanerror(T_NULL, "Parameter \"%s\" is already defined", name);
"Parameter \"%s\" is already defined",
name);
} }
type = gettoken(); type = gettoken();
if (type == T_ASSIGN) { if (type == T_ASSIGN) {
@@ -378,8 +348,7 @@ getfunction(void)
break; break;
default: default:
scanerror(T_NULL, scanerror(T_NULL,
"Left brace or equals sign " "Left brace or equals sign expected for function");
"expected for function");
return; return;
} }
endfunc(); endfunc();
@@ -424,8 +393,7 @@ getbody(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *defaul
default: default:
rescantoken(); rescantoken();
getstatement(contlabel, breaklabel, getstatement(contlabel, breaklabel, nextcaselabel, defaultlabel);
nextcaselabel, defaultlabel);
} }
} }
} }
@@ -474,8 +442,7 @@ getdeclarations(int symtype)
break; break;
default: default:
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Bad syntax in declaration statement");
"Bad syntax in declaration statement");
return res; return res;
} }
} }
@@ -607,8 +574,7 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
case T_CONTINUE: case T_CONTINUE:
if (contlabel == NULL_LABEL) { if (contlabel == NULL_LABEL) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "CONTINUE not within FOR, WHILE, or DO");
"CONTINUE not within FOR, WHILE, or DO");
return; return;
} }
addoplabel(OP_JUMP, contlabel); addoplabel(OP_JUMP, contlabel);
@@ -616,8 +582,7 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
case T_BREAK: case T_BREAK:
if (breaklabel == NULL_LABEL) { if (breaklabel == NULL_LABEL) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "BREAK not within FOR, WHILE, or DO");
"BREAK not within FOR, WHILE, or DO");
return; return;
} }
addoplabel(OP_JUMP, breaklabel); addoplabel(OP_JUMP, breaklabel);
@@ -659,26 +624,21 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
switch(gettoken()) { switch(gettoken()) {
case T_CONTINUE: case T_CONTINUE:
if (contlabel == NULL_LABEL) { if (contlabel == NULL_LABEL) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "CONTINUE not within FOR, WHILE, or DO");
"CONTINUE not within FOR, "
"WHILE, or DO");
return; return;
} }
addoplabel(OP_JUMPNZ, contlabel); addoplabel(OP_JUMPNZ, contlabel);
break; break;
case T_BREAK: case T_BREAK:
if (breaklabel == NULL_LABEL) { if (breaklabel == NULL_LABEL) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "BREAK not within FOR, WHILE, or DO");
"BREAK not within FOR, "
"WHILE, or DO");
return; return;
} }
addoplabel(OP_JUMPNZ, breaklabel); addoplabel(OP_JUMPNZ, breaklabel);
break; break;
case T_GOTO: case T_GOTO:
if (gettoken() != T_SYMBOL) { if (gettoken() != T_SYMBOL) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Missing label in goto");
"Missing label in goto");
return; return;
} }
addop(OP_JUMPNZ); addop(OP_JUMPNZ);
@@ -687,8 +647,7 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
default: default:
addoplabel(OP_JUMPZ, &label1); addoplabel(OP_JUMPZ, &label1);
rescantoken(); rescantoken();
getstatement(contlabel, breaklabel, getstatement(contlabel, breaklabel, NULL_LABEL, NULL_LABEL);
NULL_LABEL, NULL_LABEL);
if (gettoken() != T_ELSE) { if (gettoken() != T_ELSE) {
setlabel(&label1); setlabel(&label1);
rescantoken(); rescantoken();
@@ -696,8 +655,7 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
} }
addoplabel(OP_JUMP, &label2); addoplabel(OP_JUMP, &label2);
setlabel(&label1); setlabel(&label1);
getstatement(contlabel, breaklabel, getstatement(contlabel, breaklabel, NULL_LABEL, NULL_LABEL);
NULL_LABEL, NULL_LABEL);
setlabel(&label2); setlabel(&label2);
return; return;
} }
@@ -758,8 +716,7 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
addoplabel(OP_JUMP, &label1); addoplabel(OP_JUMP, &label1);
if (gettoken() != T_RIGHTPAREN) { if (gettoken() != T_RIGHTPAREN) {
(void) tokenmode(oldmode); (void) tokenmode(oldmode);
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Right parenthesis expected");
"Right parenthesis expected");
return; return;
} }
} }
@@ -804,8 +761,7 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
getstatement(contlabel, breaklabel, NULL_LABEL, NULL_LABEL); getstatement(contlabel, breaklabel, NULL_LABEL, NULL_LABEL);
if (gettoken() != T_WHILE) { if (gettoken() != T_WHILE) {
(void) tokenmode(oldmode); (void) tokenmode(oldmode);
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "WHILE keyword expected for DO statement");
"WHILE keyword expected for DO statement");
return; return;
} }
setlabel(contlabel); setlabel(contlabel);
@@ -826,14 +782,12 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
getcondition(); getcondition();
if (gettoken() != T_LEFTBRACE) { if (gettoken() != T_LEFTBRACE) {
(void) tokenmode(oldmode); (void) tokenmode(oldmode);
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Missing left brace for switch statement");
"Missing left brace for switch statement");
return; return;
} }
addoplabel(OP_JUMP, nextcaselabel); addoplabel(OP_JUMP, nextcaselabel);
rescantoken(); rescantoken();
getstatement(contlabel, breaklabel, getstatement(contlabel, breaklabel, nextcaselabel, defaultlabel);
nextcaselabel, defaultlabel);
addoplabel(OP_JUMP, breaklabel); addoplabel(OP_JUMP, breaklabel);
setlabel(nextcaselabel); setlabel(nextcaselabel);
if (defaultlabel->l_offset > 0) if (defaultlabel->l_offset > 0)
@@ -846,8 +800,7 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
case T_CASE: case T_CASE:
if (nextcaselabel == NULL_LABEL) { if (nextcaselabel == NULL_LABEL) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "CASE not within SWITCH statement");
"CASE not within SWITCH statement");
return; return;
} }
clearlabel(&label1); clearlabel(&label1);
@@ -856,30 +809,25 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
clearlabel(nextcaselabel); clearlabel(nextcaselabel);
(void) getexprlist(); (void) getexprlist();
if (gettoken() != T_COLON) { if (gettoken() != T_COLON) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Colon expected after CASE expression");
"Colon expected after CASE expression");
return; return;
} }
addoplabel(OP_CASEJUMP, nextcaselabel); addoplabel(OP_CASEJUMP, nextcaselabel);
setlabel(&label1); setlabel(&label1);
getstatement(contlabel, breaklabel, getstatement(contlabel, breaklabel, nextcaselabel, defaultlabel);
nextcaselabel, defaultlabel);
return; return;
case T_DEFAULT: case T_DEFAULT:
if (gettoken() != T_COLON) { if (gettoken() != T_COLON) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Colon expected after DEFAULT keyword");
"Colon expected after DEFAULT keyword");
return; return;
} }
if (defaultlabel == NULL_LABEL) { if (defaultlabel == NULL_LABEL) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "DEFAULT not within SWITCH statement");
"DEFAULT not within SWITCH statement");
return; return;
} }
if (defaultlabel->l_offset > 0) { if (defaultlabel->l_offset > 0) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Multiple DEFAULT clauses in SWITCH");
"Multiple DEFAULT clauses in SWITCH");
return; return;
} }
clearlabel(&label1); clearlabel(&label1);
@@ -887,8 +835,7 @@ getstatement(LABEL *contlabel, LABEL *breaklabel, LABEL *nextcaselabel, LABEL *d
setlabel(defaultlabel); setlabel(defaultlabel);
addop(OP_POP); addop(OP_POP);
setlabel(&label1); setlabel(&label1);
getstatement(contlabel, breaklabel, getstatement(contlabel, breaklabel, nextcaselabel, defaultlabel);
nextcaselabel, defaultlabel);
return; return;
case T_ELSE: case T_ELSE:
@@ -1043,18 +990,14 @@ getobjdeclaration(int symtype)
switch (gettoken()) { switch (gettoken()) {
case T_SYMBOL: case T_SYMBOL:
if (count == MAXINDICES) { if (count == MAXINDICES) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Too many elements in OBJ statement");
"Too many elements in OBJ "
"statement");
(void) tokenmode(oldmode); (void) tokenmode(oldmode);
return; return;
} }
index = addelement(tokensymbol()); index = addelement(tokensymbol());
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
if (indices[i] == index) { if (indices[i] == index) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Duplicate element name \"%s\"", tokensymbol());
"Duplicate element name "
"\"%s\"", tokensymbol());
(void) tokenmode(oldmode); (void) tokenmode(oldmode);
return; return;
} }
@@ -1064,8 +1007,7 @@ getobjdeclaration(int symtype)
continue; continue;
rescantoken(); rescantoken();
if (gettoken() != T_RIGHTBRACE) { if (gettoken() != T_RIGHTBRACE) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Bad object type definition");
"Bad object type definition");
(void) tokenmode(oldmode); (void) tokenmode(oldmode);
return; return;
} }
@@ -1082,8 +1024,7 @@ getobjdeclaration(int symtype)
case T_NEWLINE: case T_NEWLINE:
continue; continue;
default: default:
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Bad object type definition");
"Bad object type definition");
(void) tokenmode(oldmode); (void) tokenmode(oldmode);
return; return;
} }
@@ -1132,8 +1073,7 @@ getobjvars(char *name, int symtype)
index = checkobject(name); index = checkobject(name);
if (index < 0) { if (index < 0) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Object %s has not been defined yet", name);
"Object %s has not been defined yet", name);
return; return;
} }
for (;;) { for (;;) {
@@ -1286,8 +1226,7 @@ creatematrix(void)
} }
rescantoken(); rescantoken();
if (++dim > MAXDIM) { if (++dim > MAXDIM) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Only %ld dimensions allowed", MAXDIM);
"Only %ld dimensions allowed", MAXDIM);
return; return;
} }
(void) getopassignment(); (void) getopassignment();
@@ -1310,8 +1249,7 @@ creatematrix(void)
/*FALLTHRU*/ /*FALLTHRU*/
default: default:
rescantoken(); rescantoken();
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Illegal matrix definition");
"Illegal matrix definition");
return; return;
} }
} }
@@ -1366,8 +1304,7 @@ getinitlist(void)
return index; return index;
default: default:
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Bad initialization list");
"Bad initialization list");
(void) tokenmode(oldmode); (void) tokenmode(oldmode);
return -1; return -1;
} }
@@ -1383,14 +1320,12 @@ static void
getcondition(void) getcondition(void)
{ {
if (gettoken() != T_LEFTPAREN) { if (gettoken() != T_LEFTPAREN) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Missing left parenthesis for condition");
"Missing left parenthesis for condition");
return; return;
} }
(void) getexprlist(); (void) getexprlist();
if (gettoken() != T_RIGHTPAREN) { if (gettoken() != T_RIGHTPAREN) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Missing right parenthesis for condition");
"Missing right parenthesis for condition");
return; return;
} }
} }
@@ -1599,8 +1534,7 @@ getaltcond(void)
addoplabel(OP_JUMPZ, &altlab); addoplabel(OP_JUMPZ, &altlab);
type = getaltcond(); type = getaltcond();
if (gettoken() != T_COLON) { if (gettoken() != T_COLON) {
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Missing colon for conditional expression");
"Missing colon for conditional expression");
return EXPR_RVALUE; return EXPR_RVALUE;
} }
addoplabel(OP_JUMP, &donelab); addoplabel(OP_JUMP, &donelab);
@@ -2011,8 +1945,7 @@ getterm(void)
oldmode = tokenmode(TM_DEFAULT); oldmode = tokenmode(TM_DEFAULT);
type = getexprlist(); type = getexprlist();
if (gettoken() != T_RIGHTPAREN) if (gettoken() != T_RIGHTPAREN)
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Missing right parenthesis");
"Missing right parenthesis");
(void) tokenmode(oldmode); (void) tokenmode(oldmode);
break; break;
@@ -2041,8 +1974,7 @@ getterm(void)
default: default:
if (iskeyword(type)) { if (iskeyword(type)) {
scanerror(T_NULL, scanerror(T_NULL, "Expression contains reserved keyword");
"Expression contains reserved keyword");
break; break;
} }
rescantoken(); rescantoken();
@@ -2061,9 +1993,7 @@ getterm(void)
type = 0; type = 0;
break; break;
case T_LEFTPAREN: case T_LEFTPAREN:
scanerror(T_NULL, scanerror(T_NULL, "Function calls not allowed as expressions");
"Function calls not allowed "
"as expressions");
default: default:
rescantoken(); rescantoken();
return type; return type;
@@ -2125,9 +2055,7 @@ getidexpr(BOOL okmat, BOOL autodef)
type = 0; type = 0;
break; break;
case T_LEFTPAREN: case T_LEFTPAREN:
scanerror(T_NULL, scanerror(T_NULL, "Function calls not allowed as expressions");
"Function calls not allowed "
"as expressions");
default: default:
rescantoken(); rescantoken();
return type; return type;
@@ -2225,31 +2153,11 @@ getshowstatement(void)
case T_SYMBOL: case T_SYMBOL:
strncpy(name, tokensymbol(), 4); strncpy(name, tokensymbol(), 4);
name[4] = '\0'; name[4] = '\0';
/* Yuck! */ arg = stringindex("buil\000real\000func\000objf\000conf\000objt\000file\000size\000erro\000cust\000bloc\000cons\000glob\000stat\000numb\000redc\000stri\000lite\000opco\000", name);
arg = stringindex("buil\000"
"real\000"
"func\000"
"objf\000"
"conf\000"
"objt\000"
"file\000"
"size\000"
"erro\000"
"cust\000"
"bloc\000"
"cons\000"
"glob\000"
"stat\000"
"numb\000"
"redc\000"
"stri\000"
"lite\000"
"opco\000", name);
if (arg == 19) { if (arg == 19) {
if (gettoken() != T_SYMBOL) { if (gettoken() != T_SYMBOL) {
rescantoken(); rescantoken();
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Function name expected");
"Function name expected");
return; return;
} }
index = adduserfunc(tokensymbol()); index = adduserfunc(tokensymbol());
@@ -2266,11 +2174,9 @@ getshowstatement(void)
printf("four letters of one of:\n"); printf("four letters of one of:\n");
printf("\tblocks, builtin, config, constants, "); printf("\tblocks, builtin, config, constants, ");
printf("custom, errors, files, functions,\n"); printf("custom, errors, files, functions,\n");
printf("\tglobaltypes, objfunctions, objtypes, " printf("\tglobaltypes, objfunctions, objtypes, opcodes, sizes, ");
"opcodes, sizes, ");
printf("realglobals,\n"); printf("realglobals,\n");
printf("\tstatics, numbers, redcdata, " printf("\tstatics, numbers, redcdata, strings, literals\n");
"strings, literals\n");
rescantoken(); rescantoken();
return; return;
@@ -2331,9 +2237,7 @@ getmatargs(void)
break; break;
default: default:
rescantoken(); rescantoken();
scanerror(T_NULL, scanerror(T_NULL, "Missing right bracket in array reference");
"Missing right bracket in "
"array reference");
return; return;
} }
} }
@@ -2417,8 +2321,7 @@ definesymbol(char *name, int symtype)
return; return;
/*FALLTHRU*/ /*FALLTHRU*/
case SYM_PARAM: case SYM_PARAM:
scanerror(T_COMMA, scanerror(T_COMMA, "Variable \"%s\" is already defined", name);
"Variable \"%s\" is already defined", name);
return; return;
} }
@@ -2528,9 +2431,7 @@ getcallargs(char *name)
case T_COMMA: case T_COMMA:
break; break;
default: default:
scanerror(T_SEMICOLON, scanerror(T_SEMICOLON, "Missing right parenthesis in function call");
"Missing right parenthesis "
"in function call");
return; return;
} }
} }
@@ -2574,25 +2475,4 @@ do_changedir(void)
} }
/* /* END CODE */
* getshellfile - process the contents of a shellfile
*/
void
getshellfile(char *shellfile)
{
/*
* treat the calc shell script as if we were reading it
*/
if (!allow_read) {
scanerror(T_NULL,
"reading of calc shell script \"%s\" "
"dislloaed by -m mode\n", shellfile);
} else if (opensearchfile(shellfile, NULL, NULL, FALSE) == 0) {
getcommands(FALSE);
closeinput();
} else {
scanerror(T_NULL,
"Cannot open calc shell script \"%s\"\n", shellfile);
}
return;
}

View File

@@ -1,35 +1,11 @@
/* /*
* comfunc - extended precision complex arithmetic non-primitive routines * Copyright (c) 1993 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 David I. Bell and Ernest Bowen * Extended precision complex arithmetic non-primitive routines
*
* Primary author: David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: comfunc.c,v 29.1 1999/12/14 09:15:35 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/comfunc.c,v $
*
* Under source code control: 1990/02/15 01:48:13
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#include "config.h" #include "config.h"
#include "cmath.h" #include "cmath.h"
@@ -378,12 +354,9 @@ croot(COMPLEX *c, NUMBER *q, NUMBER *epsilon)
if (qistwo(q)) if (qistwo(q))
return csqrt(c, epsilon, 24L); return csqrt(c, epsilon, 24L);
if (cisreal(c) && !qisneg(c->real)) { if (cisreal(c) && !qisneg(c->real)) {
tmp1 = qroot(c->real, q, epsilon);
if (tmp1 == NULL)
return NULL;
r = comalloc(); r = comalloc();
qfree(r->real); qfree(r->real);
r->real = tmp1; r->real = qroot(c->real, q, epsilon);
return r; return r;
} }
/* /*
@@ -402,14 +375,12 @@ croot(COMPLEX *c, NUMBER *q, NUMBER *epsilon)
root = qroot(a2pb2, tmp1, epsilon2); root = qroot(a2pb2, tmp1, epsilon2);
qfree(a2pb2); qfree(a2pb2);
qfree(tmp1); qfree(tmp1);
qfree(epsilon2);
if (root == NULL)
return NULL;
m = qilog2(root); m = qilog2(root);
if (m < n) { if (m < n) {
qfree(root); qfree(root);
return clink(&_czero_); return clink(&_czero_);
} }
qfree(epsilon2);
epsilon2 = qbitvalue(n - m - 4); epsilon2 = qbitvalue(n - m - 4);
tmp1 = qatan2(c->imag, c->real, epsilon2); tmp1 = qatan2(c->imag, c->real, epsilon2);
qfree(epsilon2); qfree(epsilon2);
@@ -439,9 +410,6 @@ cexp(COMPLEX *c, NUMBER *epsilon)
/*NOTREACHED*/ /*NOTREACHED*/
} }
if (cisreal(c)) { if (cisreal(c)) {
tmp1 = qexp(c->real, epsilon);
if (tmp1 == NULL)
return NULL;
r = comalloc(); r = comalloc();
qfree(r->real); qfree(r->real);
r->real = qexp(c->real, epsilon); r->real = qexp(c->real, epsilon);
@@ -451,8 +419,6 @@ cexp(COMPLEX *c, NUMBER *epsilon)
epsilon1 = qbitvalue(n - 2); epsilon1 = qbitvalue(n - 2);
tmp1 = qexp(c->real, epsilon1); tmp1 = qexp(c->real, epsilon1);
qfree(epsilon1); qfree(epsilon1);
if (tmp1 == NULL)
return NULL;
if (qiszero(tmp1)) { if (qiszero(tmp1)) {
qfree(tmp1); qfree(tmp1);
return clink(&_czero_); return clink(&_czero_);
@@ -548,8 +514,6 @@ ccos(COMPLEX *c, NUMBER *epsilon)
ctmp2 = cexp(ctmp1, epsilon1); ctmp2 = cexp(ctmp1, epsilon1);
comfree(ctmp1); comfree(ctmp1);
qfree(epsilon1); qfree(epsilon1);
if (ctmp2 == NULL)
return NULL;
if (ciszero(ctmp2)) { if (ciszero(ctmp2)) {
comfree(ctmp2); comfree(ctmp2);
return clink(&_czero_); return clink(&_czero_);
@@ -600,8 +564,6 @@ csin(COMPLEX *c, NUMBER *epsilon)
ctmp2 = cexp(ctmp1, epsilon1); ctmp2 = cexp(ctmp1, epsilon1);
comfree(ctmp1); comfree(ctmp1);
qfree(epsilon1); qfree(epsilon1);
if (ctmp2 == NULL)
return NULL;
if (ciszero(ctmp2)) { if (ciszero(ctmp2)) {
comfree(ctmp2); comfree(ctmp2);
return clink(&_czero_); return clink(&_czero_);
@@ -632,13 +594,9 @@ ccosh(COMPLEX *c, NUMBER *epsilon)
COMPLEX *tmp1, *tmp2, *tmp3; COMPLEX *tmp1, *tmp2, *tmp3;
tmp1 = cexp(c, epsilon); tmp1 = cexp(c, epsilon);
if (tmp1 == NULL)
return NULL;
tmp2 = cneg(c); tmp2 = cneg(c);
tmp3 = cexp(tmp2, epsilon); tmp3 = cexp(tmp2, epsilon);
comfree(tmp2); comfree(tmp2);
if (tmp3 == NULL)
return NULL;
tmp2 = cadd(tmp1, tmp3); tmp2 = cadd(tmp1, tmp3);
comfree(tmp1); comfree(tmp1);
comfree(tmp3); comfree(tmp3);
@@ -654,13 +612,9 @@ csinh(COMPLEX *c, NUMBER *epsilon)
COMPLEX *tmp1, *tmp2, *tmp3; COMPLEX *tmp1, *tmp2, *tmp3;
tmp1 = cexp(c, epsilon); tmp1 = cexp(c, epsilon);
if (tmp1 == NULL)
return NULL;
tmp2 = cneg(c); tmp2 = cneg(c);
tmp3 = cexp(tmp2, epsilon); tmp3 = cexp(tmp2, epsilon);
comfree(tmp2); comfree(tmp2);
if (tmp3 == NULL)
return NULL;
tmp2 = csub(tmp1, tmp3); tmp2 = csub(tmp1, tmp3);
comfree(tmp1); comfree(tmp1);
comfree(tmp3); comfree(tmp3);
@@ -950,8 +904,6 @@ cgd(COMPLEX *c, NUMBER *epsilon)
tmp1 = neg ? cneg(c) : clink(c); tmp1 = neg ? cneg(c) : clink(c);
tmp2 = cexp(tmp1, epsilon); tmp2 = cexp(tmp1, epsilon);
comfree(tmp1); comfree(tmp1);
if (tmp2 == NULL)
return NULL;
tmp1 = cmul(&_conei_, tmp2); tmp1 = cmul(&_conei_, tmp2);
tmp3 = cadd(&_conei_, tmp2); tmp3 = cadd(&_conei_, tmp2);
comfree(tmp2); comfree(tmp2);
@@ -1011,11 +963,11 @@ cpolar(NUMBER *q1, NUMBER *q2, NUMBER *epsilon)
/*NOTREACHED*/ /*NOTREACHED*/
} }
if (qiszero(q1)) if (qiszero(q1))
return clink(&_czero_); return qlink(&_czero_);
m = qilog2(q1) + 1; m = qilog2(q1) + 1;
n = qilog2(epsilon); n = qilog2(epsilon);
if (m < n) if (m < n)
return clink(&_czero_); return qlink(&_czero_);
r = comalloc(); r = comalloc();
if (qiszero(q2)) { if (qiszero(q2)) {
qfree(r->real); qfree(r->real);

View File

@@ -1,33 +1,11 @@
/* /*
* commath - extended precision complex arithmetic primitive routines * Copyright (c) 1993 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 David I. Bell * Extended precision complex arithmetic primitive routines
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: commath.c,v 29.1 1999/12/14 09:15:35 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/commath.c,v $
*
* Under source code control: 1990/02/15 01:48:10
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#include "cmath.h" #include "cmath.h"
@@ -627,3 +605,5 @@ comfree(COMPLEX *c)
qfree(c->imag); qfree(c->imag);
free(c); free(c);
} }
/* END CODE */

169
config.c
View File

@@ -1,35 +1,11 @@
/* /*
* config - configuration routines * Copyright (c) 1997 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 David I. Bell and Landon Curt Noll * Configuration routines.
*
* Primary author: David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.2 $
* @(#) $Id: config.c,v 29.2 1999/12/14 19:37:46 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/config.c,v $
*
* Under source code control: 1991/07/20 00:21:56
* File existed as early as: 1991
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#include <stdio.h> #include <stdio.h>
#include "calc.h" #include "calc.h"
#include "token.h" #include "token.h"
@@ -39,11 +15,6 @@
#include "config.h" #include "config.h"
#include "string.h" #include "string.h"
#include "have_strdup.h"
#if !defined(HAVE_STRDUP)
# define strdup(x) calc_strdup((CONST char *)(x))
#endif /* HAVE_STRDUP */
/* /*
* Table of configuration types that can be set or read. * Table of configuration types that can be set or read.
@@ -81,16 +52,12 @@ NAMETYPE configs[] = {
{"blkverbose", CONFIG_BLKVERBOSE}, {"blkverbose", CONFIG_BLKVERBOSE},
{"blkbase", CONFIG_BLKBASE}, {"blkbase", CONFIG_BLKBASE},
{"blkfmt", CONFIG_BLKFMT}, {"blkfmt", CONFIG_BLKFMT},
{"resource_debug", CONFIG_RESOURCE_DEBUG}, {"lib_debug", CONFIG_LIB_DEBUG},
{"lib_debug", CONFIG_RESOURCE_DEBUG},
{"calc_debug", CONFIG_CALC_DEBUG}, {"calc_debug", CONFIG_CALC_DEBUG},
{"user_debug", CONFIG_USER_DEBUG}, {"user_debug", CONFIG_USER_DEBUG},
{"verbose_quit",CONFIG_VERBOSE_QUIT}, {"verbose_quit",CONFIG_VERBOSE_QUIT},
{"ctrl_d", CONFIG_CTRL_D}, {"ctrl_d", CONFIG_CTRL_D},
{"ctrl-d", CONFIG_CTRL_D}, /* alias for ctrl_d */ {"ctrl-d", CONFIG_CTRL_D}, /* alias for ctrl_d */
{"program", CONFIG_PROGRAM},
{"basename", CONFIG_BASENAME},
{"version", CONFIG_VERSION},
{NULL, 0} {NULL, 0}
}; };
@@ -130,13 +97,10 @@ CONFIG oldstd = { /* backward compatible standard configuration */
BLK_BASE_HEX, /* block octet print base */ BLK_BASE_HEX, /* block octet print base */
BLK_FMT_HD_STYLE, /* block output format */ BLK_FMT_HD_STYLE, /* block output format */
0, /* internal calc debug level */ 0, /* internal calc debug level */
3, /* calc resource file debug level */ 3, /* calc library debug level */
0, /* user defined debug level */ 0, /* user defined debug level */
TRUE, /* print Quit or abort executed messages */ TRUE, /* print Quit or abort executed messages */
CTRL_D_VIRGIN_EOF, /* ^D only exits on virgin lines */ CTRL_D_VIRGIN_EOF /* ^D only exits on virgin lines */
NULL, /* our name */
NULL, /* basename of our name */
NULL /* version */
}; };
CONFIG newstd = { /* new non-backward compatible configuration */ CONFIG newstd = { /* new non-backward compatible configuration */
MODE_INITIAL, /* current output mode */ MODE_INITIAL, /* current output mode */
@@ -170,13 +134,10 @@ CONFIG newstd = { /* new non-backward compatible configuration */
BLK_BASE_HEX, /* block octet print base */ BLK_BASE_HEX, /* block octet print base */
BLK_FMT_HD_STYLE, /* block output format */ BLK_FMT_HD_STYLE, /* block output format */
0, /* internal calc debug level */ 0, /* internal calc debug level */
3, /* calc resource file debug level */ 3, /* calc library debug level */
0, /* user defined debug level */ 0, /* user defined debug level */
TRUE, /* print Quit or abort executed messages */ TRUE, /* print Quit or abort executed messages */
CTRL_D_VIRGIN_EOF, /* ^D only exits on virgin lines */ CTRL_D_VIRGIN_EOF /* ^D only exits on virgin lines */
NULL, /* our name */
NULL, /* basename of our name */
NULL /* version */
}; };
CONFIG *conf = NULL; /* loaded in at startup - current configuration */ CONFIG *conf = NULL; /* loaded in at startup - current configuration */
@@ -265,19 +226,19 @@ static NAMETYPE ctrl_d[] = {
/* /*
* Possible binary config state values * Possible binary config state values
*/ */
#define TRUE_STRING "true" #define TRUE_STRING "on"
#define FALSE_STRING "false" #define FALSE_STRING "off"
static NAMETYPE truth[] = { static NAMETYPE truth[] = {
{TRUE_STRING, TRUE}, {TRUE_STRING, TRUE},
{"true", TRUE},
{"t", TRUE}, {"t", TRUE},
{"on", TRUE},
{"yes", TRUE}, {"yes", TRUE},
{"y", TRUE}, {"y", TRUE},
{"set", TRUE}, {"set", TRUE},
{"1", TRUE}, {"1", TRUE},
{FALSE_STRING, FALSE}, {FALSE_STRING, FALSE},
{"false", FALSE},
{"f", FALSE}, {"f", FALSE},
{"off", FALSE},
{"no", FALSE}, {"no", FALSE},
{"n", FALSE}, {"n", FALSE},
{"unset", FALSE}, {"unset", FALSE},
@@ -836,18 +797,18 @@ setconfig(int type, VALUE *vp)
conf->calc_debug = temp; conf->calc_debug = temp;
break; break;
case CONFIG_RESOURCE_DEBUG: case CONFIG_LIB_DEBUG:
if (vp->v_type != V_NUM) { if (vp->v_type != V_NUM) {
math_error("Non numeric for resource_debug"); math_error("Non numeric for lib_debug");
/*NOTREACHED*/ /*NOTREACHED*/
} }
q = vp->v_num; q = vp->v_num;
temp = qtoi(q); temp = qtoi(q);
if (qisfrac(q) || !zistiny(q->num)) { if (qisfrac(q) || !zistiny(q->num)) {
math_error("Illegal resource_debug parameter value"); math_error("Illegal lib_debug parameter value");
/*NOTREACHED*/ /*NOTREACHED*/
} }
conf->resource_debug = temp; conf->lib_debug = temp;
break; break;
case CONFIG_USER_DEBUG: case CONFIG_USER_DEBUG:
@@ -893,18 +854,6 @@ setconfig(int type, VALUE *vp)
conf->ctrl_d = temp; conf->ctrl_d = temp;
break; break;
case CONFIG_PROGRAM:
math_error("The program config parameter is read-only");
/*NOTREACHED*/
case CONFIG_BASENAME:
math_error("The program config parameter is read-only");
/*NOTREACHED*/
case CONFIG_VERSION:
math_error("The program config parameter is read-only");
/*NOTREACHED*/
default: default:
math_error("Setting illegal config parameter"); math_error("Setting illegal config parameter");
/*NOTREACHED*/ /*NOTREACHED*/
@@ -953,23 +902,18 @@ config_copy(CONFIG *src)
* clone the pointer values * clone the pointer values
*/ */
dest->epsilon = qlink(src->epsilon); dest->epsilon = qlink(src->epsilon);
dest->prompt1 = strdup(src->prompt1); dest->prompt1 = (char *)malloc(strlen(src->prompt1)+1);
dest->prompt2 = strdup(src->prompt2); if (dest->prompt1 == NULL) {
if (src->program == NULL) { math_error("cannot dup prompt1 for new CONFIG value");
dest->program = strdup(program); /*NOTREACHED*/
} else {
dest->program = strdup(src->program);
} }
if (src->base_name == NULL) { strcpy(dest->prompt1, src->prompt1);
dest->base_name = strdup(base_name); dest->prompt2 = (char *)malloc(strlen(src->prompt2)+1);
} else { if (dest->prompt2 == NULL) {
dest->base_name = strdup(src->base_name); math_error("cannot dup prompt2 for new CONFIG value");
} /*NOTREACHED*/
if (src->version == NULL) {
dest->version = strdup(version());
} else {
dest->version = strdup(src->version);
} }
strcpy(dest->prompt2, src->prompt2);
/* /*
* return the new value * return the new value
@@ -1006,15 +950,6 @@ config_free(CONFIG *cfg)
if (cfg->prompt2 != NULL) { if (cfg->prompt2 != NULL) {
free(cfg->prompt2); free(cfg->prompt2);
} }
if (cfg->program != NULL) {
free(cfg->program);
}
if (cfg->base_name != NULL) {
free(cfg->base_name);
}
if (cfg->version != NULL) {
free(cfg->version);
}
/* /*
* free the CONFIG value itself * free the CONFIG value itself
@@ -1226,8 +1161,8 @@ config_value(CONFIG *cfg, int type, VALUE *vp)
i = cfg->calc_debug; i = cfg->calc_debug;
break; break;
case CONFIG_RESOURCE_DEBUG: case CONFIG_LIB_DEBUG:
i = cfg->resource_debug; i = cfg->lib_debug;
break; break;
case CONFIG_USER_DEBUG: case CONFIG_USER_DEBUG:
@@ -1253,33 +1188,6 @@ config_value(CONFIG *cfg, int type, VALUE *vp)
vp->v_str = makenewstring(p); vp->v_str = makenewstring(p);
return; return;
case CONFIG_PROGRAM:
vp->v_type = V_STR;
if (cfg->base_name == NULL) {
vp->v_str = makestring(strdup(program));
} else {
vp->v_str = makenewstring(cfg->program);
}
return;
case CONFIG_BASENAME:
vp->v_type = V_STR;
if (cfg->base_name == NULL) {
vp->v_str = makestring(strdup(base_name));
} else {
vp->v_str = makenewstring(cfg->base_name);
}
return;
case CONFIG_VERSION:
vp->v_type = V_STR;
if (cfg->version == NULL) {
vp->v_str = makestring(strdup(version()));
} else {
vp->v_str = makenewstring(cfg->version);
}
return;
default: default:
math_error("Getting illegal CONFIG element"); math_error("Getting illegal CONFIG element");
/*NOTREACHED*/ /*NOTREACHED*/
@@ -1354,23 +1262,8 @@ config_cmp(CONFIG *cfg1, CONFIG *cfg2)
cfg1->blkbase != cfg2->blkbase || cfg1->blkbase != cfg2->blkbase ||
cfg1->blkfmt != cfg2->blkfmt || cfg1->blkfmt != cfg2->blkfmt ||
cfg1->calc_debug != cfg2->calc_debug || cfg1->calc_debug != cfg2->calc_debug ||
cfg1->resource_debug != cfg2->resource_debug || cfg1->lib_debug != cfg2->lib_debug ||
cfg1->user_debug != cfg2->user_debug || cfg1->user_debug != cfg2->user_debug ||
cfg1->verbose_quit != cfg2->verbose_quit || cfg1->verbose_quit != cfg2->verbose_quit ||
cfg1->ctrl_d != cfg2->ctrl_d || cfg1->ctrl_d != cfg2->ctrl_d;
(cfg1->program == NULL && cfg2->program != NULL) ||
(cfg1->program != NULL && cfg2->program == NULL) ||
(cfg1->program != NULL && cfg2->program != NULL &&
strcmp(cfg1->program, cfg2->program) != 0) ||
(cfg1->base_name == NULL && cfg2->base_name != NULL) ||
(cfg1->base_name != NULL && cfg2->base_name == NULL) ||
(cfg1->base_name != NULL && cfg2->base_name != NULL &&
strcmp(cfg1->base_name, cfg2->base_name) != 0) ||
(cfg1->version == NULL && cfg2->version != NULL) ||
(cfg1->version != NULL && cfg2->version == NULL) ||
(cfg1->version != NULL && cfg2->version != NULL &&
strcmp(cfg1->version, cfg2->version) != 0);
} }

View File

@@ -1,33 +1,37 @@
/* /*
* config - configuration routines * Copyright (c) 1997 by Landon Curt Noll. All Rights Reserved.
* *
* Copyright (C) 1999 Landon Curt Noll and David I. Bell * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
* *
* Primary author: Landon Curt Noll * supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
* *
* Calc is open software; you can redistribute it and/or modify it under * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* the terms of the version 2.1 of the GNU Lesser General Public License * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* as published by the Free Software Foundation. * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * Prior to calc 2.9.3t9, these routines existed as a calc library called
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * cryrand.cal. They have been rewritten in C for performance as well
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General * as to make them available directly from libcalc.a.
* Public License for more details.
* *
* A copy of version 2.1 of the GNU Lesser General Public License is * Comments, suggestions, bug fixes and questions about these routines
* distributed with calc under the filename COPYING-LGPL. You should have * are welcome. Send EMail to the address given below.
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* *
* @(#) $Revision: 29.2 $ * Happy bit twiddling,
* @(#) $Id: config.h,v 29.2 1999/12/14 19:37:46 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/config.h,v $
* *
* Under source code control: 1995/11/01 22:20:17 * Landon Curt Noll
* File existed as early as: 1995 * http://reality.sgi.com/chongo/
* *
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/ * chongo <was here> /\../\
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
@@ -73,15 +77,11 @@
#define CONFIG_BLKVERBOSE 27 #define CONFIG_BLKVERBOSE 27
#define CONFIG_BLKBASE 28 #define CONFIG_BLKBASE 28
#define CONFIG_BLKFMT 29 #define CONFIG_BLKFMT 29
#define CONFIG_RESOURCE_DEBUG 30 #define CONFIG_LIB_DEBUG 30
#define CONFIG_LIB_DEBUG CONFIG_RESOURCE_DEBUG
#define CONFIG_CALC_DEBUG 31 #define CONFIG_CALC_DEBUG 31
#define CONFIG_USER_DEBUG 32 #define CONFIG_USER_DEBUG 32
#define CONFIG_VERBOSE_QUIT 33 #define CONFIG_VERBOSE_QUIT 33
#define CONFIG_CTRL_D 34 #define CONFIG_CTRL_D 34
#define CONFIG_PROGRAM 35
#define CONFIG_BASENAME 36
#define CONFIG_VERSION 37
/* /*
@@ -104,8 +104,7 @@
* quickhash.c - config_hash() * quickhash.c - config_hash()
* hash.c - hash_value() * hash.c - hash_value()
* config.c - configs[], oldstd, newstd, setconfig(), * config.c - configs[], oldstd, newstd, setconfig(),
* config_value(), config_cmp(), * config_value(), config_cmp()
* and perhaps config_copy(), config_free()
* config.h - CONFIG_XYZ_SYMBOL (see above) * config.h - CONFIG_XYZ_SYMBOL (see above)
*/ */
struct config { struct config {
@@ -140,24 +139,21 @@ struct config {
int blkbase; /* block output base */ int blkbase; /* block output base */
int blkfmt; /* block output style */ int blkfmt; /* block output style */
long calc_debug; /* internal debug, see CALC_DEBUG_XXX below */ long calc_debug; /* internal debug, see CALC_DEBUG_XXX below */
long resource_debug; /* resource debug, see RSCDBG_XXX below */ long lib_debug; /* library debug, see LIB_DEBUG_XXX below */
long user_debug; /* user defined debug value: 0 default */ long user_debug; /* user defined debug value: 0 default */
BOOL verbose_quit; /* TRUE => print Quit or abort executed msg */ BOOL verbose_quit; /* TRUE => print Quit or abort executed msg */
int ctrl_d; /* see CTRL_D_xyz below */ int ctrl_d; /* see CTRL_D_xyz below */
char *program; /* our name */
char *base_name; /* basename of our name */
char *version; /* calc version string */
}; };
typedef struct config CONFIG; typedef struct config CONFIG;
/* /*
* resource_debug bit masks * lib_debug bit masks
*/ */
#define RSCDBG_STDIN_FUNC (0x00000001) /* interactive func define debug */ #define LIBDBG_STDIN_FUNC (0x00000001) /* interactive func define debug */
#define RSCDBG_FILE_FUNC (0x00000002) /* file read func define debug */ #define LIBDBG_FILE_FUNC (0x00000002) /* file read func define debug */
#define RSCDBG_FUNC_INFO (0x00000004) /* print extra info for show func */ #define LIBDBG_FUNC_INFO (0x00000004) /* print extra info for show func */
#define RSCDBG_MASK (0x00000007) #define LIBDBG_MASK (0x00000007)
/* /*
@@ -186,7 +182,7 @@ extern CONFIG *conf; /* current configuration */
extern CONFIG oldstd; /* backward compatible standard configuration */ extern CONFIG oldstd; /* backward compatible standard configuration */
extern CONFIG newstd; /* new non-backward compatible configuration */ extern CONFIG newstd; /* new non-backward compatible configuration */
extern char *calc_debug; /* !=NULL => value of config("calc_debug") */ extern char *calc_debug; /* !=NULL => value of config("calc_debug") */
extern char *resource_debug; /* !=NULL => config("resource_debug") value */ extern char *lib_debug; /* !=NULL => value of config("lib_debug") */
extern char *user_debug; /* !=NULL => value of config("user_debug") */ extern char *user_debug; /* !=NULL => value of config("user_debug") */

30
const.c
View File

@@ -1,33 +1,11 @@
/* /*
* const - constant number storage module * Copyright (c) 1997 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 David I. Bell * Constant number storage module.
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: const.c,v 29.1 1999/12/14 09:15:35 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/const.c,v $
*
* Under source code control: 1990/02/15 01:48:14
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#include <stdio.h> #include <stdio.h>
#include "calc.h" #include "calc.h"
#include "qmath.h" #include "qmath.h"

View File

@@ -1,247 +0,0 @@
#
# cscript - makefile for calc shell script files
#
# Copyright (C) 1999 Landon Curt Noll
#
# Calc is open software; you can redistribute it and/or modify it under
# the terms of the version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
#
# Calc is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
# Public License for more details.
#
# A copy of version 2.1 of the GNU Lesser General Public License is
# distributed with calc under the filename COPYING-LGPL. You should have
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.3 $
# @(#) $Id: Makefile,v 29.3 1999/12/14 19:30:19 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/Makefile,v $
#
# Under source code control: 1999/11/29 11:10:26
# File existed as early as: 1999
#
# chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
# Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
#
# calculator by David I. Bell with help/mods from others
# Makefile by Landon Curt Noll
# required vars
#
SHELL= /bin/sh
MAKE_FILE = Makefile
# Normally, the upper level makefile will set these values. We provide
# a default here just in case you want to build from this directory.
#
BINDIR= /usr/local/bin
#BINDIR= /usr/bin
#BINDIR= /usr/contrib/bin
#
SCRIPTDIR= ${BINDIR}/cscript
# Makefile debug
#
# Q=@ do not echo internal makefile actions (quiet mode)
# Q= echo internal makefile actions (debug / verbose mode)
#
#Q=
Q=@
# standard tools
#
CHMOD= chmod
SED= sed
SORT= sort
FMT= fmt
# The ${SCRIPT} list is the list of calc shell script files (without the .calc
# extension) which will be installed.
#
# The ${SCRIPT_SRC} is built from ${SCRIPT} and has the .calc extensions.
#
# This list is prodiced by the detaillist rule when no WARNINGS are detected.
# To add a script:
#
# 1) Name the file with a .calc filename extension
# 2) Place that file under RCS control
# 3) Add the name, without the .calc extension to the ${SCRIPT} below
# 4) Write out this Makefile
# 5) Replace the ${SCRIPT} and ${SCRIPT_SRC} lines with the output of:
#
# make detaillist
#
SCRIPT= mersenne piforever plus simple
SCRIPT_SRC= mersenne.calc piforever.calc plus.calc simple.calc
# These files are found (but not built) in the distribution
#
DISTLIST= ${SCRIPT_SRC} ${MAKE_FILE}
# These files are used to make (but not built) a calc .a library
#
CALCLIBLIST=
# The reason for this Makefile
#
all: ${SCRIPT} ${SCRIPT_SRC} .all
# used by the upper level Makefile to determine of we have done all
#
# NOTE: Due to bogus shells found on one common system we must have
# an non-emoty else clause for every if condition. *sigh*
#
.all:
rm -f .all
touch .all
##
#
# File list generation. You can ignore this section.
#
#
# We will form the names of source files as if they were in a
# sub-directory called calc/cscript.
#
##
distlist: ${DISTLIST}
${Q}for i in ${DISTLIST}; do \
echo cscript/$$i; \
done | ${SORT}
distdir:
${Q}echo cscript
calcliblist:
# These next rule help me form the ${DETAIL_HELP} makefile variables above.
#
detaillist:
${Q}-(echo "xxxxxxx"; \
for i in ${SCRIPT}; do \
if [ ! -f RCS/$$i.calc,v ]; then \
echo "WARNING: $$i.calc not under RCS control" 1>&2; \
else \
echo $$i; \
fi; \
done | ${SORT}) | ${FMT} -70 | \
${SED} -e '1s/xxxxxxx/SCRIPT=/' -e '2,$$s/^/ /' \
-e 's/$$/ \\/' -e '$$s/ \\$$//'
${Q}echo
${Q}-(echo "xxxxxxxxxxx"; \
for i in ${SCRIPT}; do \
if [ ! -f RCS/$$i.calc,v ]; then \
echo "WARNING: $$i.calc not under RCS control" 1>&2; \
else \
echo $$i.calc; \
fi; \
done | ${SORT}) | ${FMT} -70 | \
${SED} -e '1s/xxxxxxxxxxx/SCRIPT_SRC=/' -e '2,$$s/^/ /' \
-e 's/$$/ \\/' -e '$$s/ \\$$//'
##
#
# Home grown make dependency rules. Your system make not support
# or have the needed tools. You can ignore this section.
#
# We will form a skelaton tree of *.c files containing only #include "foo.h"
# lines and .h files containing the same lines surrounded by multiple include
# prevention lines. This allows us to build a static depend list that will
# satisfy all possible cpp symbol definition combinations.
#
##
depend:
${Q}if [ -f Makefile.bak ]; then \
echo "Makefile.bak exists, remove or move it out of the way"; \
exit 1; \
else \
true; \
fi
-${Q}rm -f makedep.out
${Q}echo forming cscript dependency list
${Q}echo "# DO NOT DELETE THIS LINE -- make depend depends on it." > \
makedep.out
${Q}echo "" >> makedep.out
${Q}for i in ${SCRIPT}; do \
echo "$$i: $$i.calc"; \
echo ' rm -f $$@'; \
echo ' $${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!$${BINDIR}/calc:" $$?>$$@'; \
echo ' $${CHMOD} +x $$@'; \
done >> makedep.out
${Q}echo sample dependency list formed
${Q}echo forming new cscript/Makefile
-${Q}rm -f Makefile.bak
${Q}mv Makefile Makefile.bak
${Q}${SED} -n '1,/^# DO NOT DELETE THIS LINE/p' Makefile.bak > Makefile
${Q}echo "" >> Makefile
${Q}${SED} -n '3,$$p' makedep.out >> Makefile
-${Q}rm -f makedep.out
-${Q}if cmp -s Makefile.bak Makefile; then \
echo 'sample Makefile was already up to date'; \
mv -f Makefile.bak Makefile; \
else \
rm -f Makefile.tmp; \
mv Makefile Makefile.tmp; \
if [ -d RCS ]; then \
co -l Makefile; \
fi; \
mv Makefile.tmp Makefile; \
if [ -d RCS ]; then \
echo new sample Makefile formed, you need to check it in; \
fi; \
fi
clean:
-rm -f makedep.out
clobber:
-rm -f ${SCRIPT}
install: all
-${Q}if [ ! -d ${BINDIR} ]; then \
echo mkdir ${BINDIR}; \
mkdir ${BINDIR}; \
else \
true; \
fi
-${Q}if [ ! -d ${SCRIPTDIR} ]; then \
echo mkdir ${SCRIPTDIR}; \
mkdir ${SCRIPTDIR}; \
else \
true; \
fi
${Q}for i in ${SCRIPT}; do \
echo rm -f ${SCRIPTDIR}/$$i; \
rm -f ${SCRIPTDIR}/$$i; \
echo cp $$i ${SCRIPTDIR}; \
cp $$i ${SCRIPTDIR}; \
echo ${CHMOD} 0555 ${SCRIPTDIR}/$$i; \
${CHMOD} 0555 ${SCRIPTDIR}/$$i; \
done
# DO NOT DELETE THIS LINE -- make depend depends on it.
mersenne: mersenne.calc
rm -f $@
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
${CHMOD} +x $@
piforever: piforever.calc
rm -f $@
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
${CHMOD} +x $@
plus: plus.calc
rm -f $@
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
${CHMOD} +x $@
simple: simple.calc
rm -f $@
${SED} -e "1s:^#!/usr/local/src/cmd/calc/calc:#!${BINDIR}/calc:" $?>$@
${CHMOD} +x $@

View File

@@ -1,47 +0,0 @@
#!/usr/local/src/cmd/calc/calc -S
#
# mersenne - print the value of a mersenne number
#
# Copyright (C) 1999 Landon Curt Noll
#
# Calc is open software; you can redistribute it and/or modify it under
# the terms of the version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
#
# Calc is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
# Public License for more details.
#
# A copy of version 2.1 of the GNU Lesser General Public License is
# distributed with calc under the filename COPYING-LGPL. You should have
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.1 $
# @(#) $Id: mersenne.calc,v 29.1 1999/12/14 09:15:35 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/mersenne.calc,v $
#
# Under source code control: 1999/11/30 00:09:01;
# File existed as early as: 1999
#
# chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
# Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
# usage:
# mersenne exp
/*
* parse args
*/
if (argv() != 1) {
/* we include the name of this script in the error message */
fprintf(files(2), "usage: %s exp\n", config("program"));
abort "wrong number of args";
}
/*
* print the decimal value of 2^n-1
*/
print "2^": argv(0) : "-1 =", 2^eval(argv(0))-1;

View File

@@ -1,37 +0,0 @@
#!/usr/local/src/cmd/calc/calc -S
#
# piforever - print digits of pi forever (or as long as your mem/cpu allow)
#
# Copyright (C) 1999 Landon Curt Noll
#
# Calc is open software; you can redistribute it and/or modify it under
# the terms of the version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
#
# Calc is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
# Public License for more details.
#
# A copy of version 2.1 of the GNU Lesser General Public License is
# distributed with calc under the filename COPYING-LGPL. You should have
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.1 $
# @(#) $Id: piforever.calc,v 29.1 1999/12/14 09:15:36 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/piforever.calc,v $
#
# Under source code control: 1999/11/30 00:11:36
# File existed as early as: 1999
#
# chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
# Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
# usage:
# piforever
read -once pi.cal
print "pi ~= ":;
piforever();

View File

@@ -1,53 +0,0 @@
#!/usr/local/src/cmd/calc/calc -S
#
# plus - add two or more arguments together
#
# Copyright (C) 1999 Landon Curt Noll
#
# Calc is open software; you can redistribute it and/or modify it under
# the terms of the version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
#
# Calc is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
# Public License for more details.
#
# A copy of version 2.1 of the GNU Lesser General Public License is
# distributed with calc under the filename COPYING-LGPL. You should have
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.1 $
# @(#) $Id: plus.calc,v 29.1 1999/12/14 09:15:36 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/plus.calc,v $
#
# Under source code control: 1999/11/29 10:22:37
# File existed as early as: 1999
#
# chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
# Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
# usage:
# plus val ...
/*
* parse args
*/
if (argv() < 1) {
/* we include the name of this script in the error message */
fprintf(files(2), "usage: %s value ...\n", config("program"));
abort "not enough args";
}
/*
* print the sum of the 2 args
*
* Since args are strings, we must eval them before using them numerically.
*/
sum = 0;
for (i=0; i < argv(); ++i) {
sum += eval(argv(i));
}
print sum;

View File

@@ -1,35 +0,0 @@
#!/usr/local/src/cmd/calc/calc -S
#
# simple - an example of a simple calc shell script
#
# Copyright (C) 1999 Landon Curt Noll
#
# Calc is open software; you can redistribute it and/or modify it under
# the terms of the version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
#
# Calc is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
# Public License for more details.
#
# A copy of version 2.1 of the GNU Lesser General Public License is
# distributed with calc under the filename COPYING-LGPL. You should have
# received a copy with calc; if not, write to Free Software Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
# @(#) $Revision: 29.1 $
# @(#) $Id: simple.calc,v 29.1 1999/12/14 09:15:36 chongo Exp $
# @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/simple.calc,v $
#
# Under source code control: 1999/11/29 10:22:37
# File existed as early as: 1999
#
# chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
# Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
/*
* This is an example of a simple calc shell script.
*/
print "The simple calc shell script works!"

View File

@@ -1,34 +1,35 @@
/* /*
* custom - interface for custom software and hardware interfaces * Copyright (c) 1997 by Landon Curt Noll. All Rights Reserved.
* *
* Copyright (C) 1999 Landon Curt Noll * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
* *
* Calc is open software; you can redistribute it and/or modify it under * supporting documentation
* the terms of the version 2.1 of the GNU Lesser General Public License * source copies
* as published by the Free Software Foundation. * source works derived from this source
* binaries derived from this source or from derived source
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* Public License for more details. * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
* *
* A copy of version 2.1 of the GNU Lesser General Public License is * Comments, suggestions, bug fixes and questions about these routines
* distributed with calc under the filename COPYING-LGPL. You should have * are welcome. Send EMail to the address given below.
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* *
* @(#) $Revision: 29.1 $ * Happy bit twiddling,
* @(#) $Id: custom.c,v 29.1 1999/12/14 09:15:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/custom.c,v $
* *
* Under source code control: 1997/03/03 04:53:08 * Landon Curt Noll
* File existed as early as: 1997 * http://reality.sgi.com/chongo/
* *
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/ * chongo <was here> /\../\
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
/* these include files are needed regardless of CUSTOM */ /* these include files are needed regardless of CUSTOM */
#include "have_const.h" #include "have_const.h"
#include "value.h" #include "value.h"

View File

@@ -1,31 +1,37 @@
/* /*
* custom - interface for custom software and hardware interfaces * Copyright (c) 1997 by Landon Curt Noll. All Rights Reserved.
* *
* Copyright (C) 1999 Landon Curt Noll * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
* *
* Calc is open software; you can redistribute it and/or modify it under * supporting documentation
* the terms of the version 2.1 of the GNU Lesser General Public License * source copies
* as published by the Free Software Foundation. * source works derived from this source
* binaries derived from this source or from derived source
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* Public License for more details. * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
* *
* A copy of version 2.1 of the GNU Lesser General Public License is * Prior to calc 2.9.3t9, these routines existed as a calc library called
* distributed with calc under the filename COPYING-LGPL. You should have * cryrand.cal. They have been rewritten in C for performance as well
* received a copy with calc; if not, write to Free Software Foundation, Inc. * as to make them available directly from libcalc.a.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* *
* @(#) $Revision: 29.1 $ * Comments, suggestions, bug fixes and questions about these routines
* @(#) $Id: custom.h,v 29.1 1999/12/14 09:15:36 chongo Exp $ * are welcome. Send EMail to the address given below.
* @(#) $Source: /usr/local/src/cmd/calc/RCS/custom.h,v $
* *
* Under source code control: 1997/03/03 04:53:08 * Happy bit twiddling,
* File existed as early as: 1997
* *
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/ * Landon Curt Noll
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/ * http://reality.sgi.com/chongo/
*
* chongo <was here> /\../\
*/ */
/* /*

View File

@@ -1,11 +1,31 @@
Custom calc resource files #
-------------------------- # Copyright (c) 1999 Landon Curt Noll
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby granted,
# provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
#
# supporting documentation
# source copies
# source works derived from this source
# binaries derived from this source or from derived source
#
# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# chongo was here /\../\ http://reality.sgi.com/chongo/
The following custom calc resource files are provided because they serve The following custom calc library files are provided because they serve
as examples of how use the custom interface. The custom interface as examples of how use the custom interface. The custom interface
allows for machine dependent and/or non-portable code to be added as allows for machine dependent and/or non-portable code to be added as
builtins to the calc program. A few example custom functions and builtins to the calc program. A few example custom functions and
resource files are shipped with calc to provide you with examples. library files are shipped with calc to provide you with examples.
By default, the custom builtin returns an error. Calc have been By default, the custom builtin returns an error. Calc have been
built with: built with:
@@ -19,8 +39,8 @@ must be invoked with a -C argument:
when it is run. when it is run.
See the ../cal/README or "help resource" for information about See the ../lib/README or "help stdlib" for information about
calc resource standards and guidelines. calc library standards and guidelines.
=-= =-=
@@ -40,29 +60,3 @@ pzasusb8.cal
Run custom("pzasusb8") on a standard set of data, print Endian Run custom("pzasusb8") on a standard set of data, print Endian
related information and print value size information. related information and print value size information.
## Copyright (C) 1999 Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL. You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.1 $
## @(#) $Id: CUSTOM_CAL,v 29.1 1999/12/14 09:15:36 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/CUSTOM_CAL,v $
##
## Under source code control: 1997/03/08 20:51:32
## File existed as early as: 1997
##
## chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
## Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/

View File

@@ -1,5 +1,4 @@
Guidelines for adding custom functions Guidelines for adding custom functions
--------------------------------------
Step 0: Determine if is should it be done? Step 0: Determine if is should it be done?
@@ -18,9 +17,9 @@ Step 0: Determine if is should it be done?
So before you go to step 1, ask yourself: So before you go to step 1, ask yourself:
+ Can I implement this as a calc resource file or calc shell script? + Can I implement this as a calc library script?
If Yes, write the shell script or resource file and be done with it. If Yes, write the script and be done with it.
If No, continue to the next question ... If No, continue to the next question ...
+ Does it require the use of non-portable features, + Does it require the use of non-portable features,
@@ -618,29 +617,3 @@ Step 12: Contribute
and consider submitting your custom function for possible and consider submitting your custom function for possible
inclusion in later versions of calc. inclusion in later versions of calc.
## Copyright (C) 1999 Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL. You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.1 $
## @(#) $Id: HOW_TO_ADD,v 29.1 1999/12/14 09:15:36 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/HOW_TO_ADD,v $
##
## Under source code control: 1997/03/10 03:03:21
## File existed as early as: 1997
##
## chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
## Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/

View File

@@ -1,44 +1,43 @@
#!/bin/make
# #
# custom - makefile for calc custom routines # custom - makefile for calc custom routines
# #
# Copyright (C) 1999 Landon Curt Noll # Copyright (c) 1997 Landon Curt Noll
# #
# Calc is open software; you can redistribute it and/or modify it under # Permission to use, copy, modify, and distribute this software and
# the terms of the version 2.1 of the GNU Lesser General Public License # its documentation for any purpose and without fee is hereby granted,
# as published by the Free Software Foundation. # provided that the above copyright, this permission notice and text
# this comment, and the disclaimer below appear in all of the following:
# #
# Calc is distributed in the hope that it will be useful, but WITHOUT # supporting documentation
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # source copies
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General # source works derived from this source
# Public License for more details. # binaries derived from this source or from derived source
# #
# A copy of version 2.1 of the GNU Lesser General Public License is # LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# distributed with calc under the filename COPYING-LGPL. You should have # INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
# received a copy with calc; if not, write to Free Software Foundation, Inc. # EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. # CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
# #
# @(#) $Revision: 29.1 $ # Comments, suggestions, bug fixes and questions about these routines
# @(#) $Id: Makefile,v 29.1 1999/12/14 09:15:36 chongo Exp $ # are welcome. Send EMail to the address given below.
# @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/Makefile,v $
# #
# Under source code control: 1997/03/09 02:28:54 # Happy bit twiddling,
# File existed as early as: 1997
# #
# chongo <was here> /\oo/\ http://reality.sgi.com/chongo/ # Landon Curt Noll
# Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/ # http://reality.sgi.com/chongo/
# #
# calculator by David I. Bell with help/mods from others # chongo <was here> /\../\
# Makefile by Landon Curt Noll
############################################################################## ##############################################################################
#-=-=-=-=-=-=-=-=- You may want to change some values below -=-=-=-=-=-=-=-=-# #-=-=-=-=-=-=-=-=- You may want to change some values below -=-=-=-=-=-=-=-=-#
############################################################################## ##############################################################################
# The custom calc resource files to install # The custom calc library files to install
# #
# Put your custom calc resource files here. # Put your custom calc library files here.
# #
CUSTOM_CALC_FILES= argv.cal halflen.cal pzasusb8.cal CUSTOM_CALC_FILES= argv.cal halflen.cal pzasusb8.cal
@@ -159,7 +158,7 @@ NO_SHARED=
# a default here just in case you want to build from this directory. # a default here just in case you want to build from this directory.
# #
# Some systems require one to use ranlib to add a symbol table to # Some systems require one to use ranlib to add a symbol table to
# a *.a link library. Set RANLIB to the utility that performs this action. # a *.a library. Set RANLIB to the utility that performs this action.
# Set RANLIB to : if your system does not need such a utility. # Set RANLIB to : if your system does not need such a utility.
# #
#RANLIB=ranlib #RANLIB=ranlib
@@ -218,6 +217,7 @@ ALLOW_CUSTOM= -DCUSTOM
# CFLAGS are all flags given to ${CC} [[often includes CCOPT, CCWARN, CCMISC]] # CFLAGS are all flags given to ${CC} [[often includes CCOPT, CCWARN, CCMISC]]
# ICFLAGS are given to ${CC} for intermediate progs # ICFLAGS are given to ${CC} for intermediate progs
# #
# LCFLAGS are CC-style flags for ${LINT}
# LDFLAGS are flags given to ${CC} for linking .o files # LDFLAGS are flags given to ${CC} for linking .o files
# ILDFLAGS are flags given to ${CC} for linking .o files for intermediate progs # ILDFLAGS are flags given to ${CC} for linking .o files for intermediate progs
# #
@@ -234,6 +234,7 @@ CCMISC=
CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC} ${ALLOW_CUSTOM} CFLAGS= ${CCWARN} ${CCOPT} ${CCMISC} ${ALLOW_CUSTOM}
ICFLAGS= ${CCWARN} ${CCMISC} ICFLAGS= ${CCWARN} ${CCMISC}
# #
LCFLAGS=
LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED} LDFLAGS= ${NO_SHARED} ${LD_NO_SHARED}
ILDFLAGS= ILDFLAGS=
# #
@@ -284,7 +285,7 @@ H_SRC= ${CUSTOM_H_SRC}
DISTLIST= ${CUSTCALC_SRC} ${CUSTOM_CALC_FILES} ${CUSTOM_HELP} \ DISTLIST= ${CUSTCALC_SRC} ${CUSTOM_CALC_FILES} ${CUSTOM_HELP} \
${INSTALL_H_SRC} CUSTOM_CAL HOW_TO_ADD ${MAKE_FILE} ${INSTALL_H_SRC} CUSTOM_CAL HOW_TO_ADD ${MAKE_FILE}
# These files are used to make (but not built) a calc .a link library # These files are used to make (but not built) a calc .a library
# #
CALCLIBLIST= ${CUSTCALC_SRC} ${INSTALL_H_SRC} ${MAKE_FILE} HOW_TO_ADD CALCLIBLIST= ${CUSTCALC_SRC} ${INSTALL_H_SRC} ${MAKE_FILE} HOW_TO_ADD
@@ -294,14 +295,9 @@ TARGETS= libcustcalc.a ${CUSTCALC_OBJ}
# required vars # required vars
# #
SHELL= /bin/sh SHELL = /bin/sh
MAKE_FILE= Makefile
# standard tools
#
SED= sed SED= sed
MAKEDEPEND= makedepend MAKEDEPEND= makedepend
CHMOD= chmod
SORT= sort SORT= sort
## ##
@@ -496,32 +492,32 @@ install: all
rm -f ${CUSTOMLIBDIR}/$$i; \ rm -f ${CUSTOMLIBDIR}/$$i; \
echo cp $$i ${CUSTOMLIBDIR}; \ echo cp $$i ${CUSTOMLIBDIR}; \
cp $$i ${CUSTOMLIBDIR}; \ cp $$i ${CUSTOMLIBDIR}; \
echo ${CHMOD} 0444 ${CUSTOMLIBDIR}/$$i; \ echo chmod 0444 ${CUSTOMLIBDIR}/$$i; \
${CHMOD} 0444 ${CUSTOMLIBDIR}/$$i; \ chmod 0444 ${CUSTOMLIBDIR}/$$i; \
done done
${Q}for i in ${CUSTOM_CALC_FILES}; do \ ${Q}for i in ${CUSTOM_CALC_FILES}; do \
echo rm -f ${CUSTOMLIBDIR}/$$i; \ echo rm -f ${CUSTOMLIBDIR}/$$i; \
rm -f ${CUSTOMLIBDIR}/$$i; \ rm -f ${CUSTOMLIBDIR}/$$i; \
echo cp $$i ${CUSTOMLIBDIR}; \ echo cp $$i ${CUSTOMLIBDIR}; \
cp $$i ${CUSTOMLIBDIR}; \ cp $$i ${CUSTOMLIBDIR}; \
echo ${CHMOD} 0444 ${CUSTOMLIBDIR}/$$i; \ echo chmod 0444 ${CUSTOMLIBDIR}/$$i; \
${CHMOD} 0444 ${CUSTOMLIBDIR}/$$i; \ chmod 0444 ${CUSTOMLIBDIR}/$$i; \
done done
${Q}for i in ${CUSTOM_HELP}; do \ ${Q}for i in ${CUSTOM_HELP}; do \
echo rm -f ${CUSTOMHELPDIR}/$$i; \ echo rm -f ${CUSTOMHELPDIR}/$$i; \
rm -f ${CUSTOMHELPDIR}/$$i; \ rm -f ${CUSTOMHELPDIR}/$$i; \
echo cp $$i ${CUSTOMHELPDIR}; \ echo cp $$i ${CUSTOMHELPDIR}; \
cp $$i ${CUSTOMHELPDIR}; \ cp $$i ${CUSTOMHELPDIR}; \
echo ${CHMOD} 0444 ${CUSTOMHELPDIR}/$$i; \ echo chmod 0444 ${CUSTOMHELPDIR}/$$i; \
${CHMOD} 0444 ${CUSTOMHELPDIR}/$$i; \ chmod 0444 ${CUSTOMHELPDIR}/$$i; \
done done
-${Q}if [ ! -z ${ALLOW_CUSTOM} ]; then \ -${Q}if [ ! -z ${ALLOW_CUSTOM} ]; then \
echo "rm -f ${CUSTOMLIBDIR}/libcustcalc.a"; \ echo "rm -f ${CUSTOMLIBDIR}/libcustcalc.a"; \
rm -f ${CUSTOMLIBDIR}/libcustcalc.a; \ rm -f ${CUSTOMLIBDIR}/libcustcalc.a; \
echo "cp libcustcalc.a ${CUSTOMLIBDIR}/libcustcalc.a"; \ echo "cp libcustcalc.a ${CUSTOMLIBDIR}/libcustcalc.a"; \
cp libcustcalc.a ${CUSTOMLIBDIR}/libcustcalc.a; \ cp libcustcalc.a ${CUSTOMLIBDIR}/libcustcalc.a; \
echo "${CHMOD} 0644 ${CUSTOMLIBDIR}/libcustcalc.a"; \ echo "chmod 0644 ${CUSTOMLIBDIR}/libcustcalc.a"; \
${CHMOD} 0644 ${CUSTOMLIBDIR}/libcustcalc.a; \ chmod 0644 ${CUSTOMLIBDIR}/libcustcalc.a; \
echo "${RANLIB} ${CUSTOMLIBDIR}/libcustcalc.a"; \ echo "${RANLIB} ${CUSTOMLIBDIR}/libcustcalc.a"; \
${RANLIB} ${CUSTOMLIBDIR}/libcustcalc.a; \ ${RANLIB} ${CUSTOMLIBDIR}/libcustcalc.a; \
fi fi

View File

@@ -39,29 +39,3 @@ LIBRARY
SEE ALSO SEE ALSO
custom custom
## Copyright (C) 1999 Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL. You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.1 $
## @(#) $Id: argv,v 29.1 1999/12/14 09:15:36 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/argv,v $
##
## Under source code control: 1997/03/09 20:28:01
## File existed as early as: 1997
##
## chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
## Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/

View File

@@ -1,41 +1,25 @@
/*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted.
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\ http://reality.sgi.com/chongo/
*/
/* /*
* argv - print information about various args * argv - print information about various args
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: argv.cal,v 29.1 1999/12/14 09:15:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/argv.cal,v $
*
* Under source code control: 1997/03/10 00:27:17
* File existed as early as: 1997
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* This file is part of the custom sample calc files. * This file is part of the custom sample calc files.
* *
* NOTE: You must use a calc that was compiled with ALLOW_CUSTOM= -DCUSTOM * NOTE: You must use a calc that was compiled with ALLOW_CUSTOM= -DCUSTOM
* and run with a -C arg. * and run with a -C arg.
*/ */
define argv() define argv()
{ {
local i; /* arg number */ local i; /* arg number */
@@ -55,6 +39,6 @@ define argv()
return i-1; return i-1;
} }
if (config("resource_debug") >= 0) { if (config("lib_debug") >= 0) {
print "argv(var, ...) defined"; print "argv(var, ...) defined";
} }

View File

@@ -1,34 +1,26 @@
/* /*
* c_argv - a custom function display info about its args * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted.
* *
* Copyright (C) 1999 Landon Curt Noll * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
* *
* Calc is open software; you can redistribute it and/or modify it under * Comments, suggestions, bug fixes and questions about these routines
* the terms of the version 2.1 of the GNU Lesser General Public License * are welcome. Send EMail to the address given below.
* as published by the Free Software Foundation.
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * Happy bit twiddling,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
* *
* A copy of version 2.1 of the GNU Lesser General Public License is * Landon Curt Noll
* distributed with calc under the filename COPYING-LGPL. You should have * http://reality.sgi.com/chongo/
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* *
* @(#) $Revision: 29.1 $ * chongo <was here> /\../\
* @(#) $Id: c_argv.c,v 29.1 1999/12/14 09:15:36 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/c_argv.c,v $
*
* Under source code control: 1997/03/09 20:27:37
* File existed as early as: 1997
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#if defined(CUSTOM) #if defined(CUSTOM)
#include <stdio.h> #include <stdio.h>

View File

@@ -1,34 +1,26 @@
/* /*
* c_devnull - a custom function that does nothing * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted.
* *
* Copyright (C) 1999 Landon Curt Noll * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
* *
* Calc is open software; you can redistribute it and/or modify it under * Comments, suggestions, bug fixes and questions about these routines
* the terms of the version 2.1 of the GNU Lesser General Public License * are welcome. Send EMail to the address given below.
* as published by the Free Software Foundation.
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * Happy bit twiddling,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
* *
* A copy of version 2.1 of the GNU Lesser General Public License is * Landon Curt Noll
* distributed with calc under the filename COPYING-LGPL. You should have * http://reality.sgi.com/chongo/
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* *
* @(#) $Revision: 29.1 $ * chongo <was here> /\../\
* @(#) $Id: c_devnull.c,v 29.1 1999/12/14 09:15:37 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/c_devnull.c,v $
*
* Under source code control: 1997/03/09 17:49:12
* File existed as early as: 1997
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#if defined(CUSTOM) #if defined(CUSTOM)

View File

@@ -1,34 +1,26 @@
/* /*
* c_help - custom help function * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted.
* *
* Copyright (C) 1999 Landon Curt Noll * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
* *
* Calc is open software; you can redistribute it and/or modify it under * Comments, suggestions, bug fixes and questions about these routines
* the terms of the version 2.1 of the GNU Lesser General Public License * are welcome. Send EMail to the address given below.
* as published by the Free Software Foundation.
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * Happy bit twiddling,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
* *
* A copy of version 2.1 of the GNU Lesser General Public License is * Landon Curt Noll
* distributed with calc under the filename COPYING-LGPL. You should have * http://reality.sgi.com/chongo/
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* *
* @(#) $Revision: 29.1 $ * chongo <was here> /\../\
* @(#) $Id: c_help.c,v 29.1 1999/12/14 09:15:37 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/c_help.c,v $
*
* Under source code control: 1997/03/09 05:25:41
* File existed as early as: 1997
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#if defined(CUSTOM) #if defined(CUSTOM)

View File

@@ -1,33 +1,10 @@
/* /*
* c_pzasusb8 - print numereator as a string of USB8s * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted.
* *
* Copyright (C) 1999 Ernest Bowen * Ernest Bowen, following Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: c_pzasusb8.c,v 29.1 1999/12/14 09:15:37 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/c_pzasusb8.c,v $
*
* Under source code control: 1999/10/06 03:12:25
* File existed as early as: 1999
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#if defined(CUSTOM) #if defined(CUSTOM)
#include <stdio.h> #include <stdio.h>
@@ -38,7 +15,8 @@
#include "../zmath.h" #include "../zmath.h"
/* /*
* c_pzasusb8 - print numereator as a string of USB8s * c_pzasusb8 - print numereator of real as if its array of HALFs were
* a string of USB8s
* *
* given: * given:
* count = 1; * count = 1;

View File

@@ -1,34 +1,26 @@
/* /*
* c_sysinfo - names and values of selected #defines * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted.
* *
* Copyright (C) 1999 Landon Curt Noll * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
* *
* Calc is open software; you can redistribute it and/or modify it under * Comments, suggestions, bug fixes and questions about these routines
* the terms of the version 2.1 of the GNU Lesser General Public License * are welcome. Send EMail to the address given below.
* as published by the Free Software Foundation.
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * Happy bit twiddling,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
* *
* A copy of version 2.1 of the GNU Lesser General Public License is * Landon Curt Noll
* distributed with calc under the filename COPYING-LGPL. You should have * http://reality.sgi.com/chongo/
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* *
* @(#) $Revision: 29.1 $ * chongo <was here> /\../\
* @(#) $Id: c_sysinfo.c,v 29.1 1999/12/14 09:15:37 chongo Exp chongo $
* @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/c_sysinfo.c,v $
*
* Under source code control: 1997/03/09 23:14:40
* File existed as early as: 1997
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#if defined(CUSTOM) #if defined(CUSTOM)
#include <stdio.h> #include <stdio.h>
@@ -73,6 +65,7 @@ static struct infoname sys_info[] = {
{"BLK_CHUNKSIZE", "default allocation chunk size for blocks", NULL, (FULL)BLK_CHUNKSIZE}, {"BLK_CHUNKSIZE", "default allocation chunk size for blocks", NULL, (FULL)BLK_CHUNKSIZE},
{"BLK_DEF_MAXPRINT", "default block octets to print", NULL, (FULL)BLK_DEF_MAXPRINT}, {"BLK_DEF_MAXPRINT", "default block octets to print", NULL, (FULL)BLK_DEF_MAXPRINT},
{"BLUM_PREGEN", "non-default predefined Blum generators", NULL, (FULL)BLUM_PREGEN}, {"BLUM_PREGEN", "non-default predefined Blum generators", NULL, (FULL)BLUM_PREGEN},
{"BOOL_B64", "if we have 64 bit type (TRUE or FALSE)", NULL, (FULL)BOOL_B64},
{"CALCEXT", "extension for files read in", CALCEXT, (FULL)0}, {"CALCEXT", "extension for files read in", CALCEXT, (FULL)0},
{"CALC_BYTE_ORDER", "Byte order (LITTLE_ENDIAN or BIG_ENDIAN)", NULL, (FULL)CALC_BYTE_ORDER}, {"CALC_BYTE_ORDER", "Byte order (LITTLE_ENDIAN or BIG_ENDIAN)", NULL, (FULL)CALC_BYTE_ORDER},
{"CUSTOMHELPDIR", "location of the custom help directory", CUSTOMHELPDIR, (FULL)0}, {"CUSTOMHELPDIR", "location of the custom help directory", CUSTOMHELPDIR, (FULL)0},
@@ -84,7 +77,7 @@ static struct infoname sys_info[] = {
{"DEFAULTSHELL", "default shell to use", DEFAULTSHELL, (FULL)0}, {"DEFAULTSHELL", "default shell to use", DEFAULTSHELL, (FULL)0},
{"DEV_BITS", "device number size in bits", NULL, (FULL)DEV_BITS}, {"DEV_BITS", "device number size in bits", NULL, (FULL)DEV_BITS},
{"DISPLAY_DEFAULT", "default digits for float display", NULL, (FULL)DISPLAY_DEFAULT}, {"DISPLAY_DEFAULT", "default digits for float display", NULL, (FULL)DISPLAY_DEFAULT},
{"ECHO_PROG", "where the echo command is located", ECHO_PROG, (FULL)0}, {"ECHO", "where the echo command is located", ECHO, (FULL)0},
{"EPSILONPREC_DEFAULT", "2^-EPSILON_DEFAULT <= EPSILON_DEFAULT", NULL, (FULL)EPSILONPREC_DEFAULT}, {"EPSILONPREC_DEFAULT", "2^-EPSILON_DEFAULT <= EPSILON_DEFAULT", NULL, (FULL)EPSILONPREC_DEFAULT},
{"EPSILON_DEFAULT", "allowed error for float calculations", EPSILON_DEFAULT, (FULL)0}, {"EPSILON_DEFAULT", "allowed error for float calculations", EPSILON_DEFAULT, (FULL)0},
{"ERRMAX", "default errmax value", NULL, (FULL)ERRMAX}, {"ERRMAX", "default errmax value", NULL, (FULL)ERRMAX},
@@ -314,12 +307,14 @@ static void
dump_name_value(void) dump_name_value(void)
{ {
struct infoname *p; /* current infoname */ struct infoname *p; /* current infoname */
char *fmt; /* printf value format */
/* dump the entire table */ /* dump the entire table */
for (p = sys_info; p->name != NULL; ++p) { for (p = sys_info; p->name != NULL; ++p) {
if (p->str == NULL) { if (p->str == NULL) {
#if LONG_BITS == FULL_BITS || FULL_BITS == 32 || !defined(HAVE_LONGLONG) #if LONG_BITS == FULL_BITS || FULL_BITS == 32 || !defined(HAVE_LONGLONG)
printf("%s%-23s\t%-8lu\t(0x%lx)\n", fmt = "%s%-23s\t%-8lu\t(0x%lx)\n";
printf(fmt,
(conf->tab_ok ? "\t" : ""), p->name, (conf->tab_ok ? "\t" : ""), p->name,
(unsigned long)p->nmbr, (unsigned long)p->nmbr,
(unsigned long)p->nmbr); (unsigned long)p->nmbr);
@@ -331,17 +326,17 @@ dump_name_value(void)
* a 64 bit value do not support the %lld type. * a 64 bit value do not support the %lld type.
* So we will only try %lld if %ld does not work. * So we will only try %lld if %ld does not work.
*/ */
# if defined(L64_FORMAT) if (l_format < 0) {
printf("%s%-23s\t%-8lu\t(0x%lx)\n", /* %ld prints lower 32 bits only, use %lld */
fmt = "%s%-23s\t%-8llu\t(0x%llx)\n";
} else {
/* %ld prints all 64 bits, use %ld */
fmt = "%s%-23s\t%-8lu\t(0x%lx)\n";
}
printf(fmt,
(conf->tab_ok ? "\t" : ""), p->name, (conf->tab_ok ? "\t" : ""), p->name,
(unsigned long long)p->nmbr, (unsigned long long)p->nmbr,
(unsigned long long)p->nmbr); (unsigned long long)p->nmbr);
# else /* L64_FORMAT */
printf("%s%-23s\t%-8llu\t(0x%llx)\n",
(conf->tab_ok ? "\t" : ""), p->name,
(unsigned long long)p->nmbr,
(unsigned long long)p->nmbr);
# endif /* L64_FORMAT */
#endif #endif
} else { } else {
printf("%s%-23s\t\"%s\"\n", printf("%s%-23s\t\"%s\"\n",
@@ -359,29 +354,36 @@ static void
dump_mening_value(void) dump_mening_value(void)
{ {
struct infoname *p; /* current infoname */ struct infoname *p; /* current infoname */
char *fmt; /* printf value format */
/* dump the entire table */ /* dump the entire table */
for (p = sys_info; p->name != NULL; ++p) { for (p = sys_info; p->name != NULL; ++p) {
if (p->str == NULL) { if (p->str == NULL) {
#if LONG_BITS == FULL_BITS || FULL_BITS == 32 || !defined(HAVE_LONGLONG) #if LONG_BITS == FULL_BITS || FULL_BITS == 32 || !defined(HAVE_LONGLONG)
printf("%s%-36.36s\t%-8lu\t(0x%lx)\n", fmt = "%s%-36.36s\t%-8lu\t(0x%lx)\n";
printf(fmt,
(conf->tab_ok ? "\t" : ""), p->meaning, (conf->tab_ok ? "\t" : ""), p->meaning,
(unsigned long)p->nmbr, (unsigned long)p->nmbr,
(unsigned long)p->nmbr); (unsigned long)p->nmbr);
#else #else
# if defined(L64_FORMAT) /*
/* %ld prints all 64 bits, use %ld */ * Determine of %ld can print a 64 bit long long.
printf("%s%-36.36s\t%-8lu\t(0x%lx)\n", *
* Some systems that can make use of %ld to print a
* a 64 bit value do not support the %lld type.
* So we will only try %lld if %ld does not work.
*/
if (l_format < 0) {
/* %ld prints lower 32 bits only, use %lld */
fmt = "%s%-36.36s\t%-8llu\t(0x%llx)\n";
} else {
/* %ld prints all 64 bits, use %ld */
fmt = "%s%-36.36s\t%-8lu\t(0x%lx)\n";
}
printf(fmt,
(conf->tab_ok ? "\t" : ""), p->meaning, (conf->tab_ok ? "\t" : ""), p->meaning,
(unsigned long long)p->nmbr, (unsigned long long)p->nmbr,
(unsigned long long)p->nmbr); (unsigned long long)p->nmbr);
# else /* L64_FORMAT */
/* %ld prints lower 32 bits only, use %lld */
printf("%s%-36.36s\t%-8llu\t(0x%llx)\n",
(conf->tab_ok ? "\t" : ""), p->meaning,
(unsigned long long)p->nmbr,
(unsigned long long)p->nmbr);
# endif /* L64_FORMAT */
#endif #endif
} else { } else {
printf("%s%-36.36s\t\"%s\"\n", printf("%s%-36.36s\t\"%s\"\n",

View File

@@ -1,31 +1,33 @@
/* /*
* custtbl - custom interface table * Copyright (c) 1997 by Landon Curt Noll. All Rights Reserved.
* *
* Copyright (C) 1999 Landon Curt Noll * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
* *
* Calc is open software; you can redistribute it and/or modify it under * supporting documentation
* the terms of the version 2.1 of the GNU Lesser General Public License * source copies
* as published by the Free Software Foundation. * source works derived from this source
* binaries derived from this source or from derived source
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* Public License for more details. * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
* *
* A copy of version 2.1 of the GNU Lesser General Public License is * Comments, suggestions, bug fixes and questions about these routines
* distributed with calc under the filename COPYING-LGPL. You should have * are welcome. Send EMail to the address given below.
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* *
* @(#) $Revision: 29.1 $ * Happy bit twiddling,
* @(#) $Id: custtbl.c,v 29.1 1999/12/14 09:15:37 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/custtbl.c,v $
* *
* Under source code control: 1997/03/09 02:28:54 * Landon Curt Noll
* File existed as early as: 1997 * http://reality.sgi.com/chongo/
* *
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/ * chongo <was here> /\../\
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */

View File

@@ -25,29 +25,3 @@ LIBRARY
SEE ALSO SEE ALSO
custom custom
## Copyright (C) 1999 Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL. You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.1 $
## @(#) $Id: devnull,v 29.1 1999/12/14 09:15:37 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/devnull,v $
##
## Under source code control: 1997/03/09 17:49:12
## File existed as early as: 1997
##
## chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
## Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/

View File

@@ -1,41 +1,25 @@
/*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted.
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\ http://reality.sgi.com/chongo/
*/
/* /*
* halflen - determine the length of numeric value in HALFs * halflen - determine the length of numeric value in HALFs
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: halflen.cal,v 29.1 1999/12/14 09:15:37 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/halflen.cal,v $
*
* Under source code control: 1997/03/08 20:51:32
* File existed as early as: 1997
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* This file is part of the custom sample calc files. * This file is part of the custom sample calc files.
* *
* NOTE: You must use a calc that was compiled with ALLOW_CUSTOM= -DCUSTOM * NOTE: You must use a calc that was compiled with ALLOW_CUSTOM= -DCUSTOM
* and run with a -C arg. * and run with a -C arg.
*/ */
define halflen(num) define halflen(num)
{ {
local baseb = custom("sysinfo","BASEB"); /* bit len of a HALF */ local baseb = custom("sysinfo","BASEB"); /* bit len of a HALF */
@@ -64,6 +48,6 @@ define halflen(num)
} }
} }
if (config("resource_debug") >= 0) { if (config("lib_debug") >= 0) {
print "halflen(num) defined"; print "halflen(num) defined";
} }

View File

@@ -26,29 +26,3 @@ LIBRARY
SEE ALSO SEE ALSO
custom custom
## Copyright (C) 1999 Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL. You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.1 $
## @(#) $Id: help,v 29.1 1999/12/14 09:15:37 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/help,v $
##
## Under source code control: 1997/03/09 06:03:58
## File existed as early as: 1997
##
## chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
## Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/

View File

@@ -48,29 +48,3 @@ LIBRARY
SEE ALSO SEE ALSO
custom custom
## Copyright (C) 1999 Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL. You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.1 $
## @(#) $Id: pzasusb8,v 29.1 1999/12/14 09:15:37 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/pzasusb8,v $
##
## Under source code control: 1999/10/06 04:05:43
## File existed as early as: 1999
##
## chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
## Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/

View File

@@ -1,36 +1,10 @@
/* /*
* pzasusb8 - print numereator as a string of USB8s * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted.
* *
* Copyright (C) 1999 Ernest Bowen and Landon Curt Noll * Ernest Bowen, following Landon Curt Noll
*
* Primary author: Ernest Bowen
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: pzasusb8.cal,v 29.1 1999/12/14 09:15:37 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/pzasusb8.cal,v $
*
* Under source code control: 1999/10/06 03:11:12
* File existed as early as: 1998
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
print "p(n) prints array in which numerator of n is stored as a"; print "p(n) prints array in which numerator of n is stored as a";
print "sequence of 2-hex-digits representing unsigned characters."; print "sequence of 2-hex-digits representing unsigned characters.";
print "h(n) printx n in hex notation. This should be the same as"; print "h(n) printx n in hex notation. This should be the same as";

View File

@@ -52,29 +52,3 @@ LIBRARY
SEE ALSO SEE ALSO
custom custom
## Copyright (C) 1999 Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL. You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
##
## @(#) $Revision: 29.1 $
## @(#) $Id: sysinfo,v 29.1 1999/12/14 09:15:37 chongo Exp $
## @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/sysinfo,v $
##
## Under source code control: 1997/03/09 23:14:40
## File existed as early as: 1997
##
## chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
## Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/

View File

@@ -1,38 +1,32 @@
/* /*
* endian - determine the byte order of a long on your machine * endian - Determine the byte order of a long on your machine.
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: endian.c,v 29.1 1999/12/14 09:15:37 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/endian.c,v $
*
* Under source code control: 1993/11/15 04:32:58
* File existed as early as: 1993
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* Big Endian: Amdahl, 68k, Pyramid, Mips, Sparc, ... * Big Endian: Amdahl, 68k, Pyramid, Mips, Sparc, ...
* Little Endian: Vax, 32k, Spim (Dec Mips), i386, i486, ... * Little Endian: Vax, 32k, Spim (Dec Mips), i386, i486, ...
*/ */
/*
* Copyright (c) 1993 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <stdio.h> #include <stdio.h>

33
file.c
View File

@@ -1,36 +1,11 @@
/* /*
* file - file I/O routines callable by users * Copyright (c) 1997 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 David I. Bell and Landon Curt Noll * File I/O routines callable by users.
*
* Primary author: David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: file.c,v 29.1 1999/12/14 09:15:37 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/file.c,v $
*
* Under source code control: 1991/07/20 00:21:56
* File existed as early as: 1991
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#include <stdio.h> #include <stdio.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>

32
file.h
View File

@@ -1,33 +1,9 @@
/* /*
* file - file I/O routines callable by users * Copyright (c) 1997 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 David I. Bell and Landon Curt Noll * File I/O routines callable by users.
*
* Primary author: David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: file.h,v 29.1 1999/12/14 09:15:37 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/file.h,v $
*
* Under source code control: 1996/05/24 05:55:58
* File existed as early as: 1996
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */

View File

@@ -1,34 +1,6 @@
/* /*
* fposval - Determine information about the file position type * fposval - Determine information about the file position type
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: fposval.c,v 29.1 1999/12/14 09:15:38 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/fposval.c,v $
*
* Under source code control: 1994/11/05 03:19:52
* File existed as early as: 1994
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* The include file have_pos.h, as built during the make process will * The include file have_pos.h, as built during the make process will
* define the type FILEPOS as the type used to describe file positions. * define the type FILEPOS as the type used to describe file positions.
* We will print information regarding the size and byte order * We will print information regarding the size and byte order
@@ -53,7 +25,29 @@
* will either be a copy or a copy with HALFs swapped depending on the * will either be a copy or a copy with HALFs swapped depending on the
* Endian order of the hardware. * Endian order of the hardware.
*/ */
/*
* Copyright (c) 1996 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>

194
func.c
View File

@@ -1,32 +1,9 @@
/* /*
* func - built-in functions implemented here * Copyright (c) 1997 David I. Bell
* Permission is granted to use, distribute, or modify this source,
* provided that this copyright notice remains intact.
* *
* Copyright (C) 1999 David I. Bell, Landon Curt Noll and Ernest Bowen * Built-in functions implemented here
*
* Primary author: David I. Bell
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: func.c,v 29.1 1999/12/14 09:15:38 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/func.c,v $
*
* Under source code control: 1990/02/15 01:48:15
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
@@ -286,7 +263,7 @@ f_display(int count, VALUE **vals)
if (vals[0]->v_type != V_NUM || qisfrac(vals[0]->v_num) || if (vals[0]->v_type != V_NUM || qisfrac(vals[0]->v_num) ||
qisneg(vals[0]->v_num) || zge31b(vals[0]->v_num->num)) qisneg(vals[0]->v_num) || zge31b(vals[0]->v_num->num))
fprintf(stderr, fprintf(stderr,
"Out-of-range arg for display ignored\n"); "Out-of-range arg for display ignored\n");
else else
conf->outdigits = qtoi(vals[0]->v_num); conf->outdigits = qtoi(vals[0]->v_num);
} }
@@ -1900,31 +1877,25 @@ static VALUE
f_exp(int count, VALUE **vals) f_exp(int count, VALUE **vals)
{ {
VALUE result; VALUE result;
NUMBER *eps; NUMBER *err;
NUMBER *q;
COMPLEX *c; COMPLEX *c;
/* initialize VALUE */ /* initialize VALUE */
result.v_subtype = V_NOSUBTYPE; result.v_subtype = V_NOSUBTYPE;
eps = conf->epsilon; err = conf->epsilon;
if (count == 2) { if (count == 2) {
if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num)) if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))
return error_value(E_EXP1); return error_value(E_EXP1);
eps = vals[1]->v_num; err = vals[1]->v_num;
} }
switch (vals[0]->v_type) { switch (vals[0]->v_type) {
case V_NUM: case V_NUM:
q = qexp(vals[0]->v_num, eps); result.v_num = qexp(vals[0]->v_num, err);
if (q == NULL)
return error_value(E_EXP3);
result.v_num = q;
result.v_type = V_NUM; result.v_type = V_NUM;
break; break;
case V_COM: case V_COM:
c = cexp(vals[0]->v_com, eps); c = cexp(vals[0]->v_com, err);
if (c == NULL)
return error_value(E_EXP3);
result.v_com = c; result.v_com = c;
result.v_type = V_COM; result.v_type = V_COM;
if (cisreal(c)) { if (cisreal(c)) {
@@ -1990,26 +1961,24 @@ f_cos(int count, VALUE **vals)
{ {
VALUE result; VALUE result;
COMPLEX *c; COMPLEX *c;
NUMBER *eps; NUMBER *err;
/* initialize VALUE */ /* initialize VALUE */
result.v_subtype = V_NOSUBTYPE; result.v_subtype = V_NOSUBTYPE;
eps = conf->epsilon; err = conf->epsilon;
if (count == 2) { if (count == 2) {
if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num)) if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))
return error_value(E_COS1); return error_value(E_COS1);
eps = vals[1]->v_num; err = vals[1]->v_num;
} }
switch (vals[0]->v_type) { switch (vals[0]->v_type) {
case V_NUM: case V_NUM:
result.v_num = qcos(vals[0]->v_num, eps); result.v_num = qcos(vals[0]->v_num, err);
result.v_type = V_NUM; result.v_type = V_NUM;
break; break;
case V_COM: case V_COM:
c = ccos(vals[0]->v_com, eps); c = ccos(vals[0]->v_com, err);
if (c == NULL)
return error_value(E_COS3);
result.v_com = c; result.v_com = c;
result.v_type = V_COM; result.v_type = V_COM;
if (cisreal(c)) { if (cisreal(c)) {
@@ -2030,26 +1999,24 @@ f_sin(int count, VALUE **vals)
{ {
VALUE result; VALUE result;
COMPLEX *c; COMPLEX *c;
NUMBER *eps; NUMBER *err;
/* initialize VALUE */ /* initialize VALUE */
result.v_subtype = V_NOSUBTYPE; result.v_subtype = V_NOSUBTYPE;
eps = conf->epsilon; err = conf->epsilon;
if (count == 2) { if (count == 2) {
if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num)) if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))
return error_value(E_SIN1); return error_value(E_COS1);
eps = vals[1]->v_num; err = vals[1]->v_num;
} }
switch (vals[0]->v_type) { switch (vals[0]->v_type) {
case V_NUM: case V_NUM:
result.v_num = qsin(vals[0]->v_num, eps); result.v_num = qsin(vals[0]->v_num, err);
result.v_type = V_NUM; result.v_type = V_NUM;
break; break;
case V_COM: case V_COM:
c = csin(vals[0]->v_com, eps); c = csin(vals[0]->v_com, err);
if (c == NULL)
return error_value(E_SIN3);
result.v_com = c; result.v_com = c;
result.v_type = V_COM; result.v_type = V_COM;
if (cisreal(c)) { if (cisreal(c)) {
@@ -2059,7 +2026,7 @@ f_sin(int count, VALUE **vals)
} }
break; break;
default: default:
return error_value(E_SIN2); return error_value(E_COS2);
} }
return result; return result;
} }
@@ -2219,36 +2186,30 @@ static VALUE
f_sinh(int count, VALUE **vals) f_sinh(int count, VALUE **vals)
{ {
VALUE result; VALUE result;
NUMBER *eps; NUMBER *err;
NUMBER *q; NUMBER *q;
COMPLEX *c;
/* initialize VALUE */ /* initialize VALUE */
result.v_subtype = V_NOSUBTYPE; result.v_subtype = V_NOSUBTYPE;
eps = conf->epsilon; err = conf->epsilon;
if (count == 2) { if (count == 2) {
if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num)) if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))
return error_value(E_SINH1); return error_value(E_SINH1);
eps = vals[1]->v_num; err = vals[1]->v_num;
} }
switch (vals[0]->v_type) { switch (vals[0]->v_type) {
case V_NUM: case V_NUM:
q = qsinh(vals[0]->v_num, eps); result.v_num = qsinh(vals[0]->v_num, err);
if (q == NULL)
return error_value(E_SINH3);
result.v_num = q;
result.v_type = V_NUM; result.v_type = V_NUM;
break; break;
case V_COM: case V_COM:
c = csinh(vals[0]->v_com, eps); result.v_com = csinh(vals[0]->v_com, err);
if (c == NULL)
return error_value(E_SINH3);
result.v_com = c;
result.v_type = V_COM; result.v_type = V_COM;
if (cisreal(c)) { if (cisreal(result.v_com)) {
result.v_num = qlink(c->real); q = qlink(result.v_com->real);
comfree(c); comfree(result.v_com);
result.v_num = q;
result.v_type = V_NUM; result.v_type = V_NUM;
} }
break; break;
@@ -2262,36 +2223,30 @@ static VALUE
f_cosh(int count, VALUE **vals) f_cosh(int count, VALUE **vals)
{ {
VALUE result; VALUE result;
NUMBER *eps; NUMBER *err;
NUMBER *q; NUMBER *q;
COMPLEX *c;
/* initialize VALUE */ /* initialize VALUE */
result.v_subtype = V_NOSUBTYPE; result.v_subtype = V_NOSUBTYPE;
eps = conf->epsilon; err = conf->epsilon;
if (count == 2) { if (count == 2) {
if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num)) if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))
return error_value(E_COSH1); return error_value(E_COSH1);
eps = vals[1]->v_num; err = vals[1]->v_num;
} }
switch (vals[0]->v_type) { switch (vals[0]->v_type) {
case V_NUM: case V_NUM:
q = qcosh(vals[0]->v_num, eps); result.v_num = qcosh(vals[0]->v_num, err);
if (q == NULL)
return error_value(E_COSH3);
result.v_num = q;
result.v_type = V_NUM; result.v_type = V_NUM;
break; break;
case V_COM: case V_COM:
c = ccosh(vals[0]->v_com, eps); result.v_com = ccosh(vals[0]->v_com, err);
if (c == NULL)
return error_value(E_COSH3);
result.v_com = c;
result.v_type = V_COM; result.v_type = V_COM;
if (cisreal(c)) { if (cisreal(result.v_com)) {
result.v_num = qlink(c->real); q = qlink(result.v_com->real);
comfree(c); comfree(result.v_com);
result.v_num = q;
result.v_type = V_NUM; result.v_type = V_NUM;
} }
break; break;
@@ -3029,18 +2984,18 @@ static VALUE
f_gd(int count, VALUE **vals) f_gd(int count, VALUE **vals)
{ {
VALUE result; VALUE result;
NUMBER *eps; NUMBER *err;
NUMBER *q; NUMBER *q;
COMPLEX *tmp; COMPLEX *tmp;
/* initialize VALUE */ /* initialize VALUE */
result.v_subtype = V_NOSUBTYPE; result.v_subtype = V_NOSUBTYPE;
eps = conf->epsilon; err = conf->epsilon;
if (count == 2) { if (count == 2) {
if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num)) if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))
return error_value(E_GD1); return error_value(E_GD1);
eps = vals[1]->v_num; err = vals[1]->v_num;
} }
result.v_type = V_COM; result.v_type = V_COM;
switch (vals[0]->v_type) { switch (vals[0]->v_type) {
@@ -3053,17 +3008,17 @@ f_gd(int count, VALUE **vals)
tmp = comalloc(); tmp = comalloc();
qfree(tmp->real); qfree(tmp->real);
tmp->real = qlink(vals[0]->v_num); tmp->real = qlink(vals[0]->v_num);
result.v_com = cgd(tmp, eps); result.v_com = cgd(tmp, err);
comfree(tmp); comfree(tmp);
break; break;
case V_COM: case V_COM:
result.v_com = cgd(vals[0]->v_com, eps); result.v_com = cgd(vals[0]->v_com, err);
break; break;
default: default:
return error_value(E_GD2); return error_value(E_GD2);
} }
if (result.v_com == NULL) if (result.v_com == NULL)
return error_value(E_GD3); return error_value(E_LOGINF);
if (cisreal(result.v_com)) { if (cisreal(result.v_com)) {
q = qlink(result.v_com->real); q = qlink(result.v_com->real);
comfree(result.v_com); comfree(result.v_com);
@@ -3078,18 +3033,18 @@ static VALUE
f_agd(int count, VALUE **vals) f_agd(int count, VALUE **vals)
{ {
VALUE result; VALUE result;
NUMBER *eps; NUMBER *err;
NUMBER *q; NUMBER *q;
COMPLEX *tmp; COMPLEX *tmp;
/* initialize VALUE */ /* initialize VALUE */
result.v_subtype = V_NOSUBTYPE; result.v_subtype = V_NOSUBTYPE;
eps = conf->epsilon; err = conf->epsilon;
if (count == 2) { if (count == 2) {
if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num)) if (vals[1]->v_type != V_NUM || qiszero(vals[1]->v_num))
return error_value(E_AGD1); return error_value(E_AGD1);
eps = vals[1]->v_num; err = vals[1]->v_num;
} }
result.v_type = V_COM; result.v_type = V_COM;
switch (vals[0]->v_type) { switch (vals[0]->v_type) {
@@ -3102,17 +3057,17 @@ f_agd(int count, VALUE **vals)
tmp = comalloc(); tmp = comalloc();
qfree(tmp->real); qfree(tmp->real);
tmp->real = qlink(vals[0]->v_num); tmp->real = qlink(vals[0]->v_num);
result.v_com = cagd(tmp, eps); result.v_com = cagd(tmp, err);
comfree(tmp); comfree(tmp);
break; break;
case V_COM: case V_COM:
result.v_com = cagd(vals[0]->v_com, eps); result.v_com = cagd(vals[0]->v_com, err);
break; break;
default: default:
return error_value(E_AGD2); return error_value(E_AGD2);
} }
if (result.v_com == NULL) if (result.v_com == NULL)
return error_value(E_AGD3); return error_value(E_LOGINF);
if (cisreal(result.v_com)) { if (cisreal(result.v_com)) {
q = qlink(result.v_com->real); q = qlink(result.v_com->real);
comfree(result.v_com); comfree(result.v_com);
@@ -7359,49 +7314,6 @@ f_md5(int count, VALUE **vals)
} }
static VALUE
f_argv(int count, VALUE **vals)
{
int arg; /* the argv_value string index */
VALUE result;
/* initialize VALUE */
result.v_subtype = V_NOSUBTYPE;
/*
* arg check
*/
if (count == 0) {
/* return the argc count */
result.v_type = V_NUM;
result.v_num = itoq((long) argc_value);
} else {
/* firewall */
if (vals[0]->v_type != V_NUM || qisfrac(vals[0]->v_num) ||
qisneg(vals[0]->v_num) || zge31b(vals[0]->v_num->num)) {
math_error("argv argument must be a integer [0,2^31)");
/*NOTREACHED*/
}
/* return the n-th argv string */
arg = qtoi(vals[0]->v_num);
if (arg < argc_value && argv_value[arg] != NULL) {
result.v_type = V_STR;
result.v_str = makestring(strdup(argv_value[arg]));
} else {
result.v_type = V_NULL;
}
}
/* return the result */
return result;
}
#endif /* !FUNCLIST */ #endif /* !FUNCLIST */
@@ -7466,8 +7378,6 @@ static CONST struct builtin builtins[] = {
"approximate a by multiple of b using rounding c"}, "approximate a by multiple of b using rounding c"},
{"arg", 1, 2, 0, OP_NOP, 0, f_arg, {"arg", 1, 2, 0, OP_NOP, 0, f_arg,
"argument (the angle) of complex number"}, "argument (the angle) of complex number"},
{"argv", 0, 1, 0, OP_NOP, 0, f_argv,
"calc argc or argv string"},
{"asec", 1, 2, 0, OP_NOP, 0, f_asec, {"asec", 1, 2, 0, OP_NOP, 0, f_asec,
"arcsecant of a within accuracy b"}, "arcsecant of a within accuracy b"},
{"asech", 1, 2, 0, OP_NOP, 0, f_asech, {"asech", 1, 2, 0, OP_NOP, 0, f_asech,

29
func.h
View File

@@ -1,30 +1,7 @@
/* /*
* func - built-in function interface definitions * Copyright (c) 1997 David I. Bell
* * Permission is granted to use, distribute, or modify this source,
* Copyright (C) 1999 David I. Bell * provided that this copyright notice remains intact.
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: func.h,v 29.1 1999/12/14 09:15:38 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/func.h,v $
*
* Under source code control: 1990/02/15 01:48:33
* File existed as early as: before 1990
*
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */

46
hash.c
View File

@@ -1,34 +1,25 @@
/* /*
* hash - one-way hash routines * Copyright (c) 1997 by Landon Curt Noll. All Rights Reserved.
* *
* Copyright (C) 1999 Landon Curt Noll * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
* *
* Calc is open software; you can redistribute it and/or modify it under * supporting documentation
* the terms of the version 2.1 of the GNU Lesser General Public License * source copies
* as published by the Free Software Foundation. * source works derived from this source
* binaries derived from this source or from derived source
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* Public License for more details. * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* A copy of version 2.1 of the GNU Lesser General Public License is * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* distributed with calc under the filename COPYING-LGPL. You should have * PERFORMANCE OF THIS SOFTWARE.
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.2 $
* @(#) $Id: hash.c,v 29.2 1999/12/14 19:37:46 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/hash.c,v $
*
* Under source code control: 1995/11/23 05:13:11
* File existed as early as: 1995
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <sys/types.h> #include <sys/types.h>
@@ -974,16 +965,13 @@ hash_value(int type, void *v, HASH *state)
state = hash_int(type, value->v_config->blkbase, state); state = hash_int(type, value->v_config->blkbase, state);
state = hash_int(type, value->v_config->blkfmt, state); state = hash_int(type, value->v_config->blkfmt, state);
state = hash_long(type, state = hash_long(type,
(long)value->v_config->resource_debug, state); (long)value->v_config->lib_debug, state);
state = hash_long(type, state = hash_long(type,
(long)value->v_config->calc_debug, state); (long)value->v_config->calc_debug, state);
state = hash_long(type, state = hash_long(type,
(long)value->v_config->user_debug, state); (long)value->v_config->user_debug, state);
state = hash_bool(type, value->v_config->verbose_quit, state); state = hash_bool(type, value->v_config->verbose_quit, state);
state = hash_int(type, value->v_config->ctrl_d, state); state = hash_int(type, value->v_config->ctrl_d, state);
state = hash_str(type, value->v_config->program, state);
state = hash_str(type, value->v_config->base_name, state);
state = hash_str(type, value->v_config->version, state);
break; break;
case V_HASH: case V_HASH:

40
hash.h
View File

@@ -1,31 +1,23 @@
/* /*
* hash - one-way hash routines * Copyright (c) 1997 by Landon Curt Noll. All Rights Reserved.
* *
* Copyright (C) 1999 Landon Curt Noll * Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
* *
* Calc is open software; you can redistribute it and/or modify it under * supporting documentation
* the terms of the version 2.1 of the GNU Lesser General Public License * source copies
* as published by the Free Software Foundation. * source works derived from this source
* binaries derived from this source or from derived source
* *
* Calc is distributed in the hope that it will be useful, but WITHOUT * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* Public License for more details. * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* A copy of version 2.1 of the GNU Lesser General Public License is * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* distributed with calc under the filename COPYING-LGPL. You should have * PERFORMANCE OF THIS SOFTWARE.
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: hash.h,v 29.1 1999/12/14 09:15:38 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/hash.h,v $
*
* Under source code control: 1995/11/14 23:57:45
* File existed as early as: 1995
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/ */

View File

@@ -1,34 +1,6 @@
/* /*
* have_const - Determine if we want or can support ansi const * have_const - Determine if we want or can support ansi const
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_const.c,v 29.1 1999/12/14 09:15:38 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_const.c,v $
*
* Under source code control: 1995/04/22 13:18:44
* File existed as early as: 1995
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* usage: * usage:
* have_const * have_const
* *
@@ -44,7 +16,29 @@
* const ==> use const * const ==> use const
* (nothing) ==> const not used * (nothing) ==> const not used
*/ */
/*
* Copyright (c) 1995 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <stdio.h> #include <stdio.h>

View File

@@ -1,40 +1,34 @@
/* /*
* have_fpos - Determine if have fgetpos and fsetpos functions * have_fpos - Determine if have fgetpos and fsetpos functions
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_fpos.c,v 29.1 1999/12/14 09:15:38 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_fpos.c,v $
*
* Under source code control: 1994/11/05 03:19:52
* File existed as early as: 1994
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* If the symbol HAVE_NO_FPOS is defined, we will output nothing. * If the symbol HAVE_NO_FPOS is defined, we will output nothing.
* If we are able to compile this program, then we must have the * If we are able to compile this program, then we must have the
* fgetpos and fsetpos functions and we will output the * fgetpos and fsetpos functions and we will output the
* appropriate have_fpos.h file body. * appropriate have_fpos.h file body.
*/ */
/*
* Copyright (c) 1995 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <stdio.h> #include <stdio.h>

View File

@@ -1,34 +1,6 @@
/* /*
* have_getpgid - determine if we have getpgid() * have_getpgid - Determine if we getpgid()
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_getpgid.c,v 29.1 1999/12/14 09:15:39 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_getpgid.c,v $
*
* Under source code control: 1999/10/20 22:51:13
* File existed as early as: 1999
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* usage: * usage:
* have_getpgid * have_getpgid
* *
@@ -41,6 +13,29 @@
* defined ==> use getpgid() * defined ==> use getpgid()
* undefined ==> do not or cannot call getpgid() * undefined ==> do not or cannot call getpgid()
*/ */
/*
* Copyright (c) 1999 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> #include <unistd.h>

View File

@@ -1,34 +1,6 @@
/* /*
* have_getprid - determine if we have getprid() * have_getprid - Determine if we getprid()
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_getprid.c,v 29.1 1999/12/14 09:15:39 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_getprid.c,v $
*
* Under source code control: 1999/10/20 23:43:42
* File existed as early as: 1999
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* usage: * usage:
* have_getprid * have_getprid
* *
@@ -41,7 +13,29 @@
* defined ==> use getprid() * defined ==> use getprid()
* undefined ==> do not or cannot call getprid() * undefined ==> do not or cannot call getprid()
*/ */
/*
* Copyright (c) 1999 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> #include <unistd.h>

View File

@@ -1,34 +1,6 @@
/* /*
* have_getsid - determine if we have getsid() * have_getsid - Determine if we getsid()
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_getsid.c,v 29.1 1999/12/14 09:15:39 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_getsid.c,v $
*
* Under source code control: 1999/10/20 22:51:13
* File existed as early as: 1999
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* usage: * usage:
* have_getsid * have_getsid
* *
@@ -41,7 +13,29 @@
* defined ==> use getsid() * defined ==> use getsid()
* undefined ==> do not call or cannot call getsid() * undefined ==> do not call or cannot call getsid()
*/ */
/*
* Copyright (c) 1999 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <sys/types.h> #include <sys/types.h>

View File

@@ -1,34 +1,6 @@
/* /*
* have_gettime - determine if we have clock_gettime() * have_gettime - Determine if we clock_gettime()
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_gettime.c,v 29.1 1999/12/14 09:15:39 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_gettime.c,v $
*
* Under source code control: 1999/10/20 23:43:42
* File existed as early as: 1999
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* usage: * usage:
* have_gettime * have_gettime
* *
@@ -43,7 +15,29 @@
* undefined ==> clock_gettime() is not available for both * undefined ==> clock_gettime() is not available for both
* CLOCK_SGI_CYCLE and CLOCK_REALTIME * CLOCK_SGI_CYCLE and CLOCK_REALTIME
*/ */
/*
* Copyright (c) 1999 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <time.h> #include <time.h>

View File

@@ -1,34 +1,6 @@
/* /*
* have_memmv - Determine if we have memmove() * have_memmv - Determine if we memmove()
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_memmv.c,v 29.1 1999/12/14 09:15:39 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_memmv.c,v $
*
* Under source code control: 1997/04/16 02:02:34
* File existed as early as: 1997
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* usage: * usage:
* have_memmv * have_memmv
* *
@@ -41,7 +13,29 @@
* defined ==> use memmove() * defined ==> use memmove()
* undefined ==> use internal slow memmove() instead * undefined ==> use internal slow memmove() instead
*/ */
/*
* Copyright (c) 1997 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <stdio.h> #include <stdio.h>

View File

@@ -1,34 +1,6 @@
/* /*
* have_newstr - Determine if we have a system without ANSI C string functions * have_newstr - Determine if we have a system without ANSI C string functions
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_newstr.c,v 29.1 1999/12/14 09:15:39 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_newstr.c,v $
*
* Under source code control: 1995/05/02 03:55:08
* File existed as early as: 1995
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* usage: * usage:
* have_newstr * have_newstr
* *
@@ -43,7 +15,29 @@
* use bfill() instead of memset(), * use bfill() instead of memset(),
* use index() instead of strchr() * use index() instead of strchr()
*/ */
/*
* Copyright (c) 1995 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <stdio.h> #include <stdio.h>

View File

@@ -1,34 +1,6 @@
/* /*
* have_offscl - determine if we have a scalar off_t element * have_offscl - determine if have a scalar off_t element
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_offscl.c,v 29.1 1999/12/14 09:15:39 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_offscl.c,v $
*
* Under source code control: 1996/07/13 12:57:22
* File existed as early as: 1996
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* usage: * usage:
* have_offscl * have_offscl
* *
@@ -45,7 +17,29 @@
* defined ==> ok to perform arithmetic ops, = and comparisons * defined ==> ok to perform arithmetic ops, = and comparisons
* undefined ==> convert to ZVALUE first * undefined ==> convert to ZVALUE first
*/ */
/*
* Copyright (c) 1996 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <stdio.h> #include <stdio.h>
#include <sys/types.h> #include <sys/types.h>

View File

@@ -1,34 +1,6 @@
/* /*
* have_posscl - determine if we have a scalar FILEPOS element * have_posscl - determine if have a scalar FILEPOS element
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_posscl.c,v 29.1 1999/12/14 09:15:39 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_posscl.c,v $
*
* Under source code control: 1996/07/13 12:57:22
* File existed as early as: 1996
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* usage: * usage:
* have_posscl * have_posscl
* *
@@ -38,13 +10,36 @@
* a ZVALUE in order to perform arithmetic operations, assignments and * a ZVALUE in order to perform arithmetic operations, assignments and
* comparisons. * comparisons.
* *
*
* This prog outputs several defines: * This prog outputs several defines:
* *
* HAVE_FILEPOS_SCALAR * HAVE_FILEPOS_SCALAR
* defined ==> ok to perform arithmetic ops, = and comparisons * defined ==> ok to perform arithmetic ops, = and comparisons
* undefined ==> convert to ZVALUE first * undefined ==> convert to ZVALUE first
*/ */
/*
* Copyright (c) 1996 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <stdio.h> #include <stdio.h>
#include <sys/types.h> #include <sys/types.h>

View File

@@ -1,34 +1,6 @@
/* /*
* have_rusage - Determine if we have getrusage() * have_rusage - Determine if we getrusage()
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_rusage.c,v 29.1 1999/12/14 09:15:39 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_rusage.c,v $
*
* Under source code control: 1999/11/05 11:28:15
* File existed as early as: 1999
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* usage: * usage:
* have_rusage * have_rusage
* *
@@ -41,7 +13,29 @@
* defined ==> use getrusage() * defined ==> use getrusage()
* undefined ==> do not call or cannot call getrusage() * undefined ==> do not call or cannot call getrusage()
*/ */
/*
* Copyright (c) 1999 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <sys/time.h> #include <sys/time.h>
#include <sys/resource.h> #include <sys/resource.h>

View File

@@ -1,34 +1,6 @@
/* /*
* have_stdvs - try <stdarg.h> to see if it really works with vsprintf() * have_stdvs - try <stdarg.h> to see if it really works with vsprintf()
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_stdvs.c,v 29.1 1999/12/14 09:15:39 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_stdvs.c,v $
*
* Under source code control: 1995/09/09 22:41:10
* File existed as early as: 1995
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* On some systems that have both <stdarg.h> and <varargs.h>, vsprintf() * On some systems that have both <stdarg.h> and <varargs.h>, vsprintf()
* does not work well under one type of include file. * does not work well under one type of include file.
* *
@@ -41,7 +13,29 @@
* (or sprintf()) produces unexpected results while using the <stdarg.h> * (or sprintf()) produces unexpected results while using the <stdarg.h>
* include file. * include file.
*/ */
/*
* Copyright (c) 1995 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <stdio.h> #include <stdio.h>

View File

@@ -1,34 +1,6 @@
/* /*
* have_strdup - determine if we have strdup() * have_strdup - Determine if we strdup()
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_strdup.c,v 29.1 1999/12/14 09:15:39 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_strdup.c,v $
*
* Under source code control: 1999/11/09 12:46:54
* File existed as early as: 1999
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* usage: * usage:
* have_strdup * have_strdup
* *
@@ -41,7 +13,29 @@
* defined ==> use strdup() * defined ==> use strdup()
* undefined ==> do not call or cannot call strdup() * undefined ==> do not call or cannot call strdup()
*/ */
/*
* Copyright (c) 1999 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <string.h> #include <string.h>

View File

@@ -1,34 +1,6 @@
/* /*
* have_uid_t - Determine if we want or can support uid_t * have_uid_t - Determine if we want or can support uid_t
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_uid_t.c,v 29.1 1999/12/14 09:15:39 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_uid_t.c,v $
*
* Under source code control: 1995/05/02 03:03:24
* File existed as early as: 1995
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* usage: * usage:
* have_uid_t * have_uid_t
* *
@@ -40,7 +12,29 @@
* defined ==> ok to use uid_t * defined ==> ok to use uid_t
* undefined ==> do not use uid_t * undefined ==> do not use uid_t
*/ */
/*
* Copyright (c) 1995 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <stdio.h> #include <stdio.h>

View File

@@ -1,34 +1,6 @@
/* /*
* have_ustat - Determine if we have ustat() * have_ustat - Determine if we ustat()
* *
* Copyright (C) 1999 Landon Curt Noll
*
* Calc is open software; you can redistribute it and/or modify it under
* the terms of the version 2.1 of the GNU Lesser General Public License
* as published by the Free Software Foundation.
*
* Calc is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
* Public License for more details.
*
* A copy of version 2.1 of the GNU Lesser General Public License is
* distributed with calc under the filename COPYING-LGPL. You should have
* received a copy with calc; if not, write to Free Software Foundation, Inc.
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* @(#) $Revision: 29.1 $
* @(#) $Id: have_ustat.c,v 29.1 1999/12/14 09:15:40 chongo Exp $
* @(#) $Source: /usr/local/src/cmd/calc/RCS/have_ustat.c,v $
*
* Under source code control: 1999/10/20 22:51:13
* File existed as early as: 1999
*
* chongo <was here> /\oo/\ http://reality.sgi.com/chongo/
* Share and enjoy! :-) http://reality.sgi.com/chongo/tech/comp/calc/
*/
/*
* usage: * usage:
* have_ustat * have_ustat
* *
@@ -41,7 +13,29 @@
* defined ==> use ustat() * defined ==> use ustat()
* undefined ==> do not call or cannot call ustat() * undefined ==> do not call or cannot call ustat()
*/ */
/*
* Copyright (c) 1999 by Landon Curt Noll. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright, this permission notice and text
* this comment, and the disclaimer below appear in all of the following:
*
* supporting documentation
* source copies
* source works derived from this source
* binaries derived from this source or from derived source
*
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*
* chongo was here /\../\
*/
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>

Some files were not shown because too many files have changed in this diff Show More