From 7cf611bca86a99270a8d99716f4cff12b90ffcc6 Mon Sep 17 00:00:00 2001 From: Landon Curt Noll Date: Sun, 19 May 2013 15:55:00 -0700 Subject: [PATCH] Release calc version 2.12.4.0 --- CHANGES | 27 +-- COPYING | 18 +- Makefile | 49 +----- Makefile.simple | 15 +- README.WINDOWS | 107 +++++------- cal/Makefile | 7 +- cal/README | 50 +----- cal/deg.cal | 38 ++-- cal/dms.cal | 384 ----------------------------------------- cal/hms.cal | 384 ----------------------------------------- cal/regress.cal | 10 +- custom/Makefile | 40 +---- custom/Makefile.head | 6 +- custom/Makefile.simple | 6 +- token.c | 5 +- version.c | 6 +- 16 files changed, 117 insertions(+), 1035 deletions(-) delete mode 100644 cal/dms.cal delete mode 100644 cal/hms.cal diff --git a/CHANGES b/CHANGES index 886b1bd..628f488 100644 --- a/CHANGES +++ b/CHANGES @@ -32,29 +32,6 @@ The following are the changes from calc version 2.12.4.0 to date: Fixed a bug where an certains typos (e.g., calling an unknown function) would previously cause calc to exit. - Updated the COPYING file to reflect the new filenames associated - with the SHA1 hash function, and removed mention of files related - to the SHA (SHA0, not SHA1) and the MD5 hash functions (which is - no longer supported in calc). - - Fixed a bug where a calling vsnprintf() twice created problems. - The thanks for this fix goes to Matthew Miller (mattdm at mattdm - dot org) for this patch. - - Michael Penk (mpenk at wuska dot com) reported success in installs - under windoz via Cygwin by making a change to the Cygwin target. - These changes have been folded into the main calc Makefile. - The old recommendation of using 'make win32_hsrc' is no longer - required for Cygwin. See the README.WINDOWS file for details. - - Added dms.cal and hms.cal resource files. The dms.cal is a more - functional version of deg.cal. It is a superset except that increment - and decrement is on the arc second level. The hms.cal is for - 24-hour cycle instread of the 360 degree cycle of dms.cal. - - Changed deg.cal object name from dms to deg so that the more functional - dms.cal can own the dms object name. - The following are the changes from calc version 2.12.3.0 to 2.12.3.3: @@ -6792,8 +6769,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. ## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ## -## @(#) $Revision: 30.19 $ -## @(#) $Id: CHANGES,v 30.19 2010/09/02 06:09:26 chongo Exp $ +## @(#) $Revision: 30.18 $ +## @(#) $Id: CHANGES,v 30.18 2008/10/24 09:55:12 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 63b1c43..3446e88 100644 --- a/COPYING +++ b/COPYING @@ -6,14 +6,14 @@ This file is Copyrighted This file is covered under the following Copyright: - Copyright (C) 1999-2008 Landon Curt Noll + 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: 30.2 $ - # @(#) $Id: COPYING,v 30.2 2008/10/24 10:46:52 chongo Exp $ + # @(#) $Revision: 30.1 $ + # @(#) $Id: COPYING,v 30.1 2007/03/16 11:09:46 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/RCS/COPYING,v $ =-= @@ -168,8 +168,9 @@ Calc copyrights and exception files These files are not covered under one of the Copyrights listed above: - sha1.c sha1.h COPYING - COPYING-LGPL cal/qtime.cal cal/screen.cal + shs1.c shs1.h shs.c shs.h + md5.c md5.h COPYING COPYING-LGPL + cal/qtime.cal cal/screen.cal The file COPYING-LGPL, which contains a copy of the version 2.1 GNU Lesser General Public License, is itself Copyrighted by the @@ -181,8 +182,11 @@ Calc copyrights and exception files 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. - Some of these exception files are in the public domain. Other files - are under the LGPL but have different authors that those listed above. + Some of these exception files are in the public domain. The md5.c + and md5.h files were "derived from the RSA Data Security, Inc. MD5 + Message-Digest Algorithm" and are under a copyright that allows these + two files to be freely used and distributed. Other files are under + the LGPL but have different authors that those listed above. In all cases one may use and distribute these exception files freely. And because one may freely distribute the LGPL covered files, the diff --git a/Makefile b/Makefile index f870518..cc84386 100644 --- a/Makefile +++ b/Makefile @@ -39,8 +39,8 @@ # received a copy with calc; if not, write to Free Software Foundation, Inc. # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. # -MAKEFILE_REV= $$Revision: 30.44 $$ -# @(#) $Id: Makefile.ship,v 30.44 2010/09/02 06:07:07 chongo Exp $ +MAKEFILE_REV= $$Revision: 30.41 $$ +# @(#) $Id: Makefile.ship,v 30.41 2008/10/24 09:20:09 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/RCS/Makefile.ship,v $ # # Under source code control: 1990/02/15 01:48:41 @@ -983,12 +983,11 @@ MKDIR_ARG= -p # Some out of date operating systems require / want an executable to # end with a certain file extension. Some compile systems such as -# windoz build calc as calc.exe. The EXT variable is used to denote -# the extension required by such. Note that Cygwin requires EXT to be -# the same as Linux/Un*x/GNU, even though it runs under windoz. +# Cygwin build calc as calc.exe. The EXT variable is used to denote +# the extension required by such. # -# EXT= # normal Un*x / Linux / GNU/Linux / Cygwin -# EXT=.exe # windoz +# EXT= # normal Un*x / Linux / GNU/Linux systems +# EXT=.exe # windoz / Cygwin # # If in doubt, use EXT= # @@ -997,7 +996,7 @@ EXT= # The default calc versions # -VERSION= 2.12.4.1 +VERSION= 2.12.4.0 VERS= 2.12.4 VER= 2.12 VE= 2 @@ -1335,40 +1334,6 @@ CC= ${PURIFY} ${LCC} ${CCWERR} # endif -################# -# Cygwin target # -################# - -ifeq ($(target),Cygwin) -# -BLD_TYPE= calc-static-only -# -CC_SHARE= -fPIC -DEFAULT_LIB_INSTALL_PATH= ${PWD}:/lib:/usr/lib:${LIBDIR}:/usr/local/lib -LD_SHARE= "-Wl,-rpath,${DEFAULT_LIB_INSTALL_PATH}" \ - "-Wl,-rpath-link,${DEFAULT_LIB_INSTALL_PATH}" -LIBCALC_SHLIB= -shared "-Wl,-soname,libcalc${LIB_EXT_VERSION}" -ifdef ALLOW_CUSTOM -LIBCUSTCALC_SHLIB= -shared "-Wl,-soname,libcustcalc${LIB_EXT_VERSION}" -else -LIBCUSTCALC_SHLIB= -endif -# -CC_STATIC= -LIBCALC_STATIC= -LIBCUSTCALC_STATIC= -LD_STATIC= -# -CCWARN= -Wall -W -Wno-comment -CCWERR= -CCOPT= ${DEBUG} -CCMISC= -# -LCC= gcc -CC= ${PURIFY} ${LCC} ${CCWERR} -# -endif - ####################################################### # simple target - values used to form Makefile.simple # ####################################################### diff --git a/Makefile.simple b/Makefile.simple index 5045cff..6c0b790 100644 --- a/Makefile.simple +++ b/Makefile.simple @@ -39,8 +39,8 @@ # received a copy with calc; if not, write to Free Software Foundation, Inc. # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. # -MAKEFILE_REV= $$Revision: 30.44 $$ -# @(#) $Id: Makefile.ship,v 30.44 2010/09/02 06:07:07 chongo Exp $ +MAKEFILE_REV= $$Revision: 30.41 $$ +# @(#) $Id: Makefile.ship,v 30.41 2008/10/24 09:20:09 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/RCS/Makefile.ship,v $ # # Under source code control: 1990/02/15 01:48:41 @@ -960,12 +960,11 @@ MKDIR_ARG= -p # Some out of date operating systems require / want an executable to # end with a certain file extension. Some compile systems such as -# windoz build calc as calc.exe. The EXT variable is used to denote -# the extension required by such. Note that Cygwin requires EXT to be -# the same as Linux/Un*x/GNU, even though it runs under windoz. +# Cygwin build calc as calc.exe. The EXT variable is used to denote +# the extension required by such. # -# EXT= # normal Un*x / Linux / GNU/Linux / Cygwin -# EXT=.exe # windoz +# EXT= # normal Un*x / Linux / GNU/Linux systems +# EXT=.exe # windoz / Cygwin # # If in doubt, use EXT= # @@ -974,7 +973,7 @@ EXT= # The default calc versions # -VERSION= 2.12.4.1 +VERSION= 2.12.4.0 VERS= 2.12.4 VER= 2.12 VE= 2 diff --git a/README.WINDOWS b/README.WINDOWS index 6cd3848..b9ed8bb 100644 --- a/README.WINDOWS +++ b/README.WINDOWS @@ -10,63 +10,6 @@ NOTE: The main developers do not have access to a Windoz based platform. Of course you are welcome to send us any patches that fix your Windoz build environment. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -=-= compiling with Cygwin =-= -=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -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 for Cygwin was performed by Thomas Jones-Low -(tjoneslo at softstart dot com). - -In March 2009, Michael Penk (mpenk at wuska dot com) reported success in -installs under Cygwin: - - On my fairly complete Cygwin installs, everything compiles, - checks, and installs correctly. My Cygwin is configured - in a very standard way (out of the box, using all of Cygwin's - defaults). The install worked on 5 different machines with - Cygwin on them: one XP home, one XP professional, and three - Vista professionals. - -Using the calc Makefile, he did the following: - - make all target=Cygwin - make check - make install - -He also reports: - - Of course, one should be logged in as an Administrator when - one builds and installs calc. - -He was compiling calc 2.12.4.0 with Cygwin version 1.5.25-15. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -=-= If all else fails, for Cygwin =-= -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -Much earlier (2001?) Thomas Jones-Low (tjoneslo at softstart dot com) -recommended that you generate by hand all of the header files that -by the Makefile. This has been done for you via the makefile rule: - - make win32_hsrc - -which uses the Makefile variables in win32.mkdef to form these header -files under win32 directory. - -You will find generated versions of these files located in the win32 -sub-directory. These files may be appropriate for your Cygwin building -needs. - -In particular: - - Just copy the win32/*.[ch] files up into the top level calc - source directory, edit them (if needed) and build using the - Cygwin GCC compiler and Cygwin build environment. - =-=-=-=-=-=-=-=-=-=-=-=-=-=-= =-= compiling under DJGPP =-= =-=-=-=-=-=-=-=-=-=-=-=-=-=-= @@ -125,8 +68,52 @@ Look for Makefile comments of the form: Follow those recommendations. In cases where they conflict with the above Makefile list, follow the recommendation in the Makefile. +=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +=-= compiling with Cygwin =-= +=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -## Copyright (C) 2002-2009 Landon Curt Noll and Thomas Jones-Low +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 calc.exe which is the command line interface. + +He recommended that you generate by hand all of the header files that +by the Makefile. This has been done for you via the makefile rule: + + make win32_hsrc + +which uses the Makefile variables in win32.mkdef to form these header +files under win32 directory. + +You will find generated versions of these files located in the win32 +sub-directory. These files may be appropriate for your Cygwin building +needs. + +In particular: + + Just copy the win32/*.[ch] files up into the top level calc + source directory, edit them (if needed) and build using the + Cygwin GCC compiler and Cygwin build environment. + + +## Copyright (C) 2002-2007 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 @@ -142,8 +129,8 @@ the above Makefile list, follow the recommendation in the Makefile. ## received a copy with calc; if not, write to Free Software Foundation, Inc. ## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ## -## @(#) $Revision: 30.2 $ -## @(#) $Id: README.WINDOWS,v 30.2 2009/03/14 02:29:31 chongo Exp $ +## @(#) $Revision: 30.1 $ +## @(#) $Id: README.WINDOWS,v 30.1 2007/03/16 11:09:46 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/RCS/README.WINDOWS,v $ ## ## Under source code control: 2001/02/25 14:00:05 diff --git a/cal/Makefile b/cal/Makefile index 3d27025..93db62b 100644 --- a/cal/Makefile +++ b/cal/Makefile @@ -18,8 +18,8 @@ # received a copy with calc; if not, write to Free Software Foundation, Inc. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # -# @(#) $Revision: 30.4 $ -# @(#) $Id: Makefile,v 30.4 2010/09/02 06:01:39 chongo Exp $ +# @(#) $Revision: 30.3 $ +# @(#) $Id: Makefile,v 30.3 2007/09/21 01:27:27 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/Makefile,v $ # # Under source code control: 1991/07/21 05:00:54 @@ -193,8 +193,7 @@ CALC_FILES= README bigprime.cal deg.cal ellip.cal lucas.cal lucas_chk.cal \ beer.cal hello.cal test5100.cal test5200.cal randombitrun.cal \ randomrun.cal repeat.cal xx_print.cal natnumset.cal qtime.cal \ test8400.cal test8500.cal test8600.cal chi.cal intfile.cal screen.cal \ - dotest.cal set8700.cal set8700.line alg_config.cal sumtimes.cal \ - dms.cal hms.cal + dotest.cal set8700.cal set8700.line alg_config.cal sumtimes.cal # These files are found (but not built) in the distribution # diff --git a/cal/README b/cal/README index cbef739..98126dd 100644 --- a/cal/README +++ b/cal/README @@ -226,37 +226,14 @@ chrem.cal deg.cal - deg(deg, min, sec) - deg_add(a, b) - deg_neg(a) - deg_sub(a, b) - deg_mul(a, b) - deg_print(a) - - Calculate in degrees, minutes, and seconds. For a more functional - version see dms.cal. - - -dms.cal - dms(deg, min, sec) dms_add(a, b) dms_neg(a) dms_sub(a, b) dms_mul(a, b) dms_print(a) - dms_abs(a) - dms_norm(a) - dms_test(a) - dms_int(a) - dms_frac(a) - dms_rel(a,b) - dms_cmp(a,b) - dms_inc(a) - dms_dec(a) - Calculate in degrees, minutes, and seconds. Unlike deg.cal, increments - are on the arc second level. See also hms.cal. + Calculate in degrees, minutes, and seconds. dotest.cal @@ -308,27 +285,6 @@ hello.cal NOTE: This resource produces a lot of output. :-) -hms.cal - - hms(hour, min, sec) - hms_add(a, b) - hms_neg(a) - hms_sub(a, b) - hms_mul(a, b) - hms_print(a) - hms_abs(a) - hms_norm(a) - hms_test(a) - hms_int(a) - hms_frac(a) - hms_rel(a,b) - hms_cmp(a,b) - hms_inc(a) - hms_dec(a) - - Calculate in hours, minutes, and seconds. See also dmscal. - - intfile.cal file2be(filename) @@ -1058,8 +1014,8 @@ xx_print.cal ## received a copy with calc; if not, write to Free Software Foundation, Inc. ## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ## -## @(#) $Revision: 30.2 $ -## @(#) $Id: README,v 30.2 2010/09/02 06:01:39 chongo Exp $ +## @(#) $Revision: 30.1 $ +## @(#) $Id: README,v 30.1 2007/03/16 11:09:54 chongo Exp $ ## @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/README,v $ ## ## Under source code control: 1990/02/15 01:50:32 diff --git a/cal/deg.cal b/cal/deg.cal index 7a6d26c..97af5ac 100644 --- a/cal/deg.cal +++ b/cal/deg.cal @@ -17,8 +17,8 @@ * received a copy with calc; if not, write to Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * @(#) $Revision: 30.2 $ - * @(#) $Id: deg.cal,v 30.2 2010/09/02 06:01:14 chongo Exp $ + * @(#) $Revision: 30.1 $ + * @(#) $Id: deg.cal,v 30.1 2007/03/16 11:09:54 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/deg.cal,v $ * * Under source code control: 1990/02/15 01:50:33 @@ -28,9 +28,9 @@ */ -obj deg {deg, min, sec}; +obj dms {deg, min, sec}; -define deg(deg, min, sec) +define dms(deg, min, sec) { local ans; @@ -38,18 +38,18 @@ define deg(deg, min, sec) sec = 0; if (isnull(min)) min = 0; - obj deg ans; + obj dms ans; ans.deg = deg; ans.min = min; ans.sec = sec; - fixdeg(ans); + fixdms(ans); return ans; } -define deg_add(a, b) +define dms_add(a, b) { - local obj deg ans; + local obj dms ans; ans.deg = 0; ans.min = 0; @@ -66,14 +66,14 @@ define deg_add(a, b) ans.sec += b.sec; } else ans.deg += b; - fixdeg(ans); + fixdms(ans); return ans; } -define deg_neg(a) +define dms_neg(a) { - local obj deg ans; + local obj dms ans; ans.deg = -a.deg; ans.min = -a.min; @@ -82,15 +82,15 @@ define deg_neg(a) } -define deg_sub(a, b) +define dms_sub(a, b) { return a - b; } -define deg_mul(a, b) +define dms_mul(a, b) { - local obj deg ans; + local obj dms ans; if (istype(a, ans) && istype(b, ans)) quit "Cannot multiply degrees together"; @@ -103,24 +103,24 @@ define deg_mul(a, b) ans.min = b.min * a; ans.sec = b.sec * a; } - fixdeg(ans); + fixdms(ans); return ans; } -define deg_print(a) +define dms_print(a) { print a.deg : 'd' : a.min : 'm' : a.sec : 's' :; } -define deg_abs(a) +define dms_abs(a) { return a.deg + a.min / 60 + a.sec / 3600; } -define fixdeg(a) +define fixdms(a) { a.min += frac(a.deg) * 60; a.deg = int(a.deg); @@ -134,5 +134,5 @@ define fixdeg(a) } if (config("resource_debug") & 3) { - print "obj deg {deg, min, sec} defined"; + print "obj dms {deg, min, sec} defined"; } diff --git a/cal/dms.cal b/cal/dms.cal deleted file mode 100644 index 9dd4e62..0000000 --- a/cal/dms.cal +++ /dev/null @@ -1,384 +0,0 @@ -/* - * dms - calculate in degrees, minutes, and seconds (based on deg) - * - * Copyright (C) 1999,2010 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. - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * @(#) $Revision: 30.2 $ - * @(#) $Id: dms.cal,v 30.2 2010/09/02 06:14:16 chongo Exp $ - * @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/dms.cal,v $ - * - * Under source code control: 1990/02/15 01:50:33 - * File existed as early as: before 1990 - * - * Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/ - */ - - -obj dms {deg, min, sec}; - -define dms(deg, min, sec) -{ - local obj dms ans; /* return value */ - - /* default missing args to 0 */ - if (isnull(sec)) { - sec = 0; - } - if (isnull(min)) { - min = 0; - } - - /* load object */ - ans.deg = deg; - ans.min = min; - ans.sec = sec; - - /* return properly formed object */ - ans = fixdms(ans); - return ans; -} - - -define dms_add(a, b) -{ - local obj dms ans; /* return value */ - - /* initalize value to 1st arg */ - if (istype(a, ans)) { - /* 1st arg is dms object, load it */ - ans.deg = a.deg; - ans.min = a.min; - ans.sec = a.sec; - } else { - /* 1st arg is not dms, assume scalar degrees */ - ans.deg = a; - ans.min = 0; - ans.sec = 0; - } - - /* add value of 2nd arg */ - if (istype(b, ans)) { - /* 2nd arg is dms object, add it */ - ans.deg += b.deg; - ans.min += b.min; - ans.sec += b.sec; - } else { - /* 2nd arg is not dms, add scalar degrees */ - ans.deg += b; - } - - /* return normalized result */ - ans = fixdms(ans); - return ans; -} - - -define dms_neg(a) -{ - local obj dms ans; /* return value */ - - /* negate argument */ - if (istype(a, ans)) { - /* 1st arg is dms object, load it */ - ans.deg = -a.deg; - ans.min = -a.min; - ans.sec = -a.sec; - } else { - /* 2nd arg is not dms, negate scalar degrees */ - ans.deg = -a; - ans.min = 0; - ans.sec = 0; - } - - /* return normalized result */ - ans = fixdms(ans); - return ans; -} - - -define dms_sub(a, b) -{ - local obj dms ans; /* return value */ - - /* initalize value to 1st arg */ - if (istype(a, ans)) { - /* 1st arg is dms object, load it */ - ans.deg = a.deg; - ans.min = a.min; - ans.sec = a.sec; - } else { - /* 1st arg is not dms, assume scalar degrees */ - ans.deg = a; - ans.min = 0; - ans.sec = 0; - } - - /* subtract value of 2nd arg */ - if (istype(b, ans)) { - /* 2nd arg is dms object, subtract it */ - ans.deg -= b.deg; - ans.min -= b.min; - ans.sec -= b.sec; - } else { - /* 2nd arg is not dms, subtract scalar degrees */ - ans.deg -= b; - } - - /* return normalized result */ - ans = fixdms(ans); - return ans; -} - - -define dms_mul(a, b) -{ - local obj dms ans; /* return value */ - - /* dms object multiplication */ - if (istype(a, ans) && istype(b, ans)) { - ans.deg = dms_abs(a) * dms_abs(b); - ans.min = 0; - ans.sec = 0; - - /* scalar multiplication */ - } else if (istype(a, ans)) { - ans.deg = a.deg * b; - ans.min = a.min * b; - ans.sec = a.sec * b; - } else { - ans.deg = b.deg * a; - ans.min = b.min * a; - ans.sec = b.sec * a; - } - - /* return normalized result */ - ans = fixdms(ans); - return ans; -} - - -define dms_print(a) -{ - local obj dms ans; /* temp object for dms type testing */ - - /* firewall - arg must be a dms object */ - if (! istype(a, ans)) { - quit "dms_print called with non dms object"; - } - - /* print in dms form */ - print a.deg : 'd' : a.min : 'm' : a.sec : 's' :; -} - - -define dms_abs(a) -{ - local obj dms ans; /* temp object for dms type testing */ - local deg; /* return scalar value */ - - /* firewall - just absolute value non dms objects */ - if (! istype(a, ans)) { - return abs(a); - } - - /* compute degrees */ - deg = a.deg + a.min / 60 + a.sec / 3600; - - /* return degrees */ - return deg; -} - - -define dms_norm(a) -{ - local obj dms ans; /* temp object for dms type testing */ - local deg; /* degrees */ - - /* firewall - arg must be a dms object */ - if (! istype(a, ans)) { - quit "dms_norm called with non dms object"; - } - - /* square degrees (norm is the square of absolute value */ - deg = dms_abs(a); - - /* return degrees */ - return deg*deg; -} - - -define dms_test(a) -{ - local obj dms ans; /* temp value */ - - /* firewall - arg must be a dms object */ - if (! istype(a, ans)) { - quit "dms_test called with non dms object"; - } - - /* return false of non-zero */ - ans = fixdms(a); - if (ans.deg == 0 && ans.min == 0 && ans.sec == 0) { - /* false */ - return 0; - } - /* true */ - return 1; -} - - -define dms_int(a) -{ - local obj dms ans; /* return value */ - - /* firewall - arg must be a dms object */ - if (! istype(a, ans)) { - quit "dms_int called with non dms object"; - } - - /* normalize the argument */ - ans = fixdms(a); - - /* truncate to the nearest second */ - ans.sec = int(ans.sec); - - /* return value to the nearest second */ - return ans; -} - - -define dms_frac(a) -{ - local obj dms ans; /* return value */ - - /* firewall - arg must be a dms object */ - if (! istype(a, ans)) { - quit "dms_frac called with non dms object"; - } - - /* normalize the argument */ - ans = fixdms(a); - - /* remove all but fractional seconds */ - ans.deg = 0; - ans.min = 0; - ans.sec = frac(ans.sec); - - /* return value to the second fraction */ - return ans; -} - - -define dms_rel(a,b) -{ - local abs_a, abs_b; /* scalars of the arguments */ - - /* compute scalars of the arguments */ - abs_a = dms_abs(a); - abs_b = dms_abs(b); - - /* return the comparison */ - return cmp(abs_a, abs_b); -} - - -define dms_cmp(a,b) -{ - local abs_a, abs_b; /* scalars of the arguments */ - - /* compute scalars of the arguments */ - abs_a = dms_abs(a); - abs_b = dms_abs(b); - - /* return the equality comparison */ - return (abs_a == abs_b); -} - - -define dms_inc(a) -{ - local obj dms ans; /* return value */ - - /* increment a dms object */ - if (istype(a, ans)) { - ans = a; - ++ans.sec; - - /* return normalized result */ - ans = fixdms(ans); - return ans; - } - - /* increment a scalar */ - return a+1; -} - - -define dms_dec(a) -{ - local obj dms ans; /* return value */ - - /* decrement a dms object */ - if (istype(a, ans)) { - ans = a; - --ans.sec; - - /* return normalized result */ - ans = fixdms(ans); - return ans; - } - - /* decrement a scalar */ - return a-1; -} - - -define fixdms(a) -{ - local obj dms ans; /* temp value */ - - /* firewall */ - if (! istype(a, ans)) { - quit "attempt to fix a non dms object"; - } - - /* force minutes to be intergral */ - a.min += frac(a.deg) * 60; - a.deg = int(a.deg); - - /* force degrees to be intergral */ - a.sec += frac(a.min) * 60; - a.min = int(a.min); - - /* carry excess seconds into minutes */ - a.min += a.sec // 60; - a.sec %= 60; - - /* carry excess minutes into degrees */ - a.deg += a.min // 60; - a.min %= 60; - - /* round degrees :-) */ - a.deg %= 360; - - /* return normalized result */ - return a; -} - -if (config("resource_debug") & 3) { - print "obj dms {deg, min, sec} defined"; -} diff --git a/cal/hms.cal b/cal/hms.cal deleted file mode 100644 index 81e326b..0000000 --- a/cal/hms.cal +++ /dev/null @@ -1,384 +0,0 @@ -/* - * hms - calculate in hours, minutes, and seconds - * - * Copyright (C) 2010 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. - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * @(#) $Revision: 30.2 $ - * @(#) $Id: hms.cal,v 30.2 2010/09/02 06:14:16 chongo Exp $ - * @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/hms.cal,v $ - * - * Under source code control: 2010/09/01 17:14:55 - * File existed as early as: 2010 - * - * Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/ - */ - - -obj hms {hour, min, sec}; - -define hms(hour, min, sec) -{ - local obj hms ans; /* return value */ - - /* default missing args to 0 */ - if (isnull(sec)) { - sec = 0; - } - if (isnull(min)) { - min = 0; - } - - /* load object */ - ans.hour = hour; - ans.min = min; - ans.sec = sec; - - /* return properly formed object */ - ans = fixhms(ans); - return ans; -} - - -define hms_add(a, b) -{ - local obj hms ans; /* return value */ - - /* initalize value to 1st arg */ - if (istype(a, ans)) { - /* 1st arg is hms object, load it */ - ans.hour = a.hour; - ans.min = a.min; - ans.sec = a.sec; - } else { - /* 1st arg is not hms, assume scalar hours */ - ans.hour = a; - ans.min = 0; - ans.sec = 0; - } - - /* add value of 2nd arg */ - if (istype(b, ans)) { - /* 2nd arg is hms object, add it */ - ans.hour += b.hour; - ans.min += b.min; - ans.sec += b.sec; - } else { - /* 2nd arg is not hms, add scalar hours */ - ans.hour += b; - } - - /* return normalized result */ - ans = fixhms(ans); - return ans; -} - - -define hms_neg(a) -{ - local obj hms ans; /* return value */ - - /* negate argument */ - if (istype(a, ans)) { - /* 1st arg is hms object, load it */ - ans.hour = -a.hour; - ans.min = -a.min; - ans.sec = -a.sec; - } else { - /* 2nd arg is not hms, negate scalar hours */ - ans.hour = -a; - ans.min = 0; - ans.sec = 0; - } - - /* return normalized result */ - ans = fixhms(ans); - return ans; -} - - -define hms_sub(a, b) -{ - local obj hms ans; /* return value */ - - /* initalize value to 1st arg */ - if (istype(a, ans)) { - /* 1st arg is hms object, load it */ - ans.hour = a.hour; - ans.min = a.min; - ans.sec = a.sec; - } else { - /* 1st arg is not hms, assume scalar hours */ - ans.hour = a; - ans.min = 0; - ans.sec = 0; - } - - /* subtract value of 2nd arg */ - if (istype(b, ans)) { - /* 2nd arg is hms object, subtract it */ - ans.hour -= b.hour; - ans.min -= b.min; - ans.sec -= b.sec; - } else { - /* 2nd arg is not hms, subtract scalar hours */ - ans.hour -= b; - } - - /* return normalized result */ - ans = fixhms(ans); - return ans; -} - - -define hms_mul(a, b) -{ - local obj hms ans; /* return value */ - - /* hms object multiplication */ - if (istype(a, ans) && istype(b, ans)) { - ans.hour = hms_abs(a) * hms_abs(b); - ans.min = 0; - ans.sec = 0; - - /* scalar multiplication */ - } else if (istype(a, ans)) { - ans.hour = a.hour * b; - ans.min = a.min * b; - ans.sec = a.sec * b; - } else { - ans.hour = b.hour * a; - ans.min = b.min * a; - ans.sec = b.sec * a; - } - - /* return normalized result */ - ans = fixhms(ans); - return ans; -} - - -define hms_print(a) -{ - local obj hms ans; /* temp object for hms type testing */ - - /* firewall - arg must be a hms object */ - if (! istype(a, ans)) { - quit "hms_print called with non hms object"; - } - - /* print in hms form */ - print a.hour : ':' : a.min : ':' : a.sec :; -} - - -define hms_abs(a) -{ - local obj hms ans; /* temp object for hms type testing */ - local hour; /* return scalar value */ - - /* firewall - just absolute value non hms objects */ - if (! istype(a, ans)) { - return abs(a); - } - - /* compute hours */ - hour = a.hour + a.min / 60 + a.sec / 3600; - - /* return hours */ - return hour; -} - - -define hms_norm(a) -{ - local obj hms ans; /* temp object for hms type testing */ - local hour; /* hours */ - - /* firewall - arg must be a hms object */ - if (! istype(a, ans)) { - quit "hms_norm called with non hms object"; - } - - /* square hours (norm is the square of absolute value */ - hour = hms_abs(a); - - /* return hours */ - return hour*hour; -} - - -define hms_test(a) -{ - local obj hms ans; /* temp value */ - - /* firewall - arg must be a hms object */ - if (! istype(a, ans)) { - quit "hms_test called with non hms object"; - } - - /* return false of non-zero */ - ans = fixhms(a); - if (ans.hour == 0 && ans.min == 0 && ans.sec == 0) { - /* false */ - return 0; - } - /* true */ - return 1; -} - - -define hms_int(a) -{ - local obj hms ans; /* return value */ - - /* firewall - arg must be a hms object */ - if (! istype(a, ans)) { - quit "hms_int called with non hms object"; - } - - /* normalize the argument */ - ans = fixhms(a); - - /* truncate to the nearest second */ - ans.sec = int(ans.sec); - - /* return value to the nearest second */ - return ans; -} - - -define hms_frac(a) -{ - local obj hms ans; /* return value */ - - /* firewall - arg must be a hms object */ - if (! istype(a, ans)) { - quit "hms_frac called with non hms object"; - } - - /* normalize the argument */ - ans = fixhms(a); - - /* remove all but fractional seconds */ - ans.hour = 0; - ans.min = 0; - ans.sec = frac(ans.sec); - - /* return value to the second fraction */ - return ans; -} - - -define hms_rel(a,b) -{ - local abs_a, abs_b; /* scalars of the arguments */ - - /* compute scalars of the arguments */ - abs_a = hms_abs(a); - abs_b = hms_abs(b); - - /* return the comparison */ - return cmp(abs_a, abs_b); -} - - -define hms_cmp(a,b) -{ - local abs_a, abs_b; /* scalars of the arguments */ - - /* compute scalars of the arguments */ - abs_a = hms_abs(a); - abs_b = hms_abs(b); - - /* return the equality comparison */ - return (abs_a == abs_b); -} - - -define hms_inc(a) -{ - local obj hms ans; /* return value */ - - /* increment a hms object */ - if (istype(a, ans)) { - ans = a; - ++ans.sec; - - /* return normalized result */ - ans = fixhms(ans); - return ans; - } - - /* increment a scalar */ - return a+1; -} - - -define hms_dec(a) -{ - local obj hms ans; /* return value */ - - /* decrement a hms object */ - if (istype(a, ans)) { - ans = a; - --ans.sec; - - /* return normalized result */ - ans = fixhms(ans); - return ans; - } - - /* decrement a scalar */ - return a-1; -} - - -define fixhms(a) -{ - local obj hms ans; /* temp value */ - - /* firewall */ - if (! istype(a, ans)) { - quit "attempt to fix a non hms object"; - } - - /* force minutes to be intergral */ - a.min += frac(a.hour) * 60; - a.hour = int(a.hour); - - /* force hours to be intergral */ - a.sec += frac(a.min) * 60; - a.min = int(a.min); - - /* carry excess seconds into minutes */ - a.min += a.sec // 60; - a.sec %= 60; - - /* carry excess minutes into hours */ - a.hour += a.min // 60; - a.min %= 60; - - /* round hours by day */ - a.hour %= 24; - - /* return normalized result */ - return a; -} - -if (config("resource_debug") & 3) { - print "obj hms {hour, min, sec} defined"; -} diff --git a/cal/regress.cal b/cal/regress.cal index d2c94ad..0ca221a 100644 --- a/cal/regress.cal +++ b/cal/regress.cal @@ -17,8 +17,8 @@ * received a copy with calc; if not, write to Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * @(#) $Revision: 30.6 $ - * @(#) $Id: regress.cal,v 30.6 2010/09/02 06:09:06 chongo Exp $ + * @(#) $Revision: 30.5 $ + * @(#) $Id: regress.cal,v 30.5 2008/10/24 07:09:41 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/regress.cal,v $ * * Under source code control: 1990/02/15 01:50:36 @@ -8012,11 +8012,7 @@ print '9838: skipping read -once hello.cal because it is an infinite loop'; print '9839: skipping read -once xx_print.cal because it is a printing demo'; read -once sumtimes; print '9840: read -once sumtimes'; -read -once dms; -print '9841: read -once dms'; -read -once hms; -print '9842: read -once hms'; -print '9843: Ending read of selected calc resource files'; +print '9841: Ending read of selected calc resource files'; /* diff --git a/custom/Makefile b/custom/Makefile index 453667d..c65f3c0 100644 --- a/custom/Makefile +++ b/custom/Makefile @@ -18,8 +18,8 @@ # received a copy with calc; if not, write to Free Software Foundation, Inc. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # -# @(#) $Revision: 30.21 $ -# @(#) $Id: Makefile.head,v 30.21 2008/11/05 17:38:01 chongo Exp $ +# @(#) $Revision: 30.20 $ +# @(#) $Id: Makefile.head,v 30.20 2008/10/23 00:13:44 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/Makefile.head,v $ # # Under source code control: 1997/03/09 02:28:54 @@ -366,7 +366,7 @@ EXT= # The default calc versions # -VERSION= 2.12.4.1 +VERSION= 2.12.4.0 VERS= 2.12.4 VER= 2.12 VE= 2 @@ -711,40 +711,6 @@ CC= ${PURIFY} ${LCC} ${CCWERR} # endif -################# -# Cygwin target # -################# - -ifeq ($(target),Cygwin) -# -BLD_TYPE= calc-static-only -# -CC_SHARE= -fPIC -DEFAULT_LIB_INSTALL_PATH= ${PWD}:/lib:/usr/lib:${LIBDIR}:/usr/local/lib -LD_SHARE= "-Wl,-rpath,${DEFAULT_LIB_INSTALL_PATH}" \ - "-Wl,-rpath-link,${DEFAULT_LIB_INSTALL_PATH}" -LIBCALC_SHLIB= -shared "-Wl,-soname,libcalc${LIB_EXT_VERSION}" -ifdef ALLOW_CUSTOM -LIBCUSTCALC_SHLIB= -shared "-Wl,-soname,libcustcalc${LIB_EXT_VERSION}" -else -LIBCUSTCALC_SHLIB= -endif -# -CC_STATIC= -LIBCALC_STATIC= -LIBCUSTCALC_STATIC= -LD_STATIC= -# -CCWARN= -Wall -W -Wno-comment -CCWERR= -CCOPT= ${DEBUG} -CCMISC= -# -LCC= gcc -CC= ${PURIFY} ${LCC} ${CCWERR} -# -endif - ####################################################### # simple target - values used to form Makefile.simple # ####################################################### diff --git a/custom/Makefile.head b/custom/Makefile.head index cfea083..2b8c2e6 100644 --- a/custom/Makefile.head +++ b/custom/Makefile.head @@ -18,8 +18,8 @@ # received a copy with calc; if not, write to Free Software Foundation, Inc. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # -# @(#) $Revision: 30.21 $ -# @(#) $Id: Makefile.head,v 30.21 2008/11/05 17:38:01 chongo Exp $ +# @(#) $Revision: 30.20 $ +# @(#) $Id: Makefile.head,v 30.20 2008/10/23 00:13:44 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/Makefile.head,v $ # # Under source code control: 1997/03/09 02:28:54 @@ -366,7 +366,7 @@ EXT= # The default calc versions # -VERSION= 2.12.4.1 +VERSION= 2.12.4.0 VERS= 2.12.4 VER= 2.12 VE= 2 diff --git a/custom/Makefile.simple b/custom/Makefile.simple index 7bbe0a2..8d1efb7 100644 --- a/custom/Makefile.simple +++ b/custom/Makefile.simple @@ -18,8 +18,8 @@ # received a copy with calc; if not, write to Free Software Foundation, Inc. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # -# @(#) $Revision: 30.21 $ -# @(#) $Id: Makefile.head,v 30.21 2008/11/05 17:38:01 chongo Exp $ +# @(#) $Revision: 30.20 $ +# @(#) $Id: Makefile.head,v 30.20 2008/10/23 00:13:44 chongo Exp $ # @(#) $Source: /usr/local/src/cmd/calc/custom/RCS/Makefile.head,v $ # # Under source code control: 1997/03/09 02:28:54 @@ -351,7 +351,7 @@ EXT= # The default calc versions # -VERSION= 2.12.4.1 +VERSION= 2.12.4.0 VERS= 2.12.4 VER= 2.12 VE= 2 diff --git a/token.c b/token.c index 65e1199..de334fe 100644 --- a/token.c +++ b/token.c @@ -19,8 +19,8 @@ * received a copy with calc; if not, write to Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * @(#) $Revision: 30.2 $ - * @(#) $Id: token.c,v 30.2 2008/11/05 17:32:19 chongo Exp $ + * @(#) $Revision: 30.1 $ + * @(#) $Id: token.c,v 30.1 2007/03/16 11:09:46 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/token.c,v $ * * Under source code control: 1990/02/15 01:48:25 @@ -823,6 +823,7 @@ warning(char *fmt, ...) /* form the error message */ name = inputname(); va_start(ap, fmt); + vsnprintf(calc_warn_msg, MAXERROR, fmt, ap); if (name) { snprintf(calc_warn_msg, MAXERROR, "\"%s\", line %ld: ", name, linenumber()); diff --git a/version.c b/version.c index 529e282..a65a693 100644 --- a/version.c +++ b/version.c @@ -19,8 +19,8 @@ * received a copy with calc; if not, write to Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * @(#) $Revision: 30.11 $ - * @(#) $Id: version.c,v 30.11 2010/09/02 06:09:26 chongo Exp $ + * @(#) $Revision: 30.10 $ + * @(#) $Id: version.c,v 30.10 2008/10/24 09:55:12 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/RCS/version.c,v $ * * Under source code control: 1990/05/22 11:00:58 @@ -49,7 +49,7 @@ static char *program; #define MAJOR_VER 2 /* major library version */ #define MINOR_VER 12 /* minor library version */ #define MAJOR_PATCH 4 /* major software level under library version */ -#define MINOR_PATCH 1 /* minor software level or 0 if not patched */ +#define MINOR_PATCH 0 /* minor software level or 0 if not patched */ /*