diff --git a/BUGS b/BUGS index e6a4d72..ab87c88 100644 --- a/BUGS +++ b/BUGS @@ -83,6 +83,32 @@ Problems with known work-a-rounds: to fail the regression test. The work-a-round is to compile with -O or to use gcc-2.96 or later. + This bug has been observed on the Sparc and the PowerPC machine. + + On the PowerPC with gcc-2.95 when compiled with -O2, the following + patch seems to help: + +*** zfunc.c.orig Fri Feb 23 18:18:39 2001 +--- zfunc.c Fri Feb 23 18:39:33 2001 +*************** +*** 1481,1487 **** + { + HALF *a, *A, *b, *a0, u; + int i, j, j1, j2, k, k1, m, m0, m1, n, n0, o; +! FULL d, e, f, g, h, s, t, x, topbit; + int remsign; + BOOL up, onebit; + ZVALUE sqrt; +--- 1481,1488 ---- + { + HALF *a, *A, *b, *a0, u; + int i, j, j1, j2, k, k1, m, m0, m1, n, n0, o; +! volatile FULL d; +! FULL e, f, g, h, s, t, x, topbit; + int remsign; + BOOL up, onebit; + ZVALUE sqrt; + * Solaris cc somtimes barfs while compiling zrand.c. In particular, calc barfs on on the SVAL macro. The work-a-round is to use the Solaric cc Makefile set sets -DFORCE_STDC. I.e,: @@ -179,8 +205,8 @@ Problems with known work-a-rounds: ## 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.5 $ -## @(#) $Id: BUGS,v 29.5 2000/06/07 14:02:13 chongo Exp $ +## @(#) $Revision: 29.7 $ +## @(#) $Id: BUGS,v 29.7 2001/02/25 21:01:52 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/RCS/BUGS,v $ ## ## Under source code control: 1994/03/18 14:06:13 diff --git a/CHANGES b/CHANGES index 2f79b2a..0905ed3 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,21 @@ +The following are the changes from calc version 2.11.5t0 to date: + + Fixed a compile problem with Linux 2.4 / Debian. Thanks goes + to Martin Buck for help with this issue. + + Fixed a bug in how L64_FORMAT (it determined if "%ld" or "%lld" + is appropriate for printing of 64 bit long longs) was determined. + Thanks goes to Martin Buck for reporting + this bug and testing the fix. + + An effort was made to make calc easier to build under Windoz + using the Cygwin project (http://sources.redhat.com/cygwin/). + Thanks to the work of Thomas Jones-Low (tjoneslo and softstart + dot com), a number of #if defined(_WIN32)'s have been added + to calc source. These changes should not effect Windoz + free system such as GNU/Linux, Solaris, POSIX-like, etc ... + + The following are the changes from calc version 2.11.4t1 to date: Added missing test8600.cal test file. @@ -24,6 +42,9 @@ The following are the changes from calc version 2.11.4t1 to date: Return an error on malloc / realloc failures for bernoulli and euler functions. + Added MAKEFILE_REV make variable to help determine Makefile version. + Fixed the way the env rule reports Makefile values. + The following are the changes from calc version 2.11.3t0 to 2.11.4: @@ -5038,8 +5059,8 @@ Following is a list of visible changes to calc from version 1.24.7 to 1.26.1: ## 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.16 $ -## @(#) $Id: CHANGES,v 29.16 2000/12/17 13:07:54 chongo Exp $ +## @(#) $Revision: 29.20 $ +## @(#) $Id: CHANGES,v 29.20 2001/02/25 22:07:36 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/RCS/CHANGES,v $ ## ## Under source code control: 1993/06/02 18:12:57 diff --git a/COPYING b/COPYING index b2888bd..ce66eda 100644 --- a/COPYING +++ b/COPYING @@ -12,8 +12,8 @@ This file is Copyrighted Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - # @(#) $Revision: 29.3 $ - # @(#) $Id: COPYING,v 29.3 2000/12/14 09:18:06 chongo Exp $ + # @(#) $Revision: 29.5 $ + # @(#) $Id: COPYING,v 29.5 2000/12/18 10:22:55 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/RCS/COPYING,v $ =-= @@ -140,7 +140,7 @@ Calc copyrights and exception files ----------------------------------- With the exception of the files listed below, Calc is covered under - the following Copyrights: + the following GNU Lesser General Public License Copyrights: Copyright (C) year David I. Bell Copyright (C) year David I. Bell and Landon Curt Noll @@ -150,12 +150,11 @@ Calc copyrights and exception files 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: + These files are not covered under one of the Copyrights listed above: - shs1.c shs1.h shs.c shs.h - md5.c md5.h lib/qtime.cal COPYING - COPYING-LGPL + shs1.c shs1.h shs.c shs.h + md5.c md5.h COPYING COPYING-LGPL + cal/qtime.cal The file COPYING-LGPL, which contains a copy of the version 2.1 GNU Lesser General Public License, is itself Copyrighted by the @@ -168,10 +167,12 @@ Calc copyrights and exception files verbatim copies of this file but you may not modify this file. Some of these exception files are in the public domain. Other - exception files have non-LGPL Copyrights. In all cases one may - use and distribute these exception files freely. And because one - may freely distribute the LGPL covered files, the entire calc - source may be freely used and distributed. + exception files have non-LGPL Copyrights. Other files are under a + LGPL Copyright but have different authors. + + In all cases one may use and distribute these exception files freely. + And because one may freely distribute the LGPL covered files, the + entire calc source may be freely used and distributed. =-= diff --git a/Makefile b/Makefile index 2d9cf69..36c29c8 100644 --- a/Makefile +++ b/Makefile @@ -20,8 +20,8 @@ # 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.10 $ -# @(#) $Id: Makefile.ship,v 29.10 2000/12/17 12:23:29 chongo Exp $ +MAKEFILE_REV= $$Revision: 29.14 $$ +# @(#) $Id: Makefile.ship,v 29.14 2001/02/25 22:07:36 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/RCS/Makefile.ship,v $ # # Under source code control: 1990/02/15 01:48:41 @@ -1050,7 +1050,7 @@ LICENSE= COPYING COPYING-LGPL # These files are found (but not built) in the distribution # DISTLIST= ${C_SRC} ${H_SRC} ${MAKE_FILE} BUGS CHANGES LIBRARY README \ - calc.man HOWTO.INSTALL ${UTIL_MISC_SRC} ${LICENSE} + README.WINDOWS calc.man HOWTO.INSTALL ${UTIL_MISC_SRC} ${LICENSE} # These files are used to make (but not built) a calc .a link library # @@ -2661,94 +2661,95 @@ chk: ./cal/regress.cal env: @echo '=-=-=-=-= dumping major make variables =-=-=-=-=' - @echo "TERMCONTROL=${TERMCONTROL}"; echo "" - @echo "HAVE_VSPRINTF=${HAVE_VSPRINTF}"; echo "" - @echo "BYTE_ORDER=${BYTE_ORDER}"; echo "" - @echo "LONG_BITS=${LONG_BITS}"; echo "" - @echo "LONGLONG_BITS=${LONGLONG_BITS}"; echo "" - @echo "HAVE_FPOS=${HAVE_FPOS}"; echo "" - @echo "HAVE_FPOS_POS=${HAVE_FPOS_POS}"; echo "" - @echo "HAVE_OFFSCL=${HAVE_OFFSCL}"; echo "" - @echo "HAVE_POSSCL=${HAVE_POSSCL}"; echo "" - @echo "HAVE_CONST=${HAVE_CONST}"; echo "" - @echo "HAVE_UID_T=${HAVE_UID_T}"; echo "" - @echo "HAVE_NEWSTR=${HAVE_NEWSTR}"; echo "" - @echo "HAVE_USTAT=${HAVE_USTAT}"; echo "" - @echo "HAVE_GETSID=${HAVE_GETSID}"; echo "" - @echo "HAVE_GETPGID=${HAVE_GETPGID}"; echo "" - @echo "HAVE_GETTIME=${HAVE_GETTIME}"; echo "" - @echo "HAVE_GETPRID=${HAVE_GETPRID}"; echo "" - @echo "HAVE_URANDOM=${HAVE_URANDOM}"; echo "" - @echo "ALIGN32=${ALIGN32}"; echo "" - @echo "BINDIR=${BINDIR}"; echo "" - @echo "TOPDIR=${TOPDIR}"; echo "" - @echo "LIBDIR=${LIBDIR}"; echo "" - @echo "HELPDIR=${HELPDIR}"; echo "" - @echo "CUSTOMLIBDIR=${CUSTOMLIBDIR}"; echo "" - @echo "CUSTOMHELPDIR=${CUSTOMHELPDIR}"; echo "" - @echo "SCRIPTDIR=${SCRIPTDIR}"; echo "" - @echo "MANDIR=${MANDIR}"; echo "" - @echo "CATDIR=${CATDIR}"; echo "" - @echo "MANEXT=${MANEXT}"; echo "" - @echo "CATEXT=${CATEXT}"; echo "" - @echo "NROFF=${NROFF}"; echo "" - @echo "NROFF_ARG=${NROFF_ARG}"; echo "" - @echo "MANMAKE=${MANMAKE}"; echo "" - @echo "CALCPATH=${CALCPATH}"; echo "" - @echo "CALCRC=${CALCRC}"; echo "" - @echo "CALCPAGER=${CALCPAGER}"; echo "" - @echo "DEBUG=${DEBUG}"; echo "" - @echo "NO_SHARED=${NO_SHARED}"; echo "" - @echo "LD_NO_SHARED=${LD_NO_SHARED}"; echo "" - @echo "RANLIB=${RANLIB}"; echo "" - @echo "MAKE_FILE=${MAKE_FILE}"; echo "" - @echo "PURIFY=${PURIFY}"; echo "" - @echo "LD_DEBUG=${LD_DEBUG}"; echo "" - @echo "CALC_ENV=${CALC_ENV}"; echo "" - @echo "ALLOW_CUSTOM=${ALLOW_CUSTOM}"; echo "" - @echo "CCOPT=${CCOPT}"; echo "" - @echo "CCWARN=${CCWARN}"; echo "" - @echo "CCMISC=${CCMISC}"; echo "" - @echo "CFLAGS=${CFLAGS}"; echo "" - @echo "ICFLAGS=${ICFLAGS}"; echo "" - @echo "LDFLAGS=${LDFLAGS}"; echo "" - @echo "ILDFLAGS=${ILDFLAGS}"; echo "" - @echo "LCC=${LCC}"; echo "" - @echo "CC=${CC}"; echo "" - @echo "SHELL=${SHELL}"; echo "" - @echo "MAKE=${MAKE}"; echo "" - @echo "AWK=${AWK}"; echo "" - @echo "SED=${SED}"; echo "" - @echo "SORT=${SORT}"; echo "" - @echo "TEE=${TEE}"; echo "" - @echo "CTAGS=${CTAGS}"; echo "" - @echo "MAKEDEPEND=${MAKEDEPEND}"; echo "" - @echo "Q=${Q}"; echo "" - @echo "V=${V}"; echo "" - @echo "LIBSRC=${LIBSRC}"; echo "" - @echo "LIBOBJS=${LIBOBJS}"; echo "" - @echo "CALCSRC=${CALCSRC}"; echo "" - @echo "CALCOBJS=${CALCOBJS}"; echo "" - @echo "BUILD_H_SRC=${BUILD_H_SRC}"; echo "" - @echo "BUILD_C_SRC=${BUILD_C_SRC}"; echo "" - @echo "UTIL_C_SRC=${UTIL_C_SRC}"; echo "" - @echo "UTIL_MISC_SRC=${UTIL_MISC_SRC}"; echo "" - @echo "UTIL_OBJS=${UTIL_OBJS}"; echo "" - @echo "UTIL_TMP=${UTIL_TMP}"; echo "" - @echo "UTIL_PROGS=${UTIL_PROGS}"; echo "" - @echo "LIB_H_SRC=${LIB_H_SRC}"; echo "" - @echo "CUSTOM_PASSDOWN=${CUSTOM_PASSDOWN}"; echo "" - @echo "SAMPLE_PASSDOWN=${SAMPLE_PASSDOWN}"; echo "" - @echo "HELP_PASSDOWN=${HELP_PASSDOWN}"; echo "" - @echo "CAL_PASSDOWN=${CAL_PASSDOWN}"; echo "" - @echo "CSCRIPT_PASSDOWN=${CSCRIPT_PASSDOWN}"; echo "" - @echo "H_SRC=${H_SRC}"; echo "" - @echo "C_SRC=${C_SRC}"; echo "" - @echo "DISTLIST=${DISTLIST}"; echo "" - @echo "OBJS=${OBJS}"; echo "" - @echo "CALC_LIBS=${CALC_LIBS}"; echo "" - @echo "PROGS=${PROGS}"; echo "" - @echo "TARGETS=${TARGETS}"; echo "" + @echo 'MAKEFILE_REV=${MAKEFILE_REV}'; echo '' + @echo 'TERMCONTROL=${TERMCONTROL}'; echo '' + @echo 'HAVE_VSPRINTF=${HAVE_VSPRINTF}'; echo '' + @echo 'BYTE_ORDER=${BYTE_ORDER}'; echo '' + @echo 'LONG_BITS=${LONG_BITS}'; echo '' + @echo 'LONGLONG_BITS=${LONGLONG_BITS}'; echo '' + @echo 'HAVE_FPOS=${HAVE_FPOS}'; echo '' + @echo 'HAVE_FPOS_POS=${HAVE_FPOS_POS}'; echo '' + @echo 'HAVE_OFFSCL=${HAVE_OFFSCL}'; echo '' + @echo 'HAVE_POSSCL=${HAVE_POSSCL}'; echo '' + @echo 'HAVE_CONST=${HAVE_CONST}'; echo '' + @echo 'HAVE_UID_T=${HAVE_UID_T}'; echo '' + @echo 'HAVE_NEWSTR=${HAVE_NEWSTR}'; echo '' + @echo 'HAVE_USTAT=${HAVE_USTAT}'; echo '' + @echo 'HAVE_GETSID=${HAVE_GETSID}'; echo '' + @echo 'HAVE_GETPGID=${HAVE_GETPGID}'; echo '' + @echo 'HAVE_GETTIME=${HAVE_GETTIME}'; echo '' + @echo 'HAVE_GETPRID=${HAVE_GETPRID}'; echo '' + @echo 'HAVE_URANDOM=${HAVE_URANDOM}'; echo '' + @echo 'ALIGN32=${ALIGN32}'; echo '' + @echo 'BINDIR=${BINDIR}'; echo '' + @echo 'TOPDIR=${TOPDIR}'; echo '' + @echo 'LIBDIR=${LIBDIR}'; echo '' + @echo 'HELPDIR=${HELPDIR}'; echo '' + @echo 'CUSTOMLIBDIR=${CUSTOMLIBDIR}'; echo '' + @echo 'CUSTOMHELPDIR=${CUSTOMHELPDIR}'; echo '' + @echo 'SCRIPTDIR=${SCRIPTDIR}'; echo '' + @echo 'MANDIR=${MANDIR}'; echo '' + @echo 'CATDIR=${CATDIR}'; echo '' + @echo 'MANEXT=${MANEXT}'; echo '' + @echo 'CATEXT=${CATEXT}'; echo '' + @echo 'NROFF=${NROFF}'; echo '' + @echo 'NROFF_ARG=${NROFF_ARG}'; echo '' + @echo 'MANMAKE=${MANMAKE}'; echo '' + @echo 'CALCPATH=${CALCPATH}'; echo '' + @echo 'CALCRC=${CALCRC}'; echo '' + @echo 'CALCPAGER=${CALCPAGER}'; echo '' + @echo 'DEBUG=${DEBUG}'; echo '' + @echo 'NO_SHARED=${NO_SHARED}'; echo '' + @echo 'LD_NO_SHARED=${LD_NO_SHARED}'; echo '' + @echo 'RANLIB=${RANLIB}'; echo '' + @echo 'MAKE_FILE=${MAKE_FILE}'; echo '' + @echo 'PURIFY=${PURIFY}'; echo '' + @echo 'LD_DEBUG=${LD_DEBUG}'; echo '' + @echo 'CALC_ENV=${CALC_ENV}'; echo '' + @echo 'ALLOW_CUSTOM=${ALLOW_CUSTOM}'; echo '' + @echo 'CCOPT=${CCOPT}'; echo '' + @echo 'CCWARN=${CCWARN}'; echo '' + @echo 'CCMISC=${CCMISC}'; echo '' + @echo 'CFLAGS=${CFLAGS}'; echo '' + @echo 'ICFLAGS=${ICFLAGS}'; echo '' + @echo 'LDFLAGS=${LDFLAGS}'; echo '' + @echo 'ILDFLAGS=${ILDFLAGS}'; echo '' + @echo 'LCC=${LCC}'; echo '' + @echo 'CC=${CC}'; echo '' + @echo 'SHELL=${SHELL}'; echo '' + @echo 'MAKE=${MAKE}'; echo '' + @echo 'AWK=${AWK}'; echo '' + @echo 'SED=${SED}'; echo '' + @echo 'SORT=${SORT}'; echo '' + @echo 'TEE=${TEE}'; echo '' + @echo 'CTAGS=${CTAGS}'; echo '' + @echo 'MAKEDEPEND=${MAKEDEPEND}'; echo '' + @echo 'Q=${Q}'; echo '' + @echo 'V=${V}'; echo '' + @echo 'LIBSRC=${LIBSRC}'; echo '' + @echo 'LIBOBJS=${LIBOBJS}'; echo '' + @echo 'CALCSRC=${CALCSRC}'; echo '' + @echo 'CALCOBJS=${CALCOBJS}'; echo '' + @echo 'BUILD_H_SRC=${BUILD_H_SRC}'; echo '' + @echo 'BUILD_C_SRC=${BUILD_C_SRC}'; echo '' + @echo 'UTIL_C_SRC=${UTIL_C_SRC}'; echo '' + @echo 'UTIL_MISC_SRC=${UTIL_MISC_SRC}'; echo '' + @echo 'UTIL_OBJS=${UTIL_OBJS}'; echo '' + @echo 'UTIL_TMP=${UTIL_TMP}'; echo '' + @echo 'UTIL_PROGS=${UTIL_PROGS}'; echo '' + @echo 'LIB_H_SRC=${LIB_H_SRC}'; echo '' + @echo 'CUSTOM_PASSDOWN=${CUSTOM_PASSDOWN}'; echo '' + @echo 'SAMPLE_PASSDOWN=${SAMPLE_PASSDOWN}'; echo '' + @echo 'HELP_PASSDOWN=${HELP_PASSDOWN}'; echo '' + @echo 'CAL_PASSDOWN=${CAL_PASSDOWN}'; echo '' + @echo 'CSCRIPT_PASSDOWN=${CSCRIPT_PASSDOWN}'; echo '' + @echo 'H_SRC=${H_SRC}'; echo '' + @echo 'C_SRC=${C_SRC}'; echo '' + @echo 'DISTLIST=${DISTLIST}'; echo '' + @echo 'OBJS=${OBJS}'; echo '' + @echo 'CALC_LIBS=${CALC_LIBS}'; echo '' + @echo 'PROGS=${PROGS}'; echo '' + @echo 'TARGETS=${TARGETS}'; echo '' @echo '=-=-=-=-= end of major make variable dump =-=-=-=-=' mkdebug: env version.c diff --git a/README.WINDOWS b/README.WINDOWS new file mode 100644 index 0000000..888f590 --- /dev/null +++ b/README.WINDOWS @@ -0,0 +1,113 @@ +Dear calc user on a Windoz based system, + +See the HOWTO.INSTALL file for information on how to build and install calc. +See also the README file. + +NOTE: The Windoz port is extremely experimental, untested and perhaps + incomplete. We are in the process of making it easier. The + following should help anyone who is trying to make a go of this + under the current code conditions. + +NOTE: We are currently ONLY making an effort to support building under + Windoz using the Cygwin project (http://sources.redhat.com/cygwin/) + with the GCC compiler and Un*x tools for Windows. + +NOTE: The main developers do not have access to a Windoz based platform. + While we will make an effort to not break calc Windoz based system, + our lack of a Windoz test environment will mean we will make mistakes + from time to time. Hopefully Windowz users can overcome these mistakes. + Of course you are welcome to send us any patches that fix your + Windoz build environment. + +=-= + +An effort is being made to allow windows users to compile calc using the +Cygwin project (http://sources.redhat.com/cygwin/) with the GCC compiler +and Un*x tools for Windows. + +The major porting work was performed by Thomas Jones-Low +(tjoneslo at softstart dot com). He said: + + I had previous stated to this group that I have successfully managed + to port a version of Calc to Windows, and promised some point to + post what was required, so here it is. + + One obvious manner of doing this port is to get the latest version + of the Cygwin project (http://sources.redhat.com/cygwin/) with the + GCC compiler and Un*x tools for Windows and recompile. + + I built my working version using Calc ... I am using Visual C++ + version 7.0, which is an older version of the Microsoft development + tools. The make file provided with Calc is not compatible with + NMAKE, so I used the Visual Studio tools to generate another one + (not included). Calc is built in two parts, calc.dll, which is the + library, and calcexe.exe which is the command line interface. + +He recommends that you generate by hand all of the header files generated +by the make file: + + align32.h args.h calcerr.h conf.h endian_calc.h + fposval.h have_const.h have_fpos.h have_fpos_pos.h have_malloc.h + have_memmv.h have_newstr.h have_offscl.h have_posscl.h + have_stdlib.h have_string.h have_times.h have_uid_t.h + have_unistd.h longbits.h longlong.h terminal.h + have_ustat.h have_getsid.h have_getpgid.h + have_gettime.h have_getprid.h have_urandom.h have_rusage.h + have_strdup.h + +NOTE: In a future release, a tarball of these files will be shipped with + calc so that you do not have to do much other than inspect them. + +=-= + +People who maintain calc need to keep in mind the following: + +The following was added to opcodes.h, config.h, zmath.h and value.h: + + #if defined (_WIN32) + #ifdef _EXPORTING + #define DLL __declspec(dllexport) + #else + #define DLL __declspec(dllimport) + #endif + + #else /* Windoz free systems */ + + #define DLL + + #endif /* Windoz free systems */ + +Then DLL was added in front of all the exported functions. For example: + + extern int configtype(char*); + +was changed to: + + DLL extern int configtype(char*); + + +## Copyright (C) 2001 Landon Curt Noll and Thomas Jones-Low +## +## 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: README.WINDOWS,v 29.2 2001/02/25 22:20:38 chongo Exp $ +## @(#) $Source: /usr/local/src/cmd/calc/RCS/README.WINDOWS,v $ +## +## Under source code control: 2001/02/25 14:00:05 +## File existed as early as: 2001 +## +## chongo /\oo/\ http://www.isthe.com/chongo/ +## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/ diff --git a/cal/qtime.cal b/cal/qtime.cal index ee303c7..7ea2546 100644 --- a/cal/qtime.cal +++ b/cal/qtime.cal @@ -1,24 +1,46 @@ /* * qtime - Display time as English sentence * + * Copyright (C) 1999 Klaus Alexander Seistrup and Landon Curt Noll + * + * Written by: Klaus Alexander Seistrup + * With mods by: 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.4 $ + * @(#) $Id: qtime.cal,v 29.4 2000/12/18 10:18:40 chongo Exp $ + * @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/qtime.cal,v $ + * + * Under source code control: 1999/10/13 04:10:33 + * File existed as early as: 1999 + * + * chongo /\oo/\ http://www.isthe.com/chongo/ + * Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/ + */ + +/* * usage: * qtime(utc_hr_offset) * * utc_hr_offset Offset from UTC in hours. * - * Written by: Klaus Alexander Seistrup - * With minor mods by: Landon Curt Noll - * * See: * http://www.magnetic-ink.dk/download/qtime.html * * for examples of qtime() written on other languages. - * - * @(#) $Revision: 29.2 $ - * @(#) $Id: qtime.cal,v 29.2 2000/06/07 14:02:25 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. */ diff --git a/calc.c b/calc.c index 767a680..71e78ba 100644 --- a/calc.c +++ b/calc.c @@ -19,8 +19,8 @@ * 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.5 $ - * @(#) $Id: calc.c,v 29.5 2000/07/17 15:35:49 chongo Exp $ + * @(#) $Revision: 29.6 $ + * @(#) $Id: calc.c,v 29.6 2001/02/25 22:07:36 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/calc.c,v $ * * Under source code control: 1990/02/15 01:48:11 @@ -36,6 +36,18 @@ #include #include +#if defined (_WIN32) +#include +/* + * getopt.h file is from the Cygwin GNU library + * + * See: + * http://sources.redhat.com/cygwin/ + */ +#include "../getopt/getopt.h" +#define strdup _strdup +#endif /* Windoz */ + #define CALC_C #include "calc.h" #include "hist.h" diff --git a/config.h b/config.h index 919487f..276dffa 100644 --- a/config.h +++ b/config.h @@ -19,8 +19,8 @@ * 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.4 $ - * @(#) $Id: config.h,v 29.4 2000/07/17 15:35:49 chongo Exp $ + * @(#) $Revision: 29.5 $ + * @(#) $Id: config.h,v 29.5 2001/02/25 22:07:36 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/config.h,v $ * * Under source code control: 1995/11/01 22:20:17 @@ -35,6 +35,20 @@ #define __CONFIG_H__ +#if defined (_WIN32) +#ifdef _EXPORTING + #define DLL __declspec(dllexport) +#else + #define DLL __declspec(dllimport) +#endif + +#else /* Windoz free systems */ + + #define DLL + +#endif /* Windoz free systems */ + + #include "nametype.h" #include "qmath.h" @@ -193,12 +207,12 @@ extern char *user_debug; /* !=NULL => value of config("user_debug") */ /* * configuration externals */ -extern CONFIG *config_copy(CONFIG *src); -extern void config_free(CONFIG *cfg); -extern void config_print(CONFIG *cfg); -extern int configtype(char*); -extern void config_print(CONFIG*); -extern BOOL config_cmp(CONFIG*, CONFIG*); +DLL extern CONFIG *config_copy(CONFIG *src); +DLL extern void config_free(CONFIG *cfg); +DLL extern void config_print(CONFIG *cfg); +DLL extern int configtype(char*); +DLL extern void config_print(CONFIG*); +DLL extern BOOL config_cmp(CONFIG*, CONFIG*); #endif /* !__CONFIG_H__ */ diff --git a/cscript/square.calc b/cscript/square.calc index 1c60467..24e15b6 100644 --- a/cscript/square.calc +++ b/cscript/square.calc @@ -2,7 +2,7 @@ # # sqaure - print the squares of input values # -# Copyright (C) 2000 Landon Curt Noll +# Copyright (C) 2000 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 @@ -18,8 +18,8 @@ # 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: square.calc,v 29.1 2000/12/15 14:55:59 chongo Exp $ +# @(#) $Revision: 29.3 $ +# @(#) $Id: square.calc,v 29.3 2000/12/17 14:31:58 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/cscript/RCS/square.calc,v $ # # Under source code control: 2000/12/15 06:52:01 @@ -27,8 +27,38 @@ # # Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/ -# usage: -# mersenne exp +# Usage: +# +# From the shell: +# +# ./square +# cat file | ./square +# echo "123" | ./square +# +# Within calc: +# +# > read square +# +# With input from a terminal, there is no prompt but each non-empty +# line of input is evaluated as a calc expression and if it can be +# calculated, the square of the value of that expression is displayed. +# Execution stops when an empty line is input. +# +# From the shell: +# +# ./square +# +# The following shows lines of input followed by output: +# +# 1234 +# 1522756 +# ln(2) +# ~.48045301391820142467 +# config("mode","frac"), bernoulli(10) +# 25/4356 +# config("mode", "hex"), 0xff +# 0xfe01 +# global s; while ((s = prompt(""))) diff --git a/file.c b/file.c index 278dade..d801a68 100644 --- a/file.c +++ b/file.c @@ -19,8 +19,8 @@ * 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: file.c,v 29.3 2000/12/17 12:24:42 chongo Exp $ + * @(#) $Revision: 29.5 $ + * @(#) $Id: file.c,v 29.5 2001/02/25 22:07:36 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/file.c,v $ * * Under source code control: 1991/07/20 00:21:56 @@ -35,7 +35,10 @@ #include #include #include +#include "have_unistd.h" +#if defined(HAVE_UNISTD_H) #include +#endif /* HAVE_UNISTD_H */ #include #include "calc.h" #include "longbits.h" @@ -1179,7 +1182,7 @@ filepos2z(FILEPOS pos) ret.len = FILEPOS_BITS/BASEB; ret.v = alloc(ret.len); zclearval(ret); - SWAP_HALF_IN_FILEPOS(ret.v, &pos); + SWAP_HALF_IN_FILEPOS(ret.v, (HALF *)&pos); ret.sign = 0; ztrim(&ret); diff --git a/fposval.c b/fposval.c index e371de8..837ac2b 100644 --- a/fposval.c +++ b/fposval.c @@ -17,8 +17,8 @@ * 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: fposval.c,v 29.3 2000/12/17 12:25:36 chongo Exp $ + * @(#) $Revision: 29.5 $ + * @(#) $Id: fposval.c,v 29.5 2001/02/25 21:01:34 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/fposval.c,v $ * * Under source code control: 1994/11/05 03:19:52 @@ -85,13 +85,12 @@ main(int argc, char **argv) * print the file position information */ #if defined(HAVE_FPOS_POS) - printf("#undef FILEPOS_BITS\n"); - printf("#define FILEPOS_BITS %d\n", FPOS_POS_BITS); + fileposlen = FPOS_POS_BITS; #else /* ! HAVE_FPOS_POS */ fileposlen = sizeof(FILEPOS)*8; +#endif /* ! HAVE_FPOS_POS */ printf("#undef FILEPOS_BITS\n"); printf("#define FILEPOS_BITS %d\n", fileposlen); -#endif /* ! HAVE_FPOS_POS */ #if CALC_BYTE_ORDER == BIG_ENDIAN /* * Big Endian diff --git a/func.c b/func.c index de3153b..cad9b41 100644 --- a/func.c +++ b/func.c @@ -19,8 +19,8 @@ * 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.5 $ - * @(#) $Id: func.c,v 29.5 2000/12/04 19:32:33 chongo Exp $ + * @(#) $Revision: 29.6 $ + * @(#) $Id: func.c,v 29.6 2001/02/25 22:07:36 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/func.c,v $ * * Under source code control: 1990/02/15 01:48:15 @@ -35,6 +35,11 @@ #include #include +#if defined(_WIN32) +#include +#define _access access +#endif /* Windoz */ + #if defined(FUNCLIST) #define CONST /* disabled for FUNCLIST in case NATIVE_CC doesn't have it */ @@ -4922,10 +4927,14 @@ f_listremove(VALUE *vp) static NUMBER * f_runtime(void) { +#if defined(_WIN32) + return qlink(&_qzero_); +#else /* Windoz free systems */ struct tms buf; times(&buf); return iitoq((long) buf.tms_utime, (long) CLK_TCK); +#endif /* Windoz free systems */ } diff --git a/help.c b/help.c index 2866df6..9a690ab 100644 --- a/help.c +++ b/help.c @@ -17,8 +17,8 @@ * 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.4 $ - * @(#) $Id: help.c,v 29.4 2000/06/07 14:02:13 chongo Exp $ + * @(#) $Revision: 29.5 $ + * @(#) $Id: help.c,v 29.5 2001/02/25 22:07:36 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/help.c,v $ * * Under source code control: 1997/09/14 10:58:30 @@ -105,7 +105,11 @@ page_file(FILE *stream) /* * form a write pipe to a pager */ - cmd = popen(pager, "w"); + if (pager == NULL || pager[0] == '\0') { + cmd = stdout; + } else { + cmd = popen(pager, "w"); + } if (cmd == NULL) { fprintf(stderr, "unable form pipe to pager: %s", pager); return; diff --git a/input.c b/input.c index 24da6c8..bd02269 100644 --- a/input.c +++ b/input.c @@ -17,8 +17,8 @@ * 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: input.c,v 29.3 2000/07/17 15:35:49 chongo Exp $ + * @(#) $Revision: 29.4 $ + * @(#) $Id: input.c,v 29.4 2001/02/25 22:07:36 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/input.c,v $ * * Under source code control: 1990/02/15 01:48:16 @@ -35,7 +35,9 @@ #include #include +#if !defined(_WIN32) #include +#endif /* Windoz free systems */ #include #include @@ -257,6 +259,12 @@ opensearchfile(char *name, char *pathlist, char *extension, int rd_once) static char * homeexpand(char *name) { +#if defined (_WIN32) + + return NULL; + +#else /* Windoz free systems */ + struct passwd *ent; /* password entry */ char *home2; /* fullpath of the home directory */ char *fullpath; /* the malloced expanded path */ @@ -323,6 +331,7 @@ homeexpand(char *name) } sprintf(fullpath, "%s%s", home2, after); return fullpath; +#endif /* Windoz free systems */ } diff --git a/lib_calc.c b/lib_calc.c index 448ed9c..6a861bb 100644 --- a/lib_calc.c +++ b/lib_calc.c @@ -17,8 +17,8 @@ * 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.4 $ - * @(#) $Id: lib_calc.c,v 29.4 2000/07/17 15:35:49 chongo Exp $ + * @(#) $Revision: 29.5 $ + * @(#) $Id: lib_calc.c,v 29.5 2001/02/25 22:07:36 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/lib_calc.c,v $ * * Under source code control: 1996/06/17 18:06:19 @@ -68,11 +68,16 @@ typedef struct termios ttystruct; # include typedef struct termio ttystruct; -#else /* assume USE_SGTTY */ +#elif defined(USE_SGTTY) # include typedef struct sgttyb ttystruct; +#elif !defined(_WIN32) + +-=*#*=- A Windoz free system without termio, termios or sgtty!!! -=*#*=- +-=*#*=- We do not know how to compile for such a host, sorry!!!! -=*#*=- + #endif /* @@ -192,7 +197,9 @@ libcalc_call_me_first(void) * Disable SIGPIPE so that the pipe to the help file pager will * not stop calc. */ +#if !defined(_WIN32) (void) signal(SIGPIPE, SIG_IGN); +#endif /* Windoz free systems */ /* * determine the basename @@ -373,7 +380,9 @@ cvmalloc_error(char *message) static void initenv(void) { +#if !defined(_WIN32) struct passwd *ent; /* our password entry */ +#endif /* Windoz free systems */ char *c; /* determine the $CALCPATH value */ @@ -402,6 +411,12 @@ initenv(void) /* determine the $HOME value */ c = (no_env ? NULL : getenv(HOME)); home = (c ? strdup(c) : NULL); +#if defined(_WIN32) + if (home == NULL || home[0] == '\0') { + /* just assume . is home if all else fails */ + home = "."; + } +#else /* Windoz free systems */ if (home == NULL || home[0] == '\0') { ent = (struct passwd *)getpwuid(geteuid()); if (ent == NULL) { @@ -411,6 +426,7 @@ initenv(void) home = (char *)malloc(strlen(ent->pw_dir)+1); strcpy(home, ent->pw_dir); } +#endif /* Windoz free systems */ /* determine the $PAGER value */ c = (no_env ? NULL : getenv(PAGER)); diff --git a/longlong.c b/longlong.c index cee2dd2..ec8cbec 100644 --- a/longlong.c +++ b/longlong.c @@ -17,8 +17,8 @@ * 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: longlong.c,v 29.2 2000/06/07 14:02:13 chongo Exp $ + * @(#) $Revision: 29.3 $ + * @(#) $Id: longlong.c,v 29.3 2001/02/23 20:46:38 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/longlong.c,v $ * * Under source code control: 1994/08/05 01:09:19 @@ -119,10 +119,10 @@ main(int argc, char **argv) printf(" * if defined(L64_FORMAT), ok to use %%ld\n"); printf(" * if !defined(L64_FORMAT), use %%lld\n"); printf(" */\n"); - if (buf[0] == '-') { - printf("#undef L64_FORMAT\n"); - } else { + if (strcmp(buf, "1311768467284833366") == 0) { printf("#define L64_FORMAT\n"); + } else { + printf("#undef L64_FORMAT\n"); } /* diff --git a/opcodes.h b/opcodes.h index fd8ae90..ce2c7f1 100644 --- a/opcodes.h +++ b/opcodes.h @@ -17,8 +17,8 @@ * 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: opcodes.h,v 29.2 2000/06/07 14:02:13 chongo Exp $ + * @(#) $Revision: 29.3 $ + * @(#) $Id: opcodes.h,v 29.3 2001/02/25 22:07:36 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/opcodes.h,v $ * * Under source code control: 1990/02/15 01:48:35 @@ -32,6 +32,20 @@ #define __OPCODES_H__ +#if defined (_WIN32) +#ifdef _EXPORTING + #define DLL __declspec(dllexport) +#else + #define DLL __declspec(dllimport) +#endif + +#else /* Windoz free systems */ + + #define DLL + +#endif /* Windoz free systems */ + + /* * Opcodes */ diff --git a/seed.c b/seed.c index 6decd93..876f382 100644 --- a/seed.c +++ b/seed.c @@ -17,8 +17,8 @@ * 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: seed.c,v 29.2 2000/06/07 14:02:13 chongo Exp $ + * @(#) $Revision: 29.3 $ + * @(#) $Id: seed.c,v 29.3 2001/02/25 22:07:36 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/seed.c,v $ * * Under source code control: 1999/10/03 10:06:53 @@ -40,7 +40,16 @@ #include #include + +#include "have_unistd.h" +#if defined(HAVE_UNISTD_H) #include +#endif + +#if defined(_WIN32) +#include +#define pid_t int +#endif /* Windoz */ /* * PORTING NOTE: @@ -55,10 +64,19 @@ */ #include #include +#include "have_times.h" +#if defined(HAVE_TIME_H) #include +#endif +#if defined(HAVE_SYS_TIME_H) #include +#endif +#if defined(HAVE_SYS_TIMES_H) #include +#endif +#if !defined(_WIN32) #include +#endif /* Windoz free systems */ #include #include "qmath.h" #include "longbits.h" @@ -69,14 +87,15 @@ #include "have_getprid.h" #include "have_urandom.h" #include "have_rusage.h" +#include "have_uid_t.h" #if defined(HAVE_USTAT) # include -#endif /* HAVE_USTAT */ +#endif #if defined(HAVE_URANDOM) # include # define DEV_URANDOM "/dev/urandom" # define DEV_URANDOM_POOL 16 -#endif /* HAVE_URANDOM */ +#endif /* @@ -272,26 +291,30 @@ pseudo_seed(void) #if defined(HAVE_GETTIME) # if defined(CLOCK_SGI_CYCLE) struct timespec sgi_cycle; /* SGI hardware clock */ -# endif /* CLOCK_SGI_CYCLE */ +# endif # if defined(CLOCK_REALTIME) struct timespec realtime; /* POSIX realtime clock */ -# endif /* CLOCK_REALTIME */ -#endif /* HAVE_GETTIME */ +# endif +#endif #if defined(HAVE_GETPRID) prid_t getprid; /* project ID */ -#endif /* HAVE_GETPRID */ +#endif #if defined(HAVE_URANDOM) int urandom_fd; /* open descriptor for /dev/urandom */ int urandom_ret; /* read() of /dev/random */ char urandom_pool[DEV_URANDOM_POOL]; /* /dev/urandom data pool */ -#endif /* HAVE_URANDOM */ +#endif +#if defined(HAVE_SYS_TIME_H) struct timeval tp; /* time of day */ +#endif pid_t getpid; /* process ID */ pid_t getppid; /* parent process ID */ +#if defined(HAVE_UID_T) uid_t getuid; /* real user ID */ uid_t geteuid; /* effective user ID */ gid_t getgid; /* real group ID */ gid_t getegid; /* effective group ID */ +#endif struct stat stat_dot; /* stat of "." */ struct stat stat_dotdot; /* stat of ".." */ struct stat stat_tmp; /* stat of "/tmp" */ @@ -307,19 +330,21 @@ pseudo_seed(void) struct ustat ustat_stdin; /* usage stat of stdin */ struct ustat ustat_stdout; /* usage stat of stdout */ struct ustat ustat_stderr; /* usage stat of stderr */ -#endif /* HAVE_USTAT */ +#endif #if defined(HAVE_GETSID) pid_t getsid; /* session ID */ -#endif /* HAVE_GETSID */ +#endif #if defined(HAVE_GETPGID) pid_t getpgid; /* process group ID */ -#endif /* HAVE_GETPGID */ +#endif #if defined(HAVE_GETRUSAGE) struct rusage rusage; /* resource utilization */ struct rusage rusage_chld; /* resource utilization of children */ -#endif /* HAVE_GETRUSAGE */ +#endif +#if defined(HAVE_SYS_TIME_H) struct timeval tp2; /* time of day again */ struct tms times; /* process times */ +#endif time_t time; /* local time */ size_t size; /* size of this data structure */ jmp_buf env; /* setjmp() context */ @@ -339,14 +364,14 @@ pseudo_seed(void) #if defined(HAVE_GETTIME) # if defined(CLOCK_SGI_CYCLE) (void) clock_gettime(CLOCK_SGI_CYCLE, &sdata.sgi_cycle); -# endif /* CLOCK_SGI_CYCLE */ +# endif # if defined(CLOCK_REALTIME) (void) clock_gettime(CLOCK_REALTIME, &sdata.realtime); -# endif /* CLOCK_REALTIME */ -#endif /* HAVE_GETTIME */ +# endif +#endif #if defined(HAVE_GETPRID) sdata.getprid = getprid(); -#endif /* HAVE_GETPRID */ +#endif #if defined(HAVE_URANDOM) sdata.urandom_fd = open(DEV_URANDOM, O_NONBLOCK|O_RDONLY); if (sdata.urandom_fd >= 0) { @@ -358,13 +383,17 @@ pseudo_seed(void) sdata.urandom_ret = EOF; } #endif /* HAVE_URANDOM */ +#if defined(HAVE_SYS_TIME_H) (void) gettimeofday(&sdata.tp, NULL); +#endif sdata.getpid = getpid(); sdata.getppid = getppid(); +#if defined(HAVE_UID_T) sdata.getuid = getuid(); sdata.geteuid = geteuid(); sdata.getgid = getgid(); sdata.getegid = getegid(); +#endif (void) stat(".", &sdata.stat_dot); (void) stat("..", &sdata.stat_dotdot); (void) stat("/tmp", &sdata.stat_tmp); @@ -380,19 +409,21 @@ pseudo_seed(void) (void) ustat(sdata.fstat_stdin.st_dev, &sdata.ustat_stdin); (void) ustat(sdata.fstat_stdout.st_dev, &sdata.ustat_stdout); (void) ustat(sdata.fstat_stderr.st_dev, &sdata.ustat_stderr); -#endif /* HAVE_USTAT */ +#endif #if defined(HAVE_GETSID) sdata.getsid = getsid((pid_t)0); -#endif /* HAVE_GETSID */ +#endif #if defined(HAVE_GETPGID) sdata.getpgid = getpgid((pid_t)0); -#endif /* HAVE_GETPGID */ +#endif #if defined(HAVE_GETRUSAGE) (void) getrusage(RUSAGE_SELF, &sdata.rusage); (void) getrusage(RUSAGE_CHILDREN, &sdata.rusage_chld); -#endif /* HAVE_GETRUSAGE */ +#endif +#if defined(HAVE_SYS_TIME_H) (void) gettimeofday(&sdata.tp2, NULL); (void) times(&sdata.times); +#endif sdata.time = time(NULL); sdata.size = sizeof(sdata); (void) setjmp(sdata.env); diff --git a/value.h b/value.h index 594595b..f140535 100644 --- a/value.h +++ b/value.h @@ -17,8 +17,8 @@ * 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: value.h,v 29.3 2000/07/17 15:35:49 chongo Exp $ + * @(#) $Revision: 29.4 $ + * @(#) $Id: value.h,v 29.4 2001/02/25 22:07:36 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/value.h,v $ * * Under source code control: 1993/07/30 19:42:47 @@ -32,6 +32,20 @@ #define __VALUE_H__ +#if defined (_WIN32) +#ifdef _EXPORTING + #define DLL __declspec(dllexport) +#else + #define DLL __declspec(dllimport) +#endif + +#else /* Windoz free systems */ + + #define DLL + +#endif /* Windoz free systems */ + + #include "cmath.h" #include "config.h" #include "shs.h" @@ -187,59 +201,59 @@ struct value { /* * value functions */ -extern void freevalue(VALUE *vp); -extern void copyvalue(VALUE *vp, VALUE *vres); -extern void negvalue(VALUE *vp, VALUE *vres); -extern void addvalue(VALUE *v1, VALUE *v2, VALUE *vres); -extern void subvalue(VALUE *v1, VALUE *v2, VALUE *vres); -extern void mulvalue(VALUE *v1, VALUE *v2, VALUE *vres); -extern void orvalue(VALUE *v1, VALUE *v2, VALUE *vres); -extern void andvalue(VALUE *v1, VALUE *v2, VALUE *vres); -extern void compvalue(VALUE *vp, VALUE *vres); -extern void xorvalue(VALUE *v1, VALUE *v2, VALUE *vres); -extern void squarevalue(VALUE *vp, VALUE *vres); -extern void invertvalue(VALUE *vp, VALUE *vres); -extern void roundvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); -extern void broundvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); -extern void setminusvalue(VALUE *, VALUE *, VALUE *); -extern void backslashvalue(VALUE *, VALUE *); -extern void contentvalue(VALUE *, VALUE *); -extern void hashopvalue(VALUE *, VALUE *, VALUE *); -extern void apprvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); -extern void intvalue(VALUE *vp, VALUE *vres); -extern void fracvalue(VALUE *vp, VALUE *vres); -extern void incvalue(VALUE *vp, VALUE *vres); -extern void decvalue(VALUE *vp, VALUE *vres); -extern void conjvalue(VALUE *vp, VALUE *vres); -extern void sqrtvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); -extern void rootvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); -extern void absvalue(VALUE *v1, VALUE *v2, VALUE *vres); -extern void normvalue(VALUE *vp, VALUE *vres); -extern void shiftvalue(VALUE *v1, VALUE *v2, BOOL rightshift, VALUE *vres); -extern void scalevalue(VALUE *v1, VALUE *v2, VALUE *vres); -extern void powivalue(VALUE *v1, VALUE *v2, VALUE *vres); -extern void powervalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); -extern void divvalue(VALUE *v1, VALUE *v2, VALUE *vres); -extern void quovalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); -extern void modvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); -extern BOOL testvalue(VALUE *vp); -extern BOOL comparevalue(VALUE *v1, VALUE *v2); -extern BOOL acceptvalue(VALUE *v1, VALUE *v2); -extern void relvalue(VALUE *v1, VALUE *v2, VALUE *vres); -extern void sgnvalue(VALUE *vp, VALUE *vres); -extern QCKHASH hashvalue(VALUE *vp, QCKHASH val); -extern void printvalue(VALUE *vp, int flags); -extern BOOL precvalue(VALUE *v1, VALUE *v2); -extern VALUE error_value(int e); -extern int set_errno(int e); -extern int set_errcount(int e); -extern long countlistitems(LIST *lp); -extern void addlistitems(LIST *lp, VALUE *vres); -extern void addlistinv(LIST *lp, VALUE *vres); -extern void copy2octet(VALUE *, OCTET *); -extern int copystod(VALUE *, long, long, VALUE *, long); -extern void protectall(VALUE *, int); -extern void set_update(int); +DLL extern void freevalue(VALUE *vp); +DLL extern void copyvalue(VALUE *vp, VALUE *vres); +DLL extern void negvalue(VALUE *vp, VALUE *vres); +DLL extern void addvalue(VALUE *v1, VALUE *v2, VALUE *vres); +DLL extern void subvalue(VALUE *v1, VALUE *v2, VALUE *vres); +DLL extern void mulvalue(VALUE *v1, VALUE *v2, VALUE *vres); +DLL extern void orvalue(VALUE *v1, VALUE *v2, VALUE *vres); +DLL extern void andvalue(VALUE *v1, VALUE *v2, VALUE *vres); +DLL extern void compvalue(VALUE *vp, VALUE *vres); +DLL extern void xorvalue(VALUE *v1, VALUE *v2, VALUE *vres); +DLL extern void squarevalue(VALUE *vp, VALUE *vres); +DLL extern void invertvalue(VALUE *vp, VALUE *vres); +DLL extern void roundvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); +DLL extern void broundvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); +DLL extern void setminusvalue(VALUE *, VALUE *, VALUE *); +DLL extern void backslashvalue(VALUE *, VALUE *); +DLL extern void contentvalue(VALUE *, VALUE *); +DLL extern void hashopvalue(VALUE *, VALUE *, VALUE *); +DLL extern void apprvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); +DLL extern void intvalue(VALUE *vp, VALUE *vres); +DLL extern void fracvalue(VALUE *vp, VALUE *vres); +DLL extern void incvalue(VALUE *vp, VALUE *vres); +DLL extern void decvalue(VALUE *vp, VALUE *vres); +DLL extern void conjvalue(VALUE *vp, VALUE *vres); +DLL extern void sqrtvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); +DLL extern void rootvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); +DLL extern void absvalue(VALUE *v1, VALUE *v2, VALUE *vres); +DLL extern void normvalue(VALUE *vp, VALUE *vres); +DLL extern void shiftvalue(VALUE *v1, VALUE *v2, BOOL rightshift, VALUE *vres); +DLL extern void scalevalue(VALUE *v1, VALUE *v2, VALUE *vres); +DLL extern void powivalue(VALUE *v1, VALUE *v2, VALUE *vres); +DLL extern void powervalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); +DLL extern void divvalue(VALUE *v1, VALUE *v2, VALUE *vres); +DLL extern void quovalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); +DLL extern void modvalue(VALUE *v1, VALUE *v2, VALUE *v3, VALUE *vres); +DLL extern BOOL testvalue(VALUE *vp); +DLL extern BOOL comparevalue(VALUE *v1, VALUE *v2); +DLL extern BOOL acceptvalue(VALUE *v1, VALUE *v2); +DLL extern void relvalue(VALUE *v1, VALUE *v2, VALUE *vres); +DLL extern void sgnvalue(VALUE *vp, VALUE *vres); +DLL extern QCKHASH hashvalue(VALUE *vp, QCKHASH val); +DLL extern void printvalue(VALUE *vp, int flags); +DLL extern BOOL precvalue(VALUE *v1, VALUE *v2); +DLL extern VALUE error_value(int e); +DLL extern int set_errno(int e); +DLL extern int set_errcount(int e); +DLL extern long countlistitems(LIST *lp); +DLL extern void addlistitems(LIST *lp, VALUE *vres); +DLL extern void addlistinv(LIST *lp, VALUE *vres); +DLL extern void copy2octet(VALUE *, OCTET *); +DLL extern int copystod(VALUE *, long, long, VALUE *, long); +DLL extern void protectall(VALUE *, int); +DLL extern void set_update(int); /* @@ -256,44 +270,44 @@ struct matrix { #define matsize(n) (sizeof(MATRIX) - sizeof(VALUE) + ((n) * sizeof(VALUE))) -extern MATRIX *matadd(MATRIX *m1, MATRIX *m2); -extern MATRIX *matsub(MATRIX *m1, MATRIX *m2); -extern MATRIX *matmul(MATRIX *m1, MATRIX *m2); -extern MATRIX *matneg(MATRIX *m); -extern MATRIX *matalloc(long size); -extern MATRIX *matcopy(MATRIX *m); -extern MATRIX *matinit(MATRIX *m, VALUE *v1, VALUE *v2); -extern MATRIX *matsquare(MATRIX *m); -extern MATRIX *matinv(MATRIX *m); -extern MATRIX *matscale(MATRIX *m, long n); -extern MATRIX *matshift(MATRIX *m, long n); -extern MATRIX *matmulval(MATRIX *m, VALUE *vp); -extern MATRIX *matpowi(MATRIX *m, NUMBER *q); -extern MATRIX *matconj(MATRIX *m); -extern MATRIX *matquoval(MATRIX *m, VALUE *vp, VALUE *v3); -extern MATRIX *matmodval(MATRIX *m, VALUE *vp, VALUE *v3); -extern MATRIX *matint(MATRIX *m); -extern MATRIX *matfrac(MATRIX *m); -extern MATRIX *matappr(MATRIX *m, VALUE *v2, VALUE *v3); -extern VALUE mattrace(MATRIX *m); -extern MATRIX *mattrans(MATRIX *m); -extern MATRIX *matcross(MATRIX *m1, MATRIX *m2); -extern BOOL mattest(MATRIX *m); -extern void matsum(MATRIX *m, VALUE *vres); -extern BOOL matcmp(MATRIX *m1, MATRIX *m2); -extern int matsearch(MATRIX *m, VALUE *vp, long start, long end, ZVALUE *index); -extern int matrsearch(MATRIX *m, VALUE *vp, long start, long end, ZVALUE *index); -extern VALUE matdet(MATRIX *m); -extern VALUE matdot(MATRIX *m1, MATRIX *m2); -extern void matfill(MATRIX *m, VALUE *v1, VALUE *v2); -extern void matfree(MATRIX *m); -extern void matprint(MATRIX *m, long max_print); -extern VALUE *matindex(MATRIX *mp, BOOL create, long dim, VALUE *indices); -extern void matreverse(MATRIX *m); -extern void matsort(MATRIX *m); -extern BOOL matisident(MATRIX *m); -extern MATRIX *matround(MATRIX *m, VALUE *v2, VALUE *v3); -extern MATRIX *matbround(MATRIX *m, VALUE *v2, VALUE *v3); +DLL extern MATRIX *matadd(MATRIX *m1, MATRIX *m2); +DLL extern MATRIX *matsub(MATRIX *m1, MATRIX *m2); +DLL extern MATRIX *matmul(MATRIX *m1, MATRIX *m2); +DLL extern MATRIX *matneg(MATRIX *m); +DLL extern MATRIX *matalloc(long size); +DLL extern MATRIX *matcopy(MATRIX *m); +DLL extern MATRIX *matinit(MATRIX *m, VALUE *v1, VALUE *v2); +DLL extern MATRIX *matsquare(MATRIX *m); +DLL extern MATRIX *matinv(MATRIX *m); +DLL extern MATRIX *matscale(MATRIX *m, long n); +DLL extern MATRIX *matshift(MATRIX *m, long n); +DLL extern MATRIX *matmulval(MATRIX *m, VALUE *vp); +DLL extern MATRIX *matpowi(MATRIX *m, NUMBER *q); +DLL extern MATRIX *matconj(MATRIX *m); +DLL extern MATRIX *matquoval(MATRIX *m, VALUE *vp, VALUE *v3); +DLL extern MATRIX *matmodval(MATRIX *m, VALUE *vp, VALUE *v3); +DLL extern MATRIX *matint(MATRIX *m); +DLL extern MATRIX *matfrac(MATRIX *m); +DLL extern MATRIX *matappr(MATRIX *m, VALUE *v2, VALUE *v3); +DLL extern VALUE mattrace(MATRIX *m); +DLL extern MATRIX *mattrans(MATRIX *m); +DLL extern MATRIX *matcross(MATRIX *m1, MATRIX *m2); +DLL extern BOOL mattest(MATRIX *m); +DLL extern void matsum(MATRIX *m, VALUE *vres); +DLL extern BOOL matcmp(MATRIX *m1, MATRIX *m2); +DLL extern int matsearch(MATRIX *m, VALUE *vp, long start, long end, ZVALUE *index); +DLL extern int matrsearch(MATRIX *m, VALUE *vp, long start, long end, ZVALUE *index); +DLL extern VALUE matdet(MATRIX *m); +DLL extern VALUE matdot(MATRIX *m1, MATRIX *m2); +DLL extern void matfill(MATRIX *m, VALUE *v1, VALUE *v2); +DLL extern void matfree(MATRIX *m); +DLL extern void matprint(MATRIX *m, long max_print); +DLL extern VALUE *matindex(MATRIX *mp, BOOL create, long dim, VALUE *indices); +DLL extern void matreverse(MATRIX *m); +DLL extern void matsort(MATRIX *m); +DLL extern BOOL matisident(MATRIX *m); +DLL extern MATRIX *matround(MATRIX *m, VALUE *v2, VALUE *v3); +DLL extern MATRIX *matbround(MATRIX *m, VALUE *v2, VALUE *v3); /* @@ -320,32 +334,32 @@ struct list { }; -extern void insertlistfirst(LIST *lp, VALUE *vp); -extern void insertlistlast(LIST *lp, VALUE *vp); -extern void insertlistmiddle(LIST *lp, long index, VALUE *vp); -extern void removelistfirst(LIST *lp, VALUE *vp); -extern void removelistlast(LIST *lp, VALUE *vp); -extern void removelistmiddle(LIST *lp, long index, VALUE *vp); -extern void listfree(LIST *lp); -extern void listprint(LIST *lp, long max_print); -extern int listsearch(LIST *lp, VALUE *vp, long start, long end, ZVALUE *index); -extern int listrsearch(LIST *lp, VALUE *vp, long start, long end, ZVALUE *index); -extern BOOL listcmp(LIST *lp1, LIST *lp2); -extern VALUE *listfindex(LIST *lp, long index); -extern LIST *listalloc(void); -extern LIST *listcopy(LIST *lp); -extern void listreverse(LIST *lp); -extern void listsort(LIST *lp); -extern LIST *listappr(LIST *lp, VALUE *v2, VALUE *v3); -extern LIST *listround(LIST *m, VALUE *v2, VALUE *v3); -extern LIST *listbround(LIST *m, VALUE *v2, VALUE *v3); -extern LIST *listquo(LIST *lp, VALUE *v2, VALUE *v3); -extern LIST *listmod(LIST *lp, VALUE *v2, VALUE *v3); -extern BOOL evp(LISTELEM *cp, LISTELEM *x, VALUE *vres); -extern BOOL evalpoly(LIST *clist, LISTELEM *x, VALUE *vres); -extern void insertitems(LIST *lp1, LIST *lp2); -extern LISTELEM *listelement(LIST *, long); -extern LIST *listsegment(LIST *, long, long); +DLL extern void insertlistfirst(LIST *lp, VALUE *vp); +DLL extern void insertlistlast(LIST *lp, VALUE *vp); +DLL extern void insertlistmiddle(LIST *lp, long index, VALUE *vp); +DLL extern void removelistfirst(LIST *lp, VALUE *vp); +DLL extern void removelistlast(LIST *lp, VALUE *vp); +DLL extern void removelistmiddle(LIST *lp, long index, VALUE *vp); +DLL extern void listfree(LIST *lp); +DLL extern void listprint(LIST *lp, long max_print); +DLL extern int listsearch(LIST *lp, VALUE *vp, long start, long end, ZVALUE *index); +DLL extern int listrsearch(LIST *lp, VALUE *vp, long start, long end, ZVALUE *index); +DLL extern BOOL listcmp(LIST *lp1, LIST *lp2); +DLL extern VALUE *listfindex(LIST *lp, long index); +DLL extern LIST *listalloc(void); +DLL extern LIST *listcopy(LIST *lp); +DLL extern void listreverse(LIST *lp); +DLL extern void listsort(LIST *lp); +DLL extern LIST *listappr(LIST *lp, VALUE *v2, VALUE *v3); +DLL extern LIST *listround(LIST *m, VALUE *v2, VALUE *v3); +DLL extern LIST *listbround(LIST *m, VALUE *v2, VALUE *v3); +DLL extern LIST *listquo(LIST *lp, VALUE *v2, VALUE *v3); +DLL extern LIST *listmod(LIST *lp, VALUE *v2, VALUE *v3); +DLL extern BOOL evp(LISTELEM *cp, LISTELEM *x, VALUE *vres); +DLL extern BOOL evalpoly(LIST *clist, LISTELEM *x, VALUE *vres); +DLL extern void insertitems(LIST *lp1, LIST *lp2); +DLL extern LISTELEM *listelement(LIST *, long); +DLL extern LIST *listsegment(LIST *, long, long); /* @@ -370,15 +384,15 @@ struct assoc { }; -extern ASSOC *assocalloc(long initsize); -extern ASSOC *assoccopy(ASSOC *ap); -extern void assocfree(ASSOC *ap); -extern void assocprint(ASSOC *ap, long max_print); -extern int assocsearch(ASSOC *ap, VALUE *vp, long start, long end, ZVALUE *index); -extern int assocrsearch(ASSOC *ap, VALUE *vp, long start, long end, ZVALUE *index); -extern BOOL assoccmp(ASSOC *ap1, ASSOC *ap2); -extern VALUE *assocfindex(ASSOC *ap, long index); -extern VALUE *associndex(ASSOC *ap, BOOL create, long dim, VALUE *indices); +DLL extern ASSOC *assocalloc(long initsize); +DLL extern ASSOC *assoccopy(ASSOC *ap); +DLL extern void assocfree(ASSOC *ap); +DLL extern void assocprint(ASSOC *ap, long max_print); +DLL extern int assocsearch(ASSOC *ap, VALUE *vp, long start, long end, ZVALUE *index); +DLL extern int assocrsearch(ASSOC *ap, VALUE *vp, long start, long end, ZVALUE *index); +DLL extern BOOL assoccmp(ASSOC *ap1, ASSOC *ap2); +DLL extern VALUE *assocfindex(ASSOC *ap, long index); +DLL extern VALUE *associndex(ASSOC *ap, BOOL create, long dim, VALUE *indices); /* @@ -460,62 +474,62 @@ struct object { (sizeof(OBJECT) + ((elements) - USUAL_ELEMENTS) * sizeof(VALUE)) -extern OBJECT *objcopy(OBJECT *op); -extern OBJECT *objalloc(long index); -extern VALUE objcall(int action, VALUE *v1, VALUE *v2, VALUE *v3); -extern void objfree(OBJECT *op); -extern int addelement(char *name); -extern int defineobject(char *name, int indices[], int count); -extern int checkobject(char *name); -extern void showobjfuncs(void); -extern void showobjtypes(void); -extern int findelement(char *name); -extern char *objtypename(unsigned long index); -extern int objoffset(OBJECT *op, long index); +DLL extern OBJECT *objcopy(OBJECT *op); +DLL extern OBJECT *objalloc(long index); +DLL extern VALUE objcall(int action, VALUE *v1, VALUE *v2, VALUE *v3); +DLL extern void objfree(OBJECT *op); +DLL extern int addelement(char *name); +DLL extern int defineobject(char *name, int indices[], int count); +DLL extern int checkobject(char *name); +DLL extern void showobjfuncs(void); +DLL extern void showobjtypes(void); +DLL extern int findelement(char *name); +DLL extern char *objtypename(unsigned long index); +DLL extern int objoffset(OBJECT *op, long index); /* * Configuration parameter name and type. */ extern NAMETYPE configs[]; -extern void config_value(CONFIG *cfg, int type, VALUE *ret); -extern void setconfig(int type, VALUE *vp); -extern void config_print(CONFIG *cfg); /* the CONFIG to print */ +DLL extern void config_value(CONFIG *cfg, int type, VALUE *ret); +DLL extern void setconfig(int type, VALUE *vp); +DLL extern void config_print(CONFIG *cfg); /* the CONFIG to print */ /* * size, memsize and sizeof support */ -extern long elm_count(VALUE *vp); -extern long lsizeof(VALUE *vp); -extern long memsize(VALUE *vp); +DLL extern long elm_count(VALUE *vp); +DLL extern long lsizeof(VALUE *vp); +DLL extern long memsize(VALUE *vp); /* * String functions */ -extern STRING *stringadd(STRING *, STRING *); -extern STRING *stringcopy(STRING *); -extern STRING *stringsub(STRING *, STRING *); -extern STRING *stringmul(NUMBER *, STRING *); -extern STRING *stringand(STRING *, STRING *); -extern STRING *stringor(STRING *, STRING *); -extern STRING *stringxor(STRING *, STRING *); -extern STRING *stringdiff(STRING *, STRING *); -extern STRING *stringsegment(STRING *, long, long); -extern STRING *stringshift(STRING *, long); -extern STRING *stringcomp(STRING *); -extern STRING *stringneg(STRING *); -extern STRING *stringcpy(STRING *, STRING *); -extern STRING *stringncpy(STRING *, STRING *, long); -extern long stringcontent(STRING *s); -extern long stringlowbit(STRING *s); -extern long stringhighbit(STRING *s); -extern BOOL stringcmp(STRING *, STRING *); -extern BOOL stringrel(STRING *, STRING *); -extern int stringbit(STRING *, long); -extern BOOL stringtest(STRING *); -extern int stringsetbit(STRING *, long, BOOL); -extern int stringsearch(STRING *, STRING *, long, long, ZVALUE *); -extern int stringrsearch(STRING *, STRING *, long, long, ZVALUE *); +DLL extern STRING *stringadd(STRING *, STRING *); +DLL extern STRING *stringcopy(STRING *); +DLL extern STRING *stringsub(STRING *, STRING *); +DLL extern STRING *stringmul(NUMBER *, STRING *); +DLL extern STRING *stringand(STRING *, STRING *); +DLL extern STRING *stringor(STRING *, STRING *); +DLL extern STRING *stringxor(STRING *, STRING *); +DLL extern STRING *stringdiff(STRING *, STRING *); +DLL extern STRING *stringsegment(STRING *, long, long); +DLL extern STRING *stringshift(STRING *, long); +DLL extern STRING *stringcomp(STRING *); +DLL extern STRING *stringneg(STRING *); +DLL extern STRING *stringcpy(STRING *, STRING *); +DLL extern STRING *stringncpy(STRING *, STRING *, long); +DLL extern long stringcontent(STRING *s); +DLL extern long stringlowbit(STRING *s); +DLL extern long stringhighbit(STRING *s); +DLL extern BOOL stringcmp(STRING *, STRING *); +DLL extern BOOL stringrel(STRING *, STRING *); +DLL extern int stringbit(STRING *, long); +DLL extern BOOL stringtest(STRING *); +DLL extern int stringsetbit(STRING *, long, BOOL); +DLL extern int stringsearch(STRING *, STRING *, long, long, ZVALUE *); +DLL extern int stringrsearch(STRING *, STRING *, long, long, ZVALUE *); #endif /* !__VALUE_H__ */ diff --git a/version.c b/version.c index f449303..14ed232 100644 --- a/version.c +++ b/version.c @@ -19,8 +19,8 @@ * 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.18 $ - * @(#) $Id: version.c,v 29.18 2000/12/17 12:31:05 chongo Exp $ + * @(#) $Revision: 29.19 $ + * @(#) $Id: version.c,v 29.19 2001/02/25 22:07:36 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/version.c,v $ * * Under source code control: 1990/05/22 11:00:58 @@ -42,8 +42,8 @@ static char *program; #define MAJOR_VER 2 /* major version */ #define MINOR_VER 11 /* minor version */ -#define MAJOR_PATCH 4 /* patch level or 0 if no patch */ -#define MINOR_PATCH "2" /* test number or empty string if no patch */ +#define MAJOR_PATCH 5 /* patch level or 0 if no patch */ +#define MINOR_PATCH "0" /* test number or empty string if no patch */ /* * calc version constants diff --git a/zmath.h b/zmath.h index d15f549..827e954 100644 --- a/zmath.h +++ b/zmath.h @@ -17,8 +17,8 @@ * 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: zmath.h,v 29.3 2000/07/17 15:35:49 chongo Exp $ + * @(#) $Revision: 29.4 $ + * @(#) $Id: zmath.h,v 29.4 2001/02/25 22:07:36 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/zmath.h,v $ * * Under source code control: 1993/07/30 19:42:48 @@ -38,6 +38,20 @@ #define __ZMATH_H__ +#if defined (_WIN32) +#ifdef _EXPORTING + #define DLL __declspec(dllexport) +#else + #define DLL __declspec(dllimport) +#endif + +#else /* Windoz free systems */ + + #define DLL + +#endif /* Windoz free systems */ + + #include "alloc.h" #include "endian_calc.h" #include "longbits.h" @@ -267,126 +281,126 @@ typedef struct { /* * Function prototypes for integer math routines. */ -extern HALF * alloc(LEN len); +DLL extern HALF * alloc(LEN len); #ifdef ALLOCTEST -extern void freeh(HALF *); +DLL extern void freeh(HALF *); #endif /* * Input, output, and conversion routines. */ -extern void zcopy(ZVALUE z, ZVALUE *res); -extern void itoz(long i, ZVALUE *res); -extern void utoz(FULL i, ZVALUE *res); -extern void str2z(char *s, ZVALUE *res); -extern long ztoi(ZVALUE z); -extern FULL ztou(ZVALUE z); -extern void zprintval(ZVALUE z, long decimals, long width); -extern void zprintx(ZVALUE z, long width); -extern void zprintb(ZVALUE z, long width); -extern void zprinto(ZVALUE z, long width); -extern void fitzprint(ZVALUE, long, long); +DLL extern void zcopy(ZVALUE z, ZVALUE *res); +DLL extern void itoz(long i, ZVALUE *res); +DLL extern void utoz(FULL i, ZVALUE *res); +DLL extern void str2z(char *s, ZVALUE *res); +DLL extern long ztoi(ZVALUE z); +DLL extern FULL ztou(ZVALUE z); +DLL extern void zprintval(ZVALUE z, long decimals, long width); +DLL extern void zprintx(ZVALUE z, long width); +DLL extern void zprintb(ZVALUE z, long width); +DLL extern void zprinto(ZVALUE z, long width); +DLL extern void fitzprint(ZVALUE, long, long); /* * Basic numeric routines. */ -extern void zmuli(ZVALUE z, long n, ZVALUE *res); -extern long zdivi(ZVALUE z, long n, ZVALUE *res); -extern long zmodi(ZVALUE z, long n); -extern void zadd(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern void zsub(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern void zmul(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern long zdiv(ZVALUE z1, ZVALUE z2, ZVALUE *res, ZVALUE *rem, long R); -extern long zquo(ZVALUE z1, ZVALUE z2, ZVALUE *res, long R); -extern long zmod(ZVALUE z1, ZVALUE z2, ZVALUE *rem, long R); -extern void zequo(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern BOOL zdivides(ZVALUE z1, ZVALUE z2); -extern void zor(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern void zand(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern void zxor(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern void zandnot(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern long zpopcnt(ZVALUE z, int bitval); -extern void zshift(ZVALUE z, long n, ZVALUE *res); -extern void zsquare(ZVALUE z, ZVALUE *res); -extern long zlowbit(ZVALUE z); -extern LEN zhighbit(ZVALUE z); -extern void zbitvalue(long n, ZVALUE *res); -extern BOOL zisset(ZVALUE z, long n); -extern BOOL zisonebit(ZVALUE z); -extern BOOL zisallbits(ZVALUE z); -extern FLAG ztest(ZVALUE z); -extern FLAG zrel(ZVALUE z1, ZVALUE z2); -extern FLAG zabsrel(ZVALUE z1, ZVALUE z2); -extern BOOL zcmp(ZVALUE z1, ZVALUE z2); +DLL extern void zmuli(ZVALUE z, long n, ZVALUE *res); +DLL extern long zdivi(ZVALUE z, long n, ZVALUE *res); +DLL extern long zmodi(ZVALUE z, long n); +DLL extern void zadd(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern void zsub(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern void zmul(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern long zdiv(ZVALUE z1, ZVALUE z2, ZVALUE *res, ZVALUE *rem, long R); +DLL extern long zquo(ZVALUE z1, ZVALUE z2, ZVALUE *res, long R); +DLL extern long zmod(ZVALUE z1, ZVALUE z2, ZVALUE *rem, long R); +DLL extern void zequo(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern BOOL zdivides(ZVALUE z1, ZVALUE z2); +DLL extern void zor(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern void zand(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern void zxor(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern void zandnot(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern long zpopcnt(ZVALUE z, int bitval); +DLL extern void zshift(ZVALUE z, long n, ZVALUE *res); +DLL extern void zsquare(ZVALUE z, ZVALUE *res); +DLL extern long zlowbit(ZVALUE z); +DLL extern LEN zhighbit(ZVALUE z); +DLL extern void zbitvalue(long n, ZVALUE *res); +DLL extern BOOL zisset(ZVALUE z, long n); +DLL extern BOOL zisonebit(ZVALUE z); +DLL extern BOOL zisallbits(ZVALUE z); +DLL extern FLAG ztest(ZVALUE z); +DLL extern FLAG zrel(ZVALUE z1, ZVALUE z2); +DLL extern FLAG zabsrel(ZVALUE z1, ZVALUE z2); +DLL extern BOOL zcmp(ZVALUE z1, ZVALUE z2); /* * More complicated numeric functions. */ -extern FULL uugcd(FULL i1, FULL i2); -extern long iigcd(long i1, long i2); -extern void zgcd(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern void zlcm(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern void zreduce(ZVALUE z1, ZVALUE z2, ZVALUE *z1res, ZVALUE *z2res); -extern void zfact(ZVALUE z, ZVALUE *dest); -extern void zperm(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern int zcomb(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern FLAG zjacobi(ZVALUE z1, ZVALUE z2); -extern void zfib(ZVALUE z, ZVALUE *res); -extern void zpowi(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern void ztenpow(long power, ZVALUE *res); -extern void zpowermod(ZVALUE z1, ZVALUE z2, ZVALUE z3, ZVALUE *res); -extern BOOL zmodinv(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern BOOL zrelprime(ZVALUE z1, ZVALUE z2); -extern long zlog(ZVALUE z1, ZVALUE z2); -extern long zlog10(ZVALUE z); -extern long zdivcount(ZVALUE z1, ZVALUE z2); -extern long zfacrem(ZVALUE z1, ZVALUE z2, ZVALUE *rem); -extern long zgcdrem(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern long zdigits(ZVALUE z1); -extern long zdigit(ZVALUE z1, long n); -extern FLAG zsqrt(ZVALUE z1, ZVALUE *dest, long R); -extern void zroot(ZVALUE z1, ZVALUE z2, ZVALUE *dest); -extern BOOL zissquare(ZVALUE z); -extern void zhnrmod(ZVALUE v, ZVALUE h, ZVALUE zn, ZVALUE zr, ZVALUE *res); +DLL extern FULL uugcd(FULL i1, FULL i2); +DLL extern long iigcd(long i1, long i2); +DLL extern void zgcd(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern void zlcm(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern void zreduce(ZVALUE z1, ZVALUE z2, ZVALUE *z1res, ZVALUE *z2res); +DLL extern void zfact(ZVALUE z, ZVALUE *dest); +DLL extern void zperm(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern int zcomb(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern FLAG zjacobi(ZVALUE z1, ZVALUE z2); +DLL extern void zfib(ZVALUE z, ZVALUE *res); +DLL extern void zpowi(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern void ztenpow(long power, ZVALUE *res); +DLL extern void zpowermod(ZVALUE z1, ZVALUE z2, ZVALUE z3, ZVALUE *res); +DLL extern BOOL zmodinv(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern BOOL zrelprime(ZVALUE z1, ZVALUE z2); +DLL extern long zlog(ZVALUE z1, ZVALUE z2); +DLL extern long zlog10(ZVALUE z); +DLL extern long zdivcount(ZVALUE z1, ZVALUE z2); +DLL extern long zfacrem(ZVALUE z1, ZVALUE z2, ZVALUE *rem); +DLL extern long zgcdrem(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern long zdigits(ZVALUE z1); +DLL extern long zdigit(ZVALUE z1, long n); +DLL extern FLAG zsqrt(ZVALUE z1, ZVALUE *dest, long R); +DLL extern void zroot(ZVALUE z1, ZVALUE z2, ZVALUE *dest); +DLL extern BOOL zissquare(ZVALUE z); +DLL extern void zhnrmod(ZVALUE v, ZVALUE h, ZVALUE zn, ZVALUE zr, ZVALUE *res); /* * Prime related functions. */ -extern FLAG zisprime(ZVALUE z); -extern FULL znprime(ZVALUE z); -extern FULL next_prime(FULL v); -extern FULL zpprime(ZVALUE z); -extern void zpfact(ZVALUE z, ZVALUE *dest); -extern BOOL zprimetest(ZVALUE z, long count, ZVALUE skip); -extern BOOL zredcprimetest(ZVALUE z, long count, ZVALUE skip); -extern BOOL znextcand(ZVALUE z1, long count, ZVALUE skip, ZVALUE res, ZVALUE mod, ZVALUE *cand); -extern BOOL zprevcand(ZVALUE z1, long count, ZVALUE skip, ZVALUE res, ZVALUE mod, ZVALUE *cand); -extern FULL zlowfactor(ZVALUE z, long count); -extern FLAG zfactor(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern long zpix(ZVALUE z1); -extern void zlcmfact(ZVALUE z, ZVALUE *dest); +DLL extern FLAG zisprime(ZVALUE z); +DLL extern FULL znprime(ZVALUE z); +DLL extern FULL next_prime(FULL v); +DLL extern FULL zpprime(ZVALUE z); +DLL extern void zpfact(ZVALUE z, ZVALUE *dest); +DLL extern BOOL zprimetest(ZVALUE z, long count, ZVALUE skip); +DLL extern BOOL zredcprimetest(ZVALUE z, long count, ZVALUE skip); +DLL extern BOOL znextcand(ZVALUE z1, long count, ZVALUE skip, ZVALUE res, ZVALUE mod, ZVALUE *cand); +DLL extern BOOL zprevcand(ZVALUE z1, long count, ZVALUE skip, ZVALUE res, ZVALUE mod, ZVALUE *cand); +DLL extern FULL zlowfactor(ZVALUE z, long count); +DLL extern FLAG zfactor(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern long zpix(ZVALUE z1); +DLL extern void zlcmfact(ZVALUE z, ZVALUE *dest); /* * Misc misc functions. :-) */ -extern void zsquaremod(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern void zminmod(ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern BOOL zcmpmod(ZVALUE z1, ZVALUE z2, ZVALUE z3); -extern void zio_init(void); +DLL extern void zsquaremod(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern void zminmod(ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern BOOL zcmpmod(ZVALUE z1, ZVALUE z2, ZVALUE z3); +DLL extern void zio_init(void); /* * These functions are for internal use only. */ -extern void ztrim(ZVALUE *z); -extern void zshiftr(ZVALUE z, long n); -extern void zshiftl(ZVALUE z, long n); -extern HALF *zalloctemp(LEN len); +DLL extern void ztrim(ZVALUE *z); +DLL extern void zshiftr(ZVALUE z, long n); +DLL extern void zshiftl(ZVALUE z, long n); +DLL extern HALF *zalloctemp(LEN len); /* @@ -403,13 +417,13 @@ typedef struct { ZVALUE one; /* REDC format for the number 1 */ } REDC; -extern REDC *zredcalloc(ZVALUE z1); -extern void zredcfree(REDC *rp); -extern void zredcencode(REDC *rp, ZVALUE z1, ZVALUE *res); -extern void zredcdecode(REDC *rp, ZVALUE z1, ZVALUE *res); -extern void zredcmul(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res); -extern void zredcsquare(REDC *rp, ZVALUE z1, ZVALUE *res); -extern void zredcpower(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern REDC *zredcalloc(ZVALUE z1); +DLL extern void zredcfree(REDC *rp); +DLL extern void zredcencode(REDC *rp, ZVALUE z1, ZVALUE *res); +DLL extern void zredcdecode(REDC *rp, ZVALUE z1, ZVALUE *res); +DLL extern void zredcmul(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res); +DLL extern void zredcsquare(REDC *rp, ZVALUE z1, ZVALUE *res); +DLL extern void zredcpower(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res); /* @@ -550,32 +564,32 @@ extern void zredcpower(REDC *rp, ZVALUE z1, ZVALUE z2, ZVALUE *res); /* * Output routines for either FILE handles or strings. */ -extern void math_chr(int ch); -extern void math_str(char *str); -extern void math_fill(char *str, long width); -extern void math_flush(void); -extern void math_divertio(void); -extern void math_cleardiversions(void); -extern char *math_getdivertedio(void); -extern int math_setmode(int mode); -extern LEN math_setdigits(LEN digits); -extern void math_fmt(char *, ...); +DLL extern void math_chr(int ch); +DLL extern void math_str(char *str); +DLL extern void math_fill(char *str, long width); +DLL extern void math_flush(void); +DLL extern void math_divertio(void); +DLL extern void math_cleardiversions(void); +DLL extern char *math_getdivertedio(void); +DLL extern int math_setmode(int mode); +DLL extern LEN math_setdigits(LEN digits); +DLL extern void math_fmt(char *, ...); /* * The error routine. */ -extern void math_error(char *, ...); +DLL extern void math_error(char *, ...); /* * external swap functions */ -extern HALF *swap_b8_in_HALFs(HALF *dest, HALF *src, LEN len); -extern ZVALUE *swap_b8_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all); -extern HALF *swap_b16_in_HALFs(HALF *dest, HALF *src, LEN len); -extern ZVALUE *swap_b16_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all); -extern ZVALUE *swap_HALF_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all); +DLL extern HALF *swap_b8_in_HALFs(HALF *dest, HALF *src, LEN len); +DLL extern ZVALUE *swap_b8_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all); +DLL extern HALF *swap_b16_in_HALFs(HALF *dest, HALF *src, LEN len); +DLL extern ZVALUE *swap_b16_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all); +DLL extern ZVALUE *swap_HALF_in_ZVALUE(ZVALUE *dest, ZVALUE *src, BOOL all); /*