This is an implementation of POSIX bc that implements GNU bc extensions, as
well as the period (".") extension for the BSD flavor of bc.
bc is an arbitrary precision numeric processing language. Its syntax is
similar to C but differs in many substantial areas. It supports interactive
execution of statements. The bc utility is included in the POSIX 1003.1-2008
standard.
This bc also includes an implementation of dc in the same binary, accessible
via a symbolic link, which implements all FreeBSD and GNU extensions. If a
single dc binary is desired, bc can be copied and renamed to dc.
The "!" command is omitted; I believe that it poses security concerns and
that such functionality is unnecessary.
===> The following configuration options are available for gh-bc-7.1.0:
====> Options available for the radio HISTORY: you can only select none or one of them
LIBEDIT=on: Command line editing via libedit
READLINE=off: Command line editing via libreadline
INTERNAL=off: Command line editing via private functions
===> Use 'make config' to modify these settings
math/gh-bc: update to version 7.1.0
This fixes a few bugs:
- Improper response to double SIGINT with editline.
- Not letting libedit handle terminal size changes.
- A dc crash from improperly handling an error.
- A duplicate check for reference arrays.
- Build failures with GCC 15.
It also has a performance increase in the band() function and others
in the math library.
vendor/bc: upgrade to version 7.0.2
This update fixes exiting from an interactive bc session with ^D on
FreeBSD and Linux when using editline.
This bug was caused by the macOS fix for editline in version 7.0.0,
which has been reverted in this version.
math/gh-bc: upgrade to version 7.0.0
This is a production release to fix three bugs, none of which
affects well formed scripts on FreeBSD:
The first bug is that bc/dc will exit on macOS when the terminal
is resized.
The second bug is that an array, which should only be a function
parameter, was accepted as part of larger expressions.
The third bug is that the value stack for dc was cleared on any error.
However, this is not how other dc behave. To bring dc more in line
with other implementations, this behavior was changed. This change is
why this version is a new major version.
math/gh-bc: update to version 6.7.5
This update fixes a bug that line breaks in printed numbers may not
match the line length set by the user. The value is printed correctly,
just not split as specified in some situations.
math/gh-bc: upgrade to version 6.6.1
This version provides an optimized implementation of the library
function p(x,y) for calculating the y-th power of x.
math/gh-bc: upgrade to version 6.6.0
This update removes printing of a leading zero in scientific or
engineering output modes (which are an extended feature of this
implementation).
math/gh-bc: update to version 6.5.0
This is a production release that fixes an infinite loop bug in root()
and cbrt(), fixes a bug with BC_LINE_LENGTH=0, and adds the fib()
function to the extended math library to calculate Fibonacci numbers.
math/gh-bc: update to version 6.4.0
This version contains a fix for an issue that can affect complex
bc scripts that use multiple read() functions that receive input from
an interactive user. The same value could be returned multiple times.
math/gh-bc: update to version 6.2.4
This update changes the URL of the upstream repository in the
documentation to:
https://git.gavinhoward.com/gavin/bc
math/gh-bc: update to version 6.2.2
This update fixes a few issues and adds new features:
- There was a discrepancy from the bc standard with regards to the
behavior of the "quit" command. This bc used to quit whenever it
encountered "quit" during parsing, even if it was parsing a full
file. Now, bc only quits when encountering "quit" after it has
executed all executable statements up to that point.
This behavior is slightly different from GNU bc, but users will
only notice the difference if they put "quit" on the same line
as other statements.
- A memory bug was caused by assigning a string to a non-local
variable in a function, then redefining the function with use of
(Only the first 15 lines of the commit message are shown above )
Remove WWW entries moved into port Makefiles
Commit b7f05445c00f has added WWW entries to port Makefiles based on
WWW: lines in pkg-descr files.
This commit removes the WWW: lines of moved-over URLs from these
pkg-descr files.
Approved by: portmgr (tcberner)
Add WWW entries to port Makefiles
It has been common practice to have one or more URLs at the end of the
ports' pkg-descr files, one per line and prefixed with "WWW:". These
URLs should point at a project website or other relevant resources.
Access to these URLs required processing of the pkg-descr files, and
they have often become stale over time. If more than one such URL was
present in a pkg-descr file, only the first one was tarnsfered into
the port INDEX, but for many ports only the last line did contain the
port specific URL to further information.
There have been several proposals to make a project URL available as
a macro in the ports' Makefiles, over time.
(Only the first 15 lines of the commit message are shown above )
math/gh-bc: upgrade to version 6.0.1
This update adds the -c/-C options to control the clamping behavior
(the parsing of digits not allowed by the current value of ibase).
math/gh-bc: update to version 5.3.3
This update restores suppression of the prompt with option -P, which
had been missing if linked with libedit or libreadline.
Since building the version tagged as 5.3.3 leaves temporary files in
/tmp, this commit includes a post-release update that fixes this build
issue.
math/gh-bc: update to version 5.3.2
This update Restores support for suppression of the prompt with -P
when using the libedit or libreadline libraries for command line
editing and history.
math/gh-bc: update to version 5.3.1
This version supports multiple command line editing and history
implementations:
- editline (default)
- readline
- private implementation (as in prior versions)
The private implementation has been modified to treat ^D on an empty
input line as an EOF signal.
math/gh-bc: update to version 5.2.4
This update fixes an issue in input line editing: when going left to
the start of the line, the cursor would jump to the end of the line
instead.
math/gh-bc: update to version 5.2.3
This update fixes a parse error when passing a file to bc using -f
if that file has a multiline comment or string in it.
math/gh-bc: update to version 5.2.2
The only change relative to the previous version is that a default
value for the program name is used if the program is invoked with
argv[0] == NULL.
math/gh-bc: update to version 5.2.1
This version fixes two parse bugs when in POSIX standard mode. One of
these bugs was due to a quirk of the POSIX grammar, and the other was
because bc was too strict.
math/gh-bc: update to version 5.1.0
This version adds options and functions that allow to print numbers
in the open interval (-1 .. 1) with or without a leading 0 digit.
Additionally, an option has been added to prevent line wrap and
allows to print arbitrarily long results on a single line.
math/gh-bc: update to version 5.0.0
This is a new major release with a number of changes and extensions:
- Limited the number of temporary numbers and made the space for them
static so that allocating more space for them cannot fail.
- Allowed integers with non-zero scale to be used with power, places,
and shift operators.
- Added greatest common divisor and least common multiple to lib2.bc.
- Made bc and dc UTF-8 capable.
- Added the ability for users to have bc and dc quit on SIGINT.
- Added the ability for users to disable prompt and TTY mode by
environment variables.
- Added the ability for users to redefine keywords.
- Added dc's modular exponentiation and divmod to bc.
- Added the ability to assign strings to variables and array elements
and pass them to functions in bc.
- Added dc's asciify command and stream printing to bc.
- Added bitwise and, or, xor, left shift, right shift, reverse,
left rotate, right rotate, and mod functions to lib2.bc.
- Added the functions s2u(x) and s2un(x,n), to lib2.bc.
math/bc: Update to version 4.0.2
This update fixes the initialization of "scale" to 20 if started with
-l and the initial statement leads to an error (e.g. contains a syntax
error). Scale was initialized to 0 in that case.
Another change is the support of job control in interactive mode with
line editing enabled. The control characters have been interpreted as
editing commands only, prior to this version.
Update to Version 4.0.0
This version fixes an issue in dc: the P command did not pop the value
being printed from the stack.
The major version bump is due to the addition of Windows compatibility
and does not correspond to a change of functionality on POSIX systems.
Update to version 3.3.4
This update adds an implicit flush of the output if read() is called in a
bc script in order to display a prompt without \n in line buffered mode.
Update to version 3.3.3
This version fixes a potential division be 0 in the extended math library
(in the non-standard function "root") and makes length(0) return 1 to
restore the behavior of the traditional bc in FreeBSD and of GNU bc.
Upgrade to version 3.3.0
There is one functional change with regard to -e of -f in BC_ENV_ARGS resp.
DC_ENV_ARGS: these do no longer make the program exit after processing the
commands passed that way (which prevented to use the environment variables
to set parameters for interactive sessions, unless -f- was passed as the
last argument on the command line).
Update to version 3.1.6
This update fixes one (benign) warning generated when compiling with
LLVM-12.
Differential Revision: https://reviews.freebsd.org/D26593
Upgrade to version 3.1.4
This version improves the compatibility with the bc and dc in base under
two aspects:
1) Remove printing of the version and copyright message for interactive
invocations of bc an dc.
2) Make dc exit after execution of commands passed via -e or -f. To get
the behavior of version 3.1.3 back, "-f -" can be appended to the
command line to read from STDIN until EOF.
Approved by: antoine (implicit)
Update to verdsion 3.1.3
This version fixes an incompatibility with GNU bc:
The statement:
if (a > b) 1
was rejected, unless followed by "else 0".
Approved by: antoine (implicit)
Upgrade to version 3.0.1
This version fixes a warning when building with a strict warnings level
and significantly speeds up ceil() library function.
Approved by: antoine (implicit)
Update to version 3.0.0
This version contains extensive changes to signal handling and input
processing (history) and many small enhancements.
Approved by: antoine (implicit)
Upgrade to version 2.7.1
This version contains small changes to the new NLS files and const qualifiers
to silence the compiler if extra warnings are enabled.
Approved by: antoine (implicit)
Update to version 2.7.0
This version fixes a problem that only affected getopt_long() on Linux
(or rather, the GLIBC implementation) by replacing its use by optparse().
In addition, this version features a PRNG that can be used to generate
arbitrary length pseudo-random numbers and 5 new translations (for Dutch,
Japanese, Polish, Russian, and Simplified Chinese).
These translations have been generated and verified with online tools
(https://www.deepl.com/translator and https://translate.google.com)
and might therefore not be fully correct - a review by native speakers
would be appreciated.
Approved by: antoine (implicit)
Update to version 2.6.1
This version fixes a bug that only occured when building on FreeBSD
without long options support. It did not affect the port or package,
since it was always built with long options.
Approved by: antoine (implicit)
Final attempt to make the Poruguese locales actually work.
Just roll out the loop to create usable catalogue files instead of
trying to have a loop do the right thing ...
Approved by: antoine (implicit)
Due to the way the Portuguese ISO-8859-* files were named, they were not
installed on FreeBSD. Therefore provide message catalogues according to
out naming scheme to include these files in the build.
Approved by: antoine (implicit)
Try to fix a package build error that I cannot reproduce on my system.
Even though "poudriere testport" completed without error, I have received
a failure message from the build cluster. Since I cannot reproduce the
problem, I can only guess that it is caused by a symbolic link in the
share/nls directory that connects nls/C to nls/en_US.US-ASCII.
I had problems with the nls/C directory disappearing due to that link
before (it is deleted as empty when the last catalog file is deleted on
package deinstallation, but then missing when a new file is installed
into en_US.US-ASCII, which is just a symbolic link to C which does not
exist at that time anymore). I think this is a bug in "pkg" and have
opened a PR.
It is possible that the port will still fail to build in the cluster,
but without access to the work directory (or rather the stage directory)
of the build host I can only guess what's exactly going on.
IMHO there should not be any magic conenction between nls/en_US.US-ASCII
and nls/C, since this breaks assumptions made in pkg and in the qa check
performed by poudriere.
Approved by: antoine (implicit)
Update to version 2.0.0
This version uses an optimized internal representation of the operands which
allows to speed up some operations by a significant factor (multiplication
of large numbers is now about 40 times as fast).
This version has been tested against a number of other bc implementations
and has been found to significantly outperform them all (incl. GNU bc).
There are no functional changes in this version, it is just much faster ...
Approved by: antoine (implicit)
Upgrade to version 1.2.8.
This package exposes a bug (IMHO) in "pkg" which deletes the directory
pointed to by a symbolic link after removing the files within, but is
not able to recreate that directory when a package is installed.
It may be necessary to manually recreate ${LOCALBASE}/share/nls/C after
removal of this package, e.g. during a port upgrade.
This commit is meant to provide a test case for package maintainers
that hopefully will lead to this issue being fixed in "pkg".
Approved by: antoine (implicit)
Update to version 1.2.4.
This version adds message catalogs for French and German locales.
The messages for fr_CA and fr_CH have not been checked by native
speakers and might need some adjustment.
Approved by: antoine (implicit)
Update distinfo after changes to the configure script and documentation
have been applied in the repo under the version tag used for the port.
Approved by: antoine (implicit)
Fix CONFLICTS_INSTALL pattern to really match the math/gnubc port.
I had missed the PKGNAMEPREFIX in the GNU bc port ...
Approved by: antoine (implicit)
New port of a BSD licensed and GNU compatible bc and dc program.
These programs have been used in a number of other projects over
many years and they are highly portable and heavily tested.
Obtained from: Gavin Howard <gavin.d.howard@gmail.com>
Approved by: antoine (mentor)