Vendor import of Gavin D. Howard's bc version 4.0.0
This commit is contained in:
parent
893ecb52db
commit
7a590c074c
11
Makefile.in
11
Makefile.in
@ -29,8 +29,6 @@
|
|||||||
#
|
#
|
||||||
.POSIX:
|
.POSIX:
|
||||||
|
|
||||||
VERSION = 3.3.4
|
|
||||||
|
|
||||||
SRC = %%SRC%%
|
SRC = %%SRC%%
|
||||||
OBJ = %%OBJ%%
|
OBJ = %%OBJ%%
|
||||||
GCDA = %%GCDA%%
|
GCDA = %%GCDA%%
|
||||||
@ -128,6 +126,8 @@ MAIN_EXEC = $(EXEC_PREFIX)$(%%MAIN_EXEC%%)$(EXEC_SUFFIX)
|
|||||||
EXEC = $(%%EXEC%%)
|
EXEC = $(%%EXEC%%)
|
||||||
NLSPATH = %%NLSPATH%%
|
NLSPATH = %%NLSPATH%%
|
||||||
|
|
||||||
|
BC_BUILD_TYPE = %%BUILD_TYPE%%
|
||||||
|
|
||||||
BC_ENABLE_LIBRARY = %%LIBRARY%%
|
BC_ENABLE_LIBRARY = %%LIBRARY%%
|
||||||
|
|
||||||
BC_ENABLE_HISTORY = %%HISTORY%%
|
BC_ENABLE_HISTORY = %%HISTORY%%
|
||||||
@ -158,7 +158,7 @@ TEST_STARS = "******************************************************************
|
|||||||
BC_NUM_KARATSUBA_LEN = %%KARATSUBA_LEN%%
|
BC_NUM_KARATSUBA_LEN = %%KARATSUBA_LEN%%
|
||||||
|
|
||||||
CPPFLAGS1 = -D$(BC_ENABLED_NAME)=$(BC_ENABLED) -D$(DC_ENABLED_NAME)=$(DC_ENABLED)
|
CPPFLAGS1 = -D$(BC_ENABLED_NAME)=$(BC_ENABLED) -D$(DC_ENABLED_NAME)=$(DC_ENABLED)
|
||||||
CPPFLAGS2 = $(CPPFLAGS1) -I./include/ -DVERSION=$(VERSION) %%LONG_BIT_DEFINE%%
|
CPPFLAGS2 = $(CPPFLAGS1) -I./include/ -DBUILD_TYPE=$(BC_BUILD_TYPE) %%LONG_BIT_DEFINE%%
|
||||||
CPPFLAGS3 = $(CPPFLAGS2) -DEXECPREFIX=$(EXEC_PREFIX) -DMAINEXEC=$(MAIN_EXEC)
|
CPPFLAGS3 = $(CPPFLAGS2) -DEXECPREFIX=$(EXEC_PREFIX) -DMAINEXEC=$(MAIN_EXEC)
|
||||||
CPPFLAGS4 = $(CPPFLAGS3) -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700
|
CPPFLAGS4 = $(CPPFLAGS3) -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700
|
||||||
CPPFLAGS5 = $(CPPFLAGS4) -DBC_NUM_KARATSUBA_LEN=$(BC_NUM_KARATSUBA_LEN)
|
CPPFLAGS5 = $(CPPFLAGS4) -DBC_NUM_KARATSUBA_LEN=$(BC_NUM_KARATSUBA_LEN)
|
||||||
@ -322,9 +322,6 @@ coverage_output:
|
|||||||
|
|
||||||
coverage:%%COVERAGE_PREREQS%%
|
coverage:%%COVERAGE_PREREQS%%
|
||||||
|
|
||||||
version:
|
|
||||||
@printf '%s' "$(VERSION)"
|
|
||||||
|
|
||||||
libcname:
|
libcname:
|
||||||
@printf '%s' "$(BC_LIB_C)"
|
@printf '%s' "$(BC_LIB_C)"
|
||||||
|
|
||||||
@ -341,6 +338,7 @@ clean_gen:
|
|||||||
|
|
||||||
clean:%%CLEAN_PREREQS%%
|
clean:%%CLEAN_PREREQS%%
|
||||||
@printf 'Cleaning files...\n'
|
@printf 'Cleaning files...\n'
|
||||||
|
@$(RM) -f src/*.tmp gen/*.tmp
|
||||||
@$(RM) -f $(OBJ)
|
@$(RM) -f $(OBJ)
|
||||||
@$(RM) -f $(BC_EXEC)
|
@$(RM) -f $(BC_EXEC)
|
||||||
@$(RM) -f $(DC_EXEC)
|
@$(RM) -f $(DC_EXEC)
|
||||||
@ -352,6 +350,7 @@ clean:%%CLEAN_PREREQS%%
|
|||||||
@$(RM) -f $(DC_HELP_C) $(DC_HELP_O)
|
@$(RM) -f $(DC_HELP_C) $(DC_HELP_O)
|
||||||
@$(RM) -fr $(BC_TEST_OUTPUTS) $(DC_TEST_OUTPUTS)
|
@$(RM) -fr $(BC_TEST_OUTPUTS) $(DC_TEST_OUTPUTS)
|
||||||
@$(RM) -fr $(BC_FUZZ_OUTPUTS) $(DC_FUZZ_OUTPUTS)
|
@$(RM) -fr $(BC_FUZZ_OUTPUTS) $(DC_FUZZ_OUTPUTS)
|
||||||
|
@$(RM) -fr Debug/ Release/
|
||||||
|
|
||||||
clean_config: clean
|
clean_config: clean
|
||||||
@printf 'Cleaning config...\n'
|
@printf 'Cleaning config...\n'
|
||||||
|
25
NEWS.md
25
NEWS.md
@ -1,5 +1,30 @@
|
|||||||
# News
|
# News
|
||||||
|
|
||||||
|
## 4.0.0
|
||||||
|
|
||||||
|
This is a production release with many fixes, a new command-line option, and a
|
||||||
|
big surprise:
|
||||||
|
|
||||||
|
* A bug was fixed in `dc`'s `P` command where the item on the stack was *not*
|
||||||
|
popped.
|
||||||
|
* Various bugs in the manuals have been fixed.
|
||||||
|
* A known bug was fixed where history did not interact well with prompts printed
|
||||||
|
by user code without newlines.
|
||||||
|
* A new command-line option, `-R` and `--no-read-prompt` was added to disable
|
||||||
|
just the prompt when using `read()` (`bc`) or `?` (`dc`).
|
||||||
|
* And finally, **official support for Windows was added**.
|
||||||
|
|
||||||
|
The last item is why this is a major version bump.
|
||||||
|
|
||||||
|
Currently, only one set of build options (extra math and prompt enabled, history
|
||||||
|
and NLS/locale support disabled, both calculators enabled) is supported on
|
||||||
|
Windows. However, both debug and release builds are supported.
|
||||||
|
|
||||||
|
In addition, Windows builds are supported for the the library (`bcl`).
|
||||||
|
|
||||||
|
For more details about how to build on Windows, see the [README][5] or the
|
||||||
|
[build manual][13].
|
||||||
|
|
||||||
## 3.3.4
|
## 3.3.4
|
||||||
|
|
||||||
This is a production release that fixes a small bug.
|
This is a production release that fixes a small bug.
|
||||||
|
107
README.md
107
README.md
@ -24,13 +24,16 @@ This `bc` is Free and Open Source Software (FOSS). It is offered under the BSD
|
|||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
This `bc` only requires a C99-compatible compiler and a (mostly) POSIX
|
This `bc` only requires either:
|
||||||
2008-compatible system with the XSI (X/Open System Interfaces) option group.
|
|
||||||
|
1. Windows 10 or later, or
|
||||||
|
2. A C99-compatible compiler and a (mostly) POSIX 2008-compatible system with
|
||||||
|
the XSI (X/Open System Interfaces) option group.
|
||||||
|
|
||||||
Since POSIX 2008 with XSI requires the existence of a C99 compiler as `c99`, any
|
Since POSIX 2008 with XSI requires the existence of a C99 compiler as `c99`, any
|
||||||
POSIX and XSI-compatible system will have everything needed.
|
POSIX and XSI-compatible system will have everything needed.
|
||||||
|
|
||||||
Systems that are known to work:
|
POSIX-compatible systems that are known to work:
|
||||||
|
|
||||||
* Linux
|
* Linux
|
||||||
* FreeBSD
|
* FreeBSD
|
||||||
@ -41,17 +44,68 @@ Systems that are known to work:
|
|||||||
* AIX
|
* AIX
|
||||||
* HP-UX* (except for history)
|
* HP-UX* (except for history)
|
||||||
|
|
||||||
|
In addition, there is compatibility code to make this `bc` work on Windows.
|
||||||
|
|
||||||
Please submit bug reports if this `bc` does not build out of the box on any
|
Please submit bug reports if this `bc` does not build out of the box on any
|
||||||
system besides Windows.
|
system.
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
This `bc` should build unmodified on any POSIX-compliant system.
|
### Windows
|
||||||
|
|
||||||
|
There is no guarantee that this `bc` will work on any version of Windows earlier
|
||||||
|
than Windows 10 (I cannot test on earlier versions), but it is guaranteed to
|
||||||
|
work on Windows 10 at least.
|
||||||
|
|
||||||
|
Also, if building with MSBuild, the MSBuild bundled with Visual Studio is
|
||||||
|
required.
|
||||||
|
|
||||||
|
**Note**: Unlike the POSIX-compatible platforms, only one build configuration is
|
||||||
|
supported on Windows: extra math and prompt enabled, history and NLS (locale
|
||||||
|
support) disabled, with both calculators built.
|
||||||
|
|
||||||
|
#### `bc`
|
||||||
|
|
||||||
|
To build `bc`, you can open the `bc.sln` file in Visual Studio, select the
|
||||||
|
configuration, and build.
|
||||||
|
|
||||||
|
You can also build using MSBuild with the following from the root directory:
|
||||||
|
|
||||||
|
```
|
||||||
|
msbuild -property:Configuration=<config> bc.sln
|
||||||
|
```
|
||||||
|
|
||||||
|
where `<config>` is either one of `Debug` or `Release`.
|
||||||
|
|
||||||
|
#### `bcl` (Library)
|
||||||
|
|
||||||
|
To build the library, you can open the `bcl.sln` file in Visual Studio, select
|
||||||
|
the configuration, and build.
|
||||||
|
|
||||||
|
You can also build using MSBuild with the following from the root directory:
|
||||||
|
|
||||||
|
```
|
||||||
|
msbuild -property:Configuration=<config> bcl.sln
|
||||||
|
```
|
||||||
|
|
||||||
|
where `<config>` is either one of `Debug` or `Release`.
|
||||||
|
|
||||||
|
### POSIX-Compatible Systems
|
||||||
|
|
||||||
|
This `bc` should build unmodified on any POSIX-compliant system or on Windows
|
||||||
|
starting with Windows 10 (though earlier versions may work).
|
||||||
|
|
||||||
For more complex build requirements than the ones below, see the
|
For more complex build requirements than the ones below, see the
|
||||||
[build manual][5].
|
[build manual][5].
|
||||||
|
|
||||||
### Default
|
On POSIX-compatible systems, `bc` is built as `bin/bc` and `dc` is built as
|
||||||
|
`bin/dc` by default. On Windows, they are built as `Release/bc/bc.exe` and
|
||||||
|
`Release/bc/dc.exe`.
|
||||||
|
|
||||||
|
**Note**: On Windows, `dc.exe` is just copied from `bc.exe`; it is not linked.
|
||||||
|
Patches are welcome for a way to do that.
|
||||||
|
|
||||||
|
#### Default
|
||||||
|
|
||||||
For the default build with optimization, use the following commands in the root
|
For the default build with optimization, use the following commands in the root
|
||||||
directory:
|
directory:
|
||||||
@ -61,7 +115,7 @@ directory:
|
|||||||
make
|
make
|
||||||
```
|
```
|
||||||
|
|
||||||
### One Calculator
|
#### One Calculator
|
||||||
|
|
||||||
To only build `bc`, use the following commands:
|
To only build `bc`, use the following commands:
|
||||||
|
|
||||||
@ -77,7 +131,7 @@ To only build `dc`, use the following commands:
|
|||||||
make
|
make
|
||||||
```
|
```
|
||||||
|
|
||||||
### Debug
|
#### Debug
|
||||||
|
|
||||||
For debug builds, use the following commands in the root directory:
|
For debug builds, use the following commands in the root directory:
|
||||||
|
|
||||||
@ -86,7 +140,7 @@ For debug builds, use the following commands in the root directory:
|
|||||||
make
|
make
|
||||||
```
|
```
|
||||||
|
|
||||||
### Install
|
#### Install
|
||||||
|
|
||||||
To install, use the following command:
|
To install, use the following command:
|
||||||
|
|
||||||
@ -99,7 +153,7 @@ other locations, use the `PREFIX` environment variable when running
|
|||||||
`configure.sh` or pass the `--prefix=<prefix>` option to `configure.sh`. See the
|
`configure.sh` or pass the `--prefix=<prefix>` option to `configure.sh`. See the
|
||||||
[build manual][5], or run `./configure.sh --help`, for more details.
|
[build manual][5], or run `./configure.sh --help`, for more details.
|
||||||
|
|
||||||
### Library
|
#### Library
|
||||||
|
|
||||||
This `bc` does provide a way to build a math library with C bindings. This is
|
This `bc` does provide a way to build a math library with C bindings. This is
|
||||||
done by the `-a` or `--library` options to `configure.sh`:
|
done by the `-a` or `--library` options to `configure.sh`:
|
||||||
@ -114,11 +168,12 @@ see the [build manual][5].
|
|||||||
The library API can be found in [`manuals/bcl.3.md`][26] or `man bcl` once the
|
The library API can be found in [`manuals/bcl.3.md`][26] or `man bcl` once the
|
||||||
library is installed.
|
library is installed.
|
||||||
|
|
||||||
The library is built as `bin/libbcl.a`.
|
The library is built as `bin/libbcl.a` on POSIX-compatible systems or as
|
||||||
|
`Release/bcl/bcl.lib` on Windows.
|
||||||
|
|
||||||
### Package and Distro Maintainers
|
#### Package and Distro Maintainers
|
||||||
|
|
||||||
#### Recommended Compiler
|
##### Recommended Compiler
|
||||||
|
|
||||||
When I ran benchmarks with my `bc` compiled under `clang`, it performed much
|
When I ran benchmarks with my `bc` compiled under `clang`, it performed much
|
||||||
better than when compiled under `gcc`. I recommend compiling this `bc` with
|
better than when compiled under `gcc`. I recommend compiling this `bc` with
|
||||||
@ -127,7 +182,7 @@ better than when compiled under `gcc`. I recommend compiling this `bc` with
|
|||||||
I also recommend building this `bc` with C11 if you can because `bc` will detect
|
I also recommend building this `bc` with C11 if you can because `bc` will detect
|
||||||
a C11 compiler and add `_Noreturn` to any relevant function(s).
|
a C11 compiler and add `_Noreturn` to any relevant function(s).
|
||||||
|
|
||||||
#### Recommended Optimizations
|
##### Recommended Optimizations
|
||||||
|
|
||||||
I wrote this `bc` with Separation of Concerns, which means that there are many
|
I wrote this `bc` with Separation of Concerns, which means that there are many
|
||||||
small functions that could be inlined. However, they are often called across
|
small functions that could be inlined. However, they are often called across
|
||||||
@ -154,12 +209,12 @@ However, I recommend ***NOT*** using `-march=native`. Doing so will reduce this
|
|||||||
`bc`'s performance, at least when building with link-time optimization. See the
|
`bc`'s performance, at least when building with link-time optimization. See the
|
||||||
[benchmarks][19] for more details.
|
[benchmarks][19] for more details.
|
||||||
|
|
||||||
#### Stripping Binaries
|
##### Stripping Binaries
|
||||||
|
|
||||||
By default, non-debug binaries are stripped, but stripping can be disabled with
|
By default, non-debug binaries are stripped, but stripping can be disabled with
|
||||||
the `-T` option to `configure.sh`.
|
the `-T` option to `configure.sh`.
|
||||||
|
|
||||||
#### Using This `bc` as an Alternative
|
##### Using This `bc` as an Alternative
|
||||||
|
|
||||||
If this `bc` is packaged as an alternative to an already existing `bc` package,
|
If this `bc` is packaged as an alternative to an already existing `bc` package,
|
||||||
it is possible to rename it in the build to prevent name collision. To prepend
|
it is possible to rename it in the build to prevent name collision. To prepend
|
||||||
@ -181,7 +236,7 @@ allowed.
|
|||||||
**Note**: The suggested name (and package name) when `bc` is not available is
|
**Note**: The suggested name (and package name) when `bc` is not available is
|
||||||
`bc-gh`.
|
`bc-gh`.
|
||||||
|
|
||||||
#### Karatsuba Number
|
##### Karatsuba Number
|
||||||
|
|
||||||
Package and distro maintainers have one tool at their disposal to build this
|
Package and distro maintainers have one tool at their disposal to build this
|
||||||
`bc` in the optimal configuration: `karatsuba.py`.
|
`bc` in the optimal configuration: `karatsuba.py`.
|
||||||
@ -217,6 +272,7 @@ translations will also be added as they are provided.
|
|||||||
|
|
||||||
This `bc` compares favorably to GNU `bc`.
|
This `bc` compares favorably to GNU `bc`.
|
||||||
|
|
||||||
|
* This `bc` builds natively on Windows.
|
||||||
* It has more extensions, which make this `bc` more useful for scripting.
|
* It has more extensions, which make this `bc` more useful for scripting.
|
||||||
* This `bc` is a bit more POSIX compliant.
|
* This `bc` is a bit more POSIX compliant.
|
||||||
* It has a much less buggy parser. The GNU `bc` will give parse errors for what
|
* It has a much less buggy parser. The GNU `bc` will give parse errors for what
|
||||||
@ -246,7 +302,9 @@ To see what algorithms this `bc` uses, see the [algorithms manual][7].
|
|||||||
|
|
||||||
## Locales
|
## Locales
|
||||||
|
|
||||||
Currently, this `bc` only has support for English (and US English), French,
|
Currently, there is no locale support on Windows.
|
||||||
|
|
||||||
|
Additionally, this `bc` only has support for English (and US English), French,
|
||||||
German, Portuguese, Dutch, Polish, Russian, Japanese, and Chinese locales.
|
German, Portuguese, Dutch, Polish, Russian, Japanese, and Chinese locales.
|
||||||
Patches are welcome for translations; use the existing `*.msg` files in
|
Patches are welcome for translations; use the existing `*.msg` files in
|
||||||
`locales/` as a starting point.
|
`locales/` as a starting point.
|
||||||
@ -276,7 +334,8 @@ Other projects based on this bc are:
|
|||||||
|
|
||||||
## Language
|
## Language
|
||||||
|
|
||||||
This `bc` is written in pure ISO C99, using POSIX 2008 APIs.
|
This `bc` is written in pure ISO C99, using POSIX 2008 APIs with custom Windows
|
||||||
|
compatibility code.
|
||||||
|
|
||||||
## Commit Messages
|
## Commit Messages
|
||||||
|
|
||||||
@ -294,6 +353,13 @@ tarballs.
|
|||||||
Files:
|
Files:
|
||||||
|
|
||||||
.gitignore The git ignore file (maintainer use only).
|
.gitignore The git ignore file (maintainer use only).
|
||||||
|
.gitattributes The git attributes file (maintainer use only).
|
||||||
|
bc.sln The Visual Studio solution file for bc.
|
||||||
|
bc.vcxproj The Visual Studio project file for bc.
|
||||||
|
bc.vcxproj.filters The Visual Studio filters file for bc.
|
||||||
|
bcl.sln The Visual Studio solution file for bcl.
|
||||||
|
bcl.vcxproj The Visual Studio project file for bcl.
|
||||||
|
bcl.vcxproj.filters The Visual Studio filters file for bcl.
|
||||||
configure A symlink to configure.sh to make packaging easier.
|
configure A symlink to configure.sh to make packaging easier.
|
||||||
configure.sh The configure script.
|
configure.sh The configure script.
|
||||||
functions.sh A script with functions used by other scripts.
|
functions.sh A script with functions used by other scripts.
|
||||||
@ -304,7 +370,8 @@ Files:
|
|||||||
locale_install.sh A script to install locales, if desired.
|
locale_install.sh A script to install locales, if desired.
|
||||||
locale_uninstall.sh A script to uninstall locales.
|
locale_uninstall.sh A script to uninstall locales.
|
||||||
Makefile.in The Makefile template.
|
Makefile.in The Makefile template.
|
||||||
manpage.sh Script to generate man pages from markdown files.
|
manpage.sh Script to generate man pages from markdown files
|
||||||
|
(maintainer use only).
|
||||||
NOTICE.md List of contributors and copyright owners.
|
NOTICE.md List of contributors and copyright owners.
|
||||||
RELEASE.md A checklist for making a release (maintainer use only).
|
RELEASE.md A checklist for making a release (maintainer use only).
|
||||||
release.sh A script to test for release (maintainer use only).
|
release.sh A script to test for release (maintainer use only).
|
||||||
|
31
bc.sln
Normal file
31
bc.sln
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 16
|
||||||
|
VisualStudioVersion = 16.0.31129.286
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bc", "bc.vcxproj", "{D5086CFE-052C-4742-B005-E05DB983BBA2}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{D5086CFE-052C-4742-B005-E05DB983BBA2}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{D5086CFE-052C-4742-B005-E05DB983BBA2}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{D5086CFE-052C-4742-B005-E05DB983BBA2}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{D5086CFE-052C-4742-B005-E05DB983BBA2}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{D5086CFE-052C-4742-B005-E05DB983BBA2}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{D5086CFE-052C-4742-B005-E05DB983BBA2}.Release|x64.Build.0 = Release|x64
|
||||||
|
{D5086CFE-052C-4742-B005-E05DB983BBA2}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{D5086CFE-052C-4742-B005-E05DB983BBA2}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {7869B1FB-A7C4-4FCF-8B99-F696DB2765EC}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
278
bc.vcxproj
Normal file
278
bc.vcxproj
Normal file
@ -0,0 +1,278 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>16.0</VCProjectVersion>
|
||||||
|
<ProjectGuid>{D5086CFE-052C-4742-B005-E05DB983BBA2}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<CustomBuild Include="gen\strgen.c">
|
||||||
|
<Message>Building strgen</Message>
|
||||||
|
<Command>CL /Fo:$(Configuration)\$(ProjectName)\ /Fe:$(Configuration)\$(ProjectName)\strgen.exe gen\strgen.c</Command>
|
||||||
|
<Inputs>gen\strgen.c</Inputs>
|
||||||
|
<Outputs>$(Configuration)\$(ProjectName)\strgen.exe</Outputs>
|
||||||
|
</CustomBuild>
|
||||||
|
<CustomBuild Include="gen\lib.bc">
|
||||||
|
<Message>Generating $(Configuration)\$(ProjectName)/lib.c</Message>
|
||||||
|
<Command>START $(Configuration)\$(ProjectName)/strgen gen\lib.bc $(Configuration)\$(ProjectName)/lib.c bc_lib bc_lib_name BC_ENABLED 1</Command>
|
||||||
|
<Inputs>$(Configuration)\$(ProjectName)\strgen.exe;gen\lib.bc</Inputs>
|
||||||
|
<Outputs>$(Configuration)\$(ProjectName)\lib.c</Outputs>
|
||||||
|
</CustomBuild>
|
||||||
|
<CustomBuild Include="gen\lib2.bc">
|
||||||
|
<Message>Generating $(Configuration)\$(ProjectName)/lib2.c</Message>
|
||||||
|
<Command>START $(Configuration)\$(ProjectName)/strgen gen\lib2.bc $(Configuration)\$(ProjectName)/lib2.c bc_lib2 bc_lib2_name BC_ENABLED 1</Command>
|
||||||
|
<Inputs>$(Configuration)\$(ProjectName)\strgen.exe;gen\lib2.bc</Inputs>
|
||||||
|
<Outputs>$(Configuration)\$(ProjectName)\lib2.c</Outputs>
|
||||||
|
</CustomBuild>
|
||||||
|
<CustomBuild Include="gen\bc_help.txt">
|
||||||
|
<Message>Generating $(Configuration)\$(ProjectName)/bc_help.c</Message>
|
||||||
|
<Command>START $(Configuration)\$(ProjectName)/strgen gen\bc_help.txt $(Configuration)\$(ProjectName)\bc_help.c bc_help "" BC_ENABLED</Command>
|
||||||
|
<Inputs>$(Configuration)\$(ProjectName)\strgen.exe;gen\bc_help.txt</Inputs>
|
||||||
|
<Outputs>$(Configuration)\$(ProjectName)\bc_help.c</Outputs>
|
||||||
|
</CustomBuild>
|
||||||
|
<CustomBuild Include="gen\dc_help.txt">
|
||||||
|
<Message>Generating $(Configuration)\$(ProjectName)/dc_help.c</Message>
|
||||||
|
<Command>START $(Configuration)\$(ProjectName)/strgen gen\dc_help.txt $(Configuration)\$(ProjectName)\dc_help.c dc_help "" DC_ENABLED</Command>
|
||||||
|
<Inputs>$(Configuration)\$(ProjectName)\strgen.exe;gen\dc_help.txt</Inputs>
|
||||||
|
<Outputs>$(Configuration)\$(ProjectName)\dc_help.c</Outputs>
|
||||||
|
</CustomBuild>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<CustomBuildBeforeTargets>ClCompile</CustomBuildBeforeTargets>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=1;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=HN</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<ExceptionHandling>false</ExceptionHandling>
|
||||||
|
<AdditionalOptions>/W3 %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<TargetMachine>MachineX86</TargetMachine>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>copy /b "$(SolutionDir)\$(Configuration)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(ProjectName)\dc.exe"</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Message>Copying bc to dc...</Message>
|
||||||
|
</PostBuildEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=1;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=HN</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<ExceptionHandling>false</ExceptionHandling>
|
||||||
|
<AdditionalOptions>/W3 %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<TargetMachine>MachineX86</TargetMachine>
|
||||||
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>copy /b "$(SolutionDir)\$(Configuration)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(ProjectName)\dc.exe"</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Message>Copying bc to dc...</Message>
|
||||||
|
</PostBuildEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=1;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=HN</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<ExceptionHandling>false</ExceptionHandling>
|
||||||
|
<AdditionalOptions>/W3 %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<TargetMachine>MachineX64</TargetMachine>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>copy /b "$(SolutionDir)\$(Configuration)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(ProjectName)\dc.exe"</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Message>Copying bc to dc...</Message>
|
||||||
|
</PostBuildEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=1;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=HN</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<ExceptionHandling>false</ExceptionHandling>
|
||||||
|
<AdditionalOptions>/W3 %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<TargetMachine>MachineX64</TargetMachine>
|
||||||
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>copy /b "$(SolutionDir)\$(Configuration)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(ProjectName)\dc.exe"</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Message>Copying bc to dc...</Message>
|
||||||
|
</PostBuildEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="$(Configuration)\$(ProjectName)\lib.c" />
|
||||||
|
<ClCompile Include="$(Configuration)\$(ProjectName)\lib2.c" />
|
||||||
|
<ClCompile Include="$(Configuration)\$(ProjectName)\bc_help.c" />
|
||||||
|
<ClCompile Include="$(Configuration)\$(ProjectName)\dc_help.c" />
|
||||||
|
<ClCompile Include="src\args.c" />
|
||||||
|
<ClCompile Include="src\bc.c" />
|
||||||
|
<ClCompile Include="src\bc_lex.c" />
|
||||||
|
<ClCompile Include="src\bc_parse.c" />
|
||||||
|
<ClCompile Include="src\data.c" />
|
||||||
|
<ClCompile Include="src\dc.c" />
|
||||||
|
<ClCompile Include="src\dc_lex.c" />
|
||||||
|
<ClCompile Include="src\dc_parse.c" />
|
||||||
|
<ClCompile Include="src\file.c" />
|
||||||
|
<ClCompile Include="src\history.c" />
|
||||||
|
<ClCompile Include="src\lang.c" />
|
||||||
|
<ClCompile Include="src\lex.c" />
|
||||||
|
<ClCompile Include="src\main.c" />
|
||||||
|
<ClCompile Include="src\num.c" />
|
||||||
|
<ClCompile Include="src\opt.c" />
|
||||||
|
<ClCompile Include="src\parse.c" />
|
||||||
|
<ClCompile Include="src\program.c" />
|
||||||
|
<ClCompile Include="src\rand.c" />
|
||||||
|
<ClCompile Include="src\read.c" />
|
||||||
|
<ClCompile Include="src\vector.c" />
|
||||||
|
<ClCompile Include="src\vm.c" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="include\args.h" />
|
||||||
|
<ClInclude Include="include\bc.h" />
|
||||||
|
<ClInclude Include="include\bcl.h" />
|
||||||
|
<ClInclude Include="include\dc.h" />
|
||||||
|
<ClInclude Include="include\file.h" />
|
||||||
|
<ClInclude Include="include\history.h" />
|
||||||
|
<ClInclude Include="include\lang.h" />
|
||||||
|
<ClInclude Include="include\lex.h" />
|
||||||
|
<ClInclude Include="include\library.h" />
|
||||||
|
<ClInclude Include="include\num.h" />
|
||||||
|
<ClInclude Include="include\opt.h" />
|
||||||
|
<ClInclude Include="include\parse.h" />
|
||||||
|
<ClInclude Include="include\program.h" />
|
||||||
|
<ClInclude Include="include\rand.h" />
|
||||||
|
<ClInclude Include="include\read.h" />
|
||||||
|
<ClInclude Include="include\status.h" />
|
||||||
|
<ClInclude Include="include\vector.h" />
|
||||||
|
<ClInclude Include="include\version.h" />
|
||||||
|
<ClInclude Include="include\vm.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Text Include="gen\bc_help.txt" />
|
||||||
|
<Text Include="gen\dc_help.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="gen\lib.bc" />
|
||||||
|
<None Include="gen\lib2.bc" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
182
bc.vcxproj.filters
Normal file
182
bc.vcxproj.filters
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="src\args.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\bc.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\bc_lex.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\bc_parse.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\data.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\dc.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\dc_lex.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\dc_parse.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\file.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\history.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\lang.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\lex.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\main.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\num.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\opt.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\parse.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\program.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\rand.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\read.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\vector.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\vm.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="gen\lib.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="gen\lib2.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="gen\bc_help.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="gen\dc_help.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="include\args.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\bc.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\bcl.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\dc.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\file.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\history.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\lang.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\lex.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\library.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\num.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\opt.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\parse.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\program.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\rand.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\read.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\status.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\vector.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\version.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\vm.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<CustomBuild Include="gen\strgen.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</CustomBuild>
|
||||||
|
<CustomBuild Include="gen\lib.bc" />
|
||||||
|
<CustomBuild Include="gen\lib2.bc" />
|
||||||
|
<CustomBuild Include="gen\bc_help.txt" />
|
||||||
|
<CustomBuild Include="gen\dc_help.txt" />
|
||||||
|
<CustomBuild Include="gen\lib.bc" />
|
||||||
|
<CustomBuild Include="gen\lib2.bc" />
|
||||||
|
<CustomBuild Include="gen\bc_help.txt" />
|
||||||
|
<CustomBuild Include="gen\dc_help.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Text Include="gen\bc_help.txt">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</Text>
|
||||||
|
<Text Include="gen\dc_help.txt">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</Text>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="gen\lib.bc">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="gen\lib2.bc">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
31
bcl.sln
Normal file
31
bcl.sln
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 16
|
||||||
|
VisualStudioVersion = 16.0.31129.286
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bcl", "bcl.vcxproj", "{D2CC3DCF-7919-4DEF-839D-E9B897EC3E8E}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{D2CC3DCF-7919-4DEF-839D-E9B897EC3E8E}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{D2CC3DCF-7919-4DEF-839D-E9B897EC3E8E}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{D2CC3DCF-7919-4DEF-839D-E9B897EC3E8E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{D2CC3DCF-7919-4DEF-839D-E9B897EC3E8E}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{D2CC3DCF-7919-4DEF-839D-E9B897EC3E8E}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{D2CC3DCF-7919-4DEF-839D-E9B897EC3E8E}.Release|x64.Build.0 = Release|x64
|
||||||
|
{D2CC3DCF-7919-4DEF-839D-E9B897EC3E8E}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{D2CC3DCF-7919-4DEF-839D-E9B897EC3E8E}.Release|x86.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {591735E0-C314-4BFF-A595-E9999B49CB25}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
161
bcl.vcxproj
Normal file
161
bcl.vcxproj
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>16.0</VCProjectVersion>
|
||||||
|
<ProjectGuid>{D2CC3DCF-7919-4DEF-839D-E9B897EC3E8E}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\$(Configuration)\$(ProjectName)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1</PreprocessorDefinitions>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)\include</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<TargetMachine>MachineX86</TargetMachine>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1</PreprocessorDefinitions>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)\include</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<TargetMachine>MachineX86</TargetMachine>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)\include</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)\include</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="src\data.c" />
|
||||||
|
<ClCompile Include="src\library.c" />
|
||||||
|
<ClCompile Include="src\num.c" />
|
||||||
|
<ClCompile Include="src\rand.c" />
|
||||||
|
<ClCompile Include="src\vector.c" />
|
||||||
|
<ClCompile Include="src\vm.c" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="include\args.h" />
|
||||||
|
<ClInclude Include="include\bc.h" />
|
||||||
|
<ClInclude Include="include\bcl.h" />
|
||||||
|
<ClInclude Include="include\dc.h" />
|
||||||
|
<ClInclude Include="include\file.h" />
|
||||||
|
<ClInclude Include="include\history.h" />
|
||||||
|
<ClInclude Include="include\lang.h" />
|
||||||
|
<ClInclude Include="include\lex.h" />
|
||||||
|
<ClInclude Include="include\library.h" />
|
||||||
|
<ClInclude Include="include\num.h" />
|
||||||
|
<ClInclude Include="include\opt.h" />
|
||||||
|
<ClInclude Include="include\parse.h" />
|
||||||
|
<ClInclude Include="include\program.h" />
|
||||||
|
<ClInclude Include="include\rand.h" />
|
||||||
|
<ClInclude Include="include\read.h" />
|
||||||
|
<ClInclude Include="include\status.h" />
|
||||||
|
<ClInclude Include="include\vector.h" />
|
||||||
|
<ClInclude Include="include\version.h" />
|
||||||
|
<ClInclude Include="include\vm.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
96
bcl.vcxproj.filters
Normal file
96
bcl.vcxproj.filters
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="src\data.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\library.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\num.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\rand.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\vector.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\vm.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="include\args.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\bc.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\bcl.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\dc.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\file.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\history.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\lang.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\lex.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\library.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\num.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\opt.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\parse.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\program.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\rand.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\read.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\status.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\vector.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\version.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\vm.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
@ -1221,6 +1221,8 @@ contents=$(replace "$contents" "DC_TESTS" "$dc_tests")
|
|||||||
contents=$(replace "$contents" "DC_SCRIPT_TESTS" "$dc_script_tests")
|
contents=$(replace "$contents" "DC_SCRIPT_TESTS" "$dc_script_tests")
|
||||||
contents=$(replace "$contents" "DC_TEST_EXEC" "$dc_test_exec")
|
contents=$(replace "$contents" "DC_TEST_EXEC" "$dc_test_exec")
|
||||||
|
|
||||||
|
contents=$(replace "$contents" "BUILD_TYPE" "$manpage_args")
|
||||||
|
|
||||||
contents=$(replace "$contents" "LIBRARY" "$library")
|
contents=$(replace "$contents" "LIBRARY" "$library")
|
||||||
contents=$(replace "$contents" "HISTORY" "$hist")
|
contents=$(replace "$contents" "HISTORY" "$hist")
|
||||||
contents=$(replace "$contents" "EXTRA_MATH" "$extra_math")
|
contents=$(replace "$contents" "EXTRA_MATH" "$extra_math")
|
||||||
|
@ -36,7 +36,8 @@
|
|||||||
usage: %s [options] [file...]
|
usage: %s [options] [file...]
|
||||||
|
|
||||||
bc is a command-line, arbitrary-precision calculator with a Turing-complete
|
bc is a command-line, arbitrary-precision calculator with a Turing-complete
|
||||||
language. For details, use `man %s`.
|
language. For details, use `man %s` or see the online documentation at
|
||||||
|
https://git.yzena.com/gavin/bc/src/tag/%s/manuals/bc/%s.1.md.
|
||||||
|
|
||||||
This bc is compatible with both the GNU bc and the POSIX bc spec. See the GNU bc
|
This bc is compatible with both the GNU bc and the POSIX bc spec. See the GNU bc
|
||||||
manual (https://www.gnu.org/software/bc/manual/bc.html) and bc spec
|
manual (https://www.gnu.org/software/bc/manual/bc.html) and bc spec
|
||||||
@ -56,7 +57,7 @@ This bc has three differences to the GNU bc:
|
|||||||
scripts to work while somewhat preserving expected behavior (versus C) and
|
scripts to work while somewhat preserving expected behavior (versus C) and
|
||||||
making parsing easier.
|
making parsing easier.
|
||||||
3) This bc has many more extensions than the GNU bc does. For details, see the
|
3) This bc has many more extensions than the GNU bc does. For details, see the
|
||||||
man page.
|
man page or online documentation.
|
||||||
|
|
||||||
This bc also implements the dot (.) extension of the BSD bc.
|
This bc also implements the dot (.) extension of the BSD bc.
|
||||||
|
|
||||||
@ -74,8 +75,8 @@ Options:
|
|||||||
-g --global-stacks
|
-g --global-stacks
|
||||||
|
|
||||||
Turn scale, ibase, and obase into stacks. This makes the value of each be
|
Turn scale, ibase, and obase into stacks. This makes the value of each be
|
||||||
be restored on returning from functions. See the man page for more
|
be restored on returning from functions. See the man page or online
|
||||||
details.
|
documentation for more details.
|
||||||
|
|
||||||
-h --help
|
-h --help
|
||||||
|
|
||||||
@ -96,12 +97,16 @@ Options:
|
|||||||
e(expr) = raises e to the power of expr
|
e(expr) = raises e to the power of expr
|
||||||
j(n, x) = Bessel function of integer order n of x
|
j(n, x) = Bessel function of integer order n of x
|
||||||
|
|
||||||
This bc may load more functions with these options. See the manpage for
|
This bc may load more functions with these options. See the manpage or
|
||||||
details.
|
online documentation for details.
|
||||||
|
|
||||||
-P --no-prompt
|
-P --no-prompt
|
||||||
|
|
||||||
Disable the prompt in interactive mode.
|
Disable the prompts in interactive mode.
|
||||||
|
|
||||||
|
-R --no-read-prompt
|
||||||
|
|
||||||
|
Disable the read prompt in interactive mode.
|
||||||
|
|
||||||
-q --quiet
|
-q --quiet
|
||||||
|
|
||||||
|
@ -36,12 +36,13 @@
|
|||||||
usage: %s [options] [file...]
|
usage: %s [options] [file...]
|
||||||
|
|
||||||
dc is a reverse-polish notation command-line calculator which supports unlimited
|
dc is a reverse-polish notation command-line calculator which supports unlimited
|
||||||
precision arithmetic. For details, use `man %s`.
|
precision arithmetic. For details, use `man %s` or see the online documentation
|
||||||
|
at https://git.yzena.com/gavin/bc/src/tag/%s/manuals/bc/%s.1.md.
|
||||||
|
|
||||||
This dc is (mostly) compatible with the FreeBSD dc and the GNU dc. See the
|
This dc is (mostly) compatible with the OpenBSD dc and the GNU dc. See the
|
||||||
FreeBSD man page (https://www.unix.com/man-page/FreeBSD/1/dc/) and the GNU dc
|
OpenBSD man page (http://man.openbsd.org/OpenBSD-current/man1/dc.1) and the GNU
|
||||||
manual (https://www.gnu.org/software/bc/manual/dc-1.05/html_mono/dc.html) for
|
dc manual (https://www.gnu.org/software/bc/manual/dc-1.05/html_mono/dc.html)
|
||||||
details.
|
for details.
|
||||||
|
|
||||||
This dc has a few differences from the two above:
|
This dc has a few differences from the two above:
|
||||||
|
|
||||||
@ -90,7 +91,11 @@ Options:
|
|||||||
|
|
||||||
-P --no-prompt
|
-P --no-prompt
|
||||||
|
|
||||||
Disable the prompt in interactive mode.
|
Disable the prompts in interactive mode.
|
||||||
|
|
||||||
|
-R --no-read-prompt
|
||||||
|
|
||||||
|
Disable the read prompt in interactive mode.
|
||||||
|
|
||||||
-V --version
|
-V --version
|
||||||
|
|
||||||
|
56
gen/strgen.c
56
gen/strgen.c
@ -40,7 +40,9 @@
|
|||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
|
#endif // _WIN32
|
||||||
|
|
||||||
static const char* const bc_gen_header =
|
static const char* const bc_gen_header =
|
||||||
"// Copyright (c) 2018-2021 Gavin D. Howard and contributors.\n"
|
"// Copyright (c) 2018-2021 Gavin D. Howard and contributors.\n"
|
||||||
@ -60,6 +62,54 @@ static const char* const bc_gen_name_extern = "extern const char %s[];\n\n";
|
|||||||
|
|
||||||
#define MAX_WIDTH (74)
|
#define MAX_WIDTH (74)
|
||||||
|
|
||||||
|
static void open_file(FILE** f, const char* filename, const char* mode) {
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
|
*f = fopen(filename, mode);
|
||||||
|
#else // _WIN32
|
||||||
|
*f = NULL;
|
||||||
|
fopen_s(f, filename, mode);
|
||||||
|
#endif // _WIN32
|
||||||
|
}
|
||||||
|
|
||||||
|
static int output_label(FILE* out, const char* label, const char* name) {
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
|
return fprintf(out, bc_gen_label, label, name);
|
||||||
|
#else // _WIN32
|
||||||
|
|
||||||
|
size_t i, count = 0, len = strlen(name);
|
||||||
|
char* buf;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
for (i = 0; i < len; ++i) {
|
||||||
|
count += (name[i] == '\\');
|
||||||
|
}
|
||||||
|
|
||||||
|
buf = (char*) malloc(len + 1 + count);
|
||||||
|
if (buf == NULL) return -1;
|
||||||
|
|
||||||
|
count = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < len; ++i) {
|
||||||
|
buf[i + count] = name[i];
|
||||||
|
if (name[i] == '\\') {
|
||||||
|
count += 1;
|
||||||
|
buf[i + count] = name[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
buf[i + count] = '\0';
|
||||||
|
|
||||||
|
ret = fprintf(out, bc_gen_label, label, buf);
|
||||||
|
|
||||||
|
free(buf);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
#endif // _WIN32
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
FILE *in, *out;
|
FILE *in, *out;
|
||||||
@ -82,17 +132,17 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
remove_tabs = (argc > 6);
|
remove_tabs = (argc > 6);
|
||||||
|
|
||||||
in = fopen(argv[1], "r");
|
open_file(&in, argv[1], "r");
|
||||||
if (!in) return INVALID_INPUT_FILE;
|
if (!in) return INVALID_INPUT_FILE;
|
||||||
|
|
||||||
out = fopen(argv[2], "w");
|
open_file(&out, argv[2], "w");
|
||||||
if (!out) goto out_err;
|
if (!out) goto out_err;
|
||||||
|
|
||||||
if (fprintf(out, bc_gen_header, argv[1]) < 0) goto err;
|
if (fprintf(out, bc_gen_header, argv[1]) < 0) goto err;
|
||||||
if (has_label && fprintf(out, bc_gen_label_extern, label) < 0) goto err;
|
if (has_label && fprintf(out, bc_gen_label_extern, label) < 0) goto err;
|
||||||
if (fprintf(out, bc_gen_name_extern, name) < 0) goto err;
|
if (fprintf(out, bc_gen_name_extern, name) < 0) goto err;
|
||||||
if (has_define && fprintf(out, bc_gen_ifdef, define) < 0) goto err;
|
if (has_define && fprintf(out, bc_gen_ifdef, define) < 0) goto err;
|
||||||
if (has_label && fprintf(out, bc_gen_label, label, argv[1]) < 0) goto err;
|
if (has_label && output_label(out, label, argv[1]) < 0) goto err;
|
||||||
if (fprintf(out, bc_gen_name, name) < 0) goto err;
|
if (fprintf(out, bc_gen_name, name) < 0) goto err;
|
||||||
|
|
||||||
c = count = slashes = 0;
|
c = count = slashes = 0;
|
||||||
|
102
include/bcl.h
102
include/bcl.h
@ -36,6 +36,13 @@
|
|||||||
#ifndef BC_BCL_H
|
#ifndef BC_BCL_H
|
||||||
#define BC_BCL_H
|
#define BC_BCL_H
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <Windows.h>
|
||||||
|
#include <BaseTsd.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <io.h>
|
||||||
|
#endif // _WIN32
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
@ -74,6 +81,99 @@ typedef uint32_t BclRandInt;
|
|||||||
#error BC_LONG_BIT must be at least 32
|
#error BC_LONG_BIT must be at least 32
|
||||||
|
|
||||||
#endif // BC_LONG_BIT >= 64
|
#endif // BC_LONG_BIT >= 64
|
||||||
|
#define BC_UNUSED(e) ((void) (e))
|
||||||
|
|
||||||
|
#ifndef BC_LIKELY
|
||||||
|
#define BC_LIKELY(e) (e)
|
||||||
|
#endif // BC_LIKELY
|
||||||
|
|
||||||
|
#ifndef BC_UNLIKELY
|
||||||
|
#define BC_UNLIKELY(e) (e)
|
||||||
|
#endif // BC_UNLIKELY
|
||||||
|
|
||||||
|
#define BC_ERR(e) BC_UNLIKELY(e)
|
||||||
|
#define BC_NO_ERR(s) BC_LIKELY(s)
|
||||||
|
|
||||||
|
#ifndef BC_DEBUG_CODE
|
||||||
|
#define BC_DEBUG_CODE (0)
|
||||||
|
#endif // BC_DEBUG_CODE
|
||||||
|
|
||||||
|
#if __STDC_VERSION__ >= 201100L
|
||||||
|
#include <stdnoreturn.h>
|
||||||
|
#define BC_NORETURN _Noreturn
|
||||||
|
#else // __STDC_VERSION__
|
||||||
|
#define BC_NORETURN
|
||||||
|
#define BC_MUST_RETURN
|
||||||
|
#endif // __STDC_VERSION__
|
||||||
|
|
||||||
|
#if defined(__clang__) || defined(__GNUC__)
|
||||||
|
#if defined(__has_attribute)
|
||||||
|
#if __has_attribute(fallthrough)
|
||||||
|
#define BC_FALLTHROUGH __attribute__((fallthrough));
|
||||||
|
#else // __has_attribute(fallthrough)
|
||||||
|
#define BC_FALLTHROUGH
|
||||||
|
#endif // __has_attribute(fallthrough)
|
||||||
|
#else // defined(__has_attribute)
|
||||||
|
#define BC_FALLTHROUGH
|
||||||
|
#endif // defined(__has_attribute)
|
||||||
|
#else // defined(__clang__) || defined(__GNUC__)
|
||||||
|
#define BC_FALLTHROUGH
|
||||||
|
#endif // defined(__clang__) || defined(__GNUC__)
|
||||||
|
|
||||||
|
// Workarounds for AIX's POSIX incompatibility.
|
||||||
|
#ifndef SIZE_MAX
|
||||||
|
#define SIZE_MAX __SIZE_MAX__
|
||||||
|
#endif // SIZE_MAX
|
||||||
|
#ifndef UINTMAX_C
|
||||||
|
#define UINTMAX_C __UINTMAX_C
|
||||||
|
#endif // UINTMAX_C
|
||||||
|
#ifndef UINT32_C
|
||||||
|
#define UINT32_C __UINT32_C
|
||||||
|
#endif // UINT32_C
|
||||||
|
#ifndef UINT_FAST32_MAX
|
||||||
|
#define UINT_FAST32_MAX __UINT_FAST32_MAX__
|
||||||
|
#endif // UINT_FAST32_MAX
|
||||||
|
#ifndef UINT16_MAX
|
||||||
|
#define UINT16_MAX __UINT16_MAX__
|
||||||
|
#endif // UINT16_MAX
|
||||||
|
#ifndef SIG_ATOMIC_MAX
|
||||||
|
#define SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__
|
||||||
|
#endif // SIG_ATOMIC_MAX
|
||||||
|
|
||||||
|
// Windows has deprecated isatty() and the rest of these.
|
||||||
|
// Or doesn't have them.
|
||||||
|
#ifdef _WIN32
|
||||||
|
|
||||||
|
// This one is special. Windows did not like me defining an
|
||||||
|
// inline function that was not given a definition in a header
|
||||||
|
// file. This suppresses that by making inline functions non-inline.
|
||||||
|
#define inline
|
||||||
|
|
||||||
|
#define restrict __restrict
|
||||||
|
#define strdup _strdup
|
||||||
|
#define write(f, b, s) _write((f), (b), (unsigned int) (s))
|
||||||
|
#define read(f, b, s) _read((f), (b), (unsigned int) (s))
|
||||||
|
#define close _close
|
||||||
|
#define open(f, n, m) _sopen_s(f, n, m, _SH_DENYNO, _S_IREAD | _S_IWRITE)
|
||||||
|
#define sigjmp_buf jmp_buf
|
||||||
|
#define sigsetjmp(j, s) setjmp(j)
|
||||||
|
#define siglongjmp longjmp
|
||||||
|
#define isatty _isatty
|
||||||
|
#define STDIN_FILENO (0)
|
||||||
|
#define STDOUT_FILENO (1)
|
||||||
|
#define STDERR_FILENO (2)
|
||||||
|
#define ssize_t SSIZE_T
|
||||||
|
#define S_ISDIR(m) ((m) & _S_IFDIR)
|
||||||
|
#define O_RDONLY _O_RDONLY
|
||||||
|
#define stat _stat
|
||||||
|
#define fstat _fstat
|
||||||
|
#define BC_FILE_SEP '\\'
|
||||||
|
|
||||||
|
#else // _WIN32
|
||||||
|
#define BC_FILE_SEP '/'
|
||||||
|
#endif // _WIN32
|
||||||
|
|
||||||
|
#if BC_ENABLE_LIBRARY
|
||||||
|
|
||||||
typedef enum BclError {
|
typedef enum BclError {
|
||||||
|
|
||||||
@ -181,4 +281,6 @@ BclNumber bcl_rand_seed2num(void);
|
|||||||
BclRandInt bcl_rand_int(void);
|
BclRandInt bcl_rand_int(void);
|
||||||
BclRandInt bcl_rand_bounded(BclRandInt bound);
|
BclRandInt bcl_rand_bounded(BclRandInt bound);
|
||||||
|
|
||||||
|
#endif // BC_ENABLE_LIBRARY
|
||||||
|
|
||||||
#endif // BC_BCL_H
|
#endif // BC_BCL_H
|
||||||
|
@ -51,15 +51,39 @@ typedef struct BcFile {
|
|||||||
|
|
||||||
} BcFile;
|
} BcFile;
|
||||||
|
|
||||||
|
#if BC_ENABLE_HISTORY
|
||||||
|
typedef enum BcFlushType {
|
||||||
|
|
||||||
|
BC_FLUSH_NO_EXTRAS_NO_CLEAR,
|
||||||
|
BC_FLUSH_SAVE_EXTRAS_NO_CLEAR,
|
||||||
|
BC_FLUSH_NO_EXTRAS_CLEAR,
|
||||||
|
BC_FLUSH_SAVE_EXTRAS_CLEAR,
|
||||||
|
|
||||||
|
} BcFlushType;
|
||||||
|
#else // BC_ENABLE_HISTORY
|
||||||
|
#define bc_file_putchar(f, t, c) bc_file_putchar(f, c)
|
||||||
|
#define bc_file_flushErr(f, t) bc_file_flushErr(f)
|
||||||
|
#define bc_file_flush(f, t) bc_file_flush(f)
|
||||||
|
#define bc_file_write(f, t, b, n) bc_file_write(f, b, n)
|
||||||
|
#define bc_file_puts(f, t, s) bc_file_puts(f, s)
|
||||||
|
#endif // BC_ENABLE_HISTORY
|
||||||
|
|
||||||
void bc_file_init(BcFile *f, int fd, char *buf, size_t cap);
|
void bc_file_init(BcFile *f, int fd, char *buf, size_t cap);
|
||||||
void bc_file_free(BcFile *f);
|
void bc_file_free(BcFile *f);
|
||||||
|
|
||||||
void bc_file_putchar(BcFile *restrict f, uchar c);
|
void bc_file_putchar(BcFile *restrict f, BcFlushType type, uchar c);
|
||||||
BcStatus bc_file_flushErr(BcFile *restrict f);
|
BcStatus bc_file_flushErr(BcFile *restrict f, BcFlushType type);
|
||||||
void bc_file_flush(BcFile *restrict f);
|
void bc_file_flush(BcFile *restrict f, BcFlushType type);
|
||||||
void bc_file_write(BcFile *restrict f, const char *buf, size_t n);
|
void bc_file_write(BcFile *restrict f, BcFlushType type,
|
||||||
|
const char *buf, size_t n);
|
||||||
void bc_file_printf(BcFile *restrict f, const char *fmt, ...);
|
void bc_file_printf(BcFile *restrict f, const char *fmt, ...);
|
||||||
void bc_file_vprintf(BcFile *restrict f, const char *fmt, va_list args);
|
void bc_file_vprintf(BcFile *restrict f, const char *fmt, va_list args);
|
||||||
void bc_file_puts(BcFile *restrict f, const char *str);
|
void bc_file_puts(BcFile *restrict f, BcFlushType type, const char *str);
|
||||||
|
|
||||||
|
#if BC_ENABLE_HISTORY
|
||||||
|
extern const BcFlushType bc_flush_none;
|
||||||
|
extern const BcFlushType bc_flush_err;
|
||||||
|
extern const BcFlushType bc_flush_save;
|
||||||
|
#endif // BC_ENABLE_HISTORY
|
||||||
|
|
||||||
#endif // BC_FILE_H
|
#endif // BC_FILE_H
|
||||||
|
@ -186,6 +186,9 @@ typedef struct BcHistory {
|
|||||||
/// The history.
|
/// The history.
|
||||||
BcVec history;
|
BcVec history;
|
||||||
|
|
||||||
|
/// Any material printed without a trailing newline.
|
||||||
|
BcVec extras;
|
||||||
|
|
||||||
#if BC_ENABLE_PROMPT
|
#if BC_ENABLE_PROMPT
|
||||||
/// Prompt to display.
|
/// Prompt to display.
|
||||||
const char *prompt;
|
const char *prompt;
|
||||||
|
@ -172,9 +172,10 @@ struct BcRNG;
|
|||||||
#endif // BC_DEBUG_CODE
|
#endif // BC_DEBUG_CODE
|
||||||
|
|
||||||
typedef void (*BcNumBinaryOp)(BcNum*, BcNum*, BcNum*, size_t);
|
typedef void (*BcNumBinaryOp)(BcNum*, BcNum*, BcNum*, size_t);
|
||||||
|
typedef void (*BcNumBinOp)(BcNum*, BcNum*, BcNum* restrict, size_t);
|
||||||
typedef size_t (*BcNumBinaryOpReq)(const BcNum*, const BcNum*, size_t);
|
typedef size_t (*BcNumBinaryOpReq)(const BcNum*, const BcNum*, size_t);
|
||||||
typedef void (*BcNumDigitOp)(size_t, size_t, bool);
|
typedef void (*BcNumDigitOp)(size_t, size_t, bool);
|
||||||
typedef void (*BcNumShiftAddOp)(BcDig*, const BcDig*, size_t);
|
typedef void (*BcNumShiftAddOp)(BcDig* restrict, const BcDig* restrict, size_t);
|
||||||
|
|
||||||
void bc_num_init(BcNum *restrict n, size_t req);
|
void bc_num_init(BcNum *restrict n, size_t req);
|
||||||
void bc_num_setup(BcNum *restrict n, BcDig *restrict num, size_t cap);
|
void bc_num_setup(BcNum *restrict n, BcDig *restrict num, size_t cap);
|
||||||
|
@ -150,63 +150,4 @@ typedef enum BcErr {
|
|||||||
#define BC_ERR_IDX_WARN (BC_ERR_IDX_NELEMS)
|
#define BC_ERR_IDX_WARN (BC_ERR_IDX_NELEMS)
|
||||||
#endif // BC_ENABLED
|
#endif // BC_ENABLED
|
||||||
|
|
||||||
#define BC_UNUSED(e) ((void) (e))
|
|
||||||
|
|
||||||
#ifndef BC_LIKELY
|
|
||||||
#define BC_LIKELY(e) (e)
|
|
||||||
#endif // BC_LIKELY
|
|
||||||
|
|
||||||
#ifndef BC_UNLIKELY
|
|
||||||
#define BC_UNLIKELY(e) (e)
|
|
||||||
#endif // BC_UNLIKELY
|
|
||||||
|
|
||||||
#define BC_ERR(e) BC_UNLIKELY(e)
|
|
||||||
#define BC_NO_ERR(s) BC_LIKELY(s)
|
|
||||||
|
|
||||||
#ifndef BC_DEBUG_CODE
|
|
||||||
#define BC_DEBUG_CODE (0)
|
|
||||||
#endif // BC_DEBUG_CODE
|
|
||||||
|
|
||||||
#if __STDC_VERSION__ >= 201100L
|
|
||||||
#include <stdnoreturn.h>
|
|
||||||
#define BC_NORETURN _Noreturn
|
|
||||||
#else // __STDC_VERSION__
|
|
||||||
#define BC_NORETURN
|
|
||||||
#define BC_MUST_RETURN
|
|
||||||
#endif // __STDC_VERSION__
|
|
||||||
|
|
||||||
#if defined(__clang__) || defined(__GNUC__)
|
|
||||||
#if defined(__has_attribute)
|
|
||||||
#if __has_attribute(fallthrough)
|
|
||||||
#define BC_FALLTHROUGH __attribute__((fallthrough));
|
|
||||||
#else // __has_attribute(fallthrough)
|
|
||||||
#define BC_FALLTHROUGH
|
|
||||||
#endif // __has_attribute(fallthrough)
|
|
||||||
#else // defined(__has_attribute)
|
|
||||||
#define BC_FALLTHROUGH
|
|
||||||
#endif // defined(__has_attribute)
|
|
||||||
#else // defined(__clang__) || defined(__GNUC__)
|
|
||||||
#define BC_FALLTHROUGH
|
|
||||||
#endif // defined(__clang__) || defined(__GNUC__)
|
|
||||||
|
|
||||||
// Workarounds for AIX's POSIX incompatibility.
|
|
||||||
#ifndef SIZE_MAX
|
|
||||||
#define SIZE_MAX __SIZE_MAX__
|
|
||||||
#endif // SIZE_MAX
|
|
||||||
#ifndef UINTMAX_C
|
|
||||||
#define UINTMAX_C __UINTMAX_C
|
|
||||||
#endif // UINTMAX_C
|
|
||||||
#ifndef UINT32_C
|
|
||||||
#define UINT32_C __UINT32_C
|
|
||||||
#endif // UINT32_C
|
|
||||||
#ifndef UINT_FAST32_MAX
|
|
||||||
#define UINT_FAST32_MAX __UINT_FAST32_MAX__
|
|
||||||
#endif // UINT_FAST32_MAX
|
|
||||||
#ifndef UINT16_MAX
|
|
||||||
#define UINT16_MAX __UINT16_MAX__
|
|
||||||
#endif // UINT16_MAX
|
|
||||||
#ifndef SIG_ATOMIC_MAX
|
|
||||||
#define SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__
|
|
||||||
#endif // SIG_ATOMIC_MAX
|
|
||||||
|
|
||||||
#endif // BC_STATUS_H
|
#endif // BC_STATUS_H
|
||||||
|
41
include/version.h
Normal file
41
include/version.h
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* *****************************************************************************
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*
|
||||||
|
* Copyright (c) 2018-2021 Gavin D. Howard and contributors.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright notice, this
|
||||||
|
* list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer in the documentation
|
||||||
|
* and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* *****************************************************************************
|
||||||
|
*
|
||||||
|
* Definitions for processing command-line arguments.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BC_VERSION_H
|
||||||
|
#define BC_VERSION_H
|
||||||
|
|
||||||
|
#define VERSION 4.0.0
|
||||||
|
|
||||||
|
#endif // BC_VERSION_H
|
32
include/vm.h
32
include/vm.h
@ -52,6 +52,7 @@
|
|||||||
|
|
||||||
#endif // BC_ENABLE_NLS
|
#endif // BC_ENABLE_NLS
|
||||||
|
|
||||||
|
#include <version.h>
|
||||||
#include <status.h>
|
#include <status.h>
|
||||||
#include <num.h>
|
#include <num.h>
|
||||||
#include <parse.h>
|
#include <parse.h>
|
||||||
@ -77,22 +78,27 @@
|
|||||||
|
|
||||||
#ifndef MAINEXEC
|
#ifndef MAINEXEC
|
||||||
#define MAINEXEC bc
|
#define MAINEXEC bc
|
||||||
#endif
|
#endif // MAINEXEC
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
#ifndef EXECPREFIX
|
#ifndef EXECPREFIX
|
||||||
#define EXECPREFIX
|
#define EXECPREFIX
|
||||||
#endif
|
#endif // EXECPREFIX
|
||||||
|
#else // _WIN32
|
||||||
|
#undef EXECPREFIX
|
||||||
|
#endif // _WIN32
|
||||||
|
|
||||||
#define GEN_STR(V) #V
|
#define GEN_STR(V) #V
|
||||||
#define GEN_STR2(V) GEN_STR(V)
|
#define GEN_STR2(V) GEN_STR(V)
|
||||||
|
|
||||||
#define BC_VERSION GEN_STR2(VERSION)
|
#define BC_VERSION GEN_STR2(VERSION)
|
||||||
#define BC_EXECPREFIX GEN_STR2(EXECPREFIX)
|
|
||||||
#define BC_MAINEXEC GEN_STR2(MAINEXEC)
|
#define BC_MAINEXEC GEN_STR2(MAINEXEC)
|
||||||
|
#define BC_BUILD_TYPE GEN_STR2(BUILD_TYPE)
|
||||||
|
|
||||||
// Windows has deprecated isatty().
|
#ifndef _WIN32
|
||||||
#ifdef _WIN32
|
#define BC_EXECPREFIX GEN_STR2(EXECPREFIX)
|
||||||
#define isatty _isatty
|
#else // _WIN32
|
||||||
|
#define BC_EXECPREFIX ""
|
||||||
#endif // _WIN32
|
#endif // _WIN32
|
||||||
|
|
||||||
#if !BC_ENABLE_LIBRARY
|
#if !BC_ENABLE_LIBRARY
|
||||||
@ -110,8 +116,9 @@
|
|||||||
|
|
||||||
#define BC_FLAG_I (UINTMAX_C(1)<<5)
|
#define BC_FLAG_I (UINTMAX_C(1)<<5)
|
||||||
#define BC_FLAG_P (UINTMAX_C(1)<<6)
|
#define BC_FLAG_P (UINTMAX_C(1)<<6)
|
||||||
#define BC_FLAG_TTYIN (UINTMAX_C(1)<<7)
|
#define BC_FLAG_R (UINTMAX_C(1)<<7)
|
||||||
#define BC_FLAG_TTY (UINTMAX_C(1)<<8)
|
#define BC_FLAG_TTYIN (UINTMAX_C(1)<<8)
|
||||||
|
#define BC_FLAG_TTY (UINTMAX_C(1)<<9)
|
||||||
#define BC_TTYIN (vm.flags & BC_FLAG_TTYIN)
|
#define BC_TTYIN (vm.flags & BC_FLAG_TTYIN)
|
||||||
#define BC_TTY (vm.flags & BC_FLAG_TTY)
|
#define BC_TTY (vm.flags & BC_FLAG_TTY)
|
||||||
|
|
||||||
@ -130,6 +137,7 @@
|
|||||||
|
|
||||||
#define BC_I (vm.flags & BC_FLAG_I)
|
#define BC_I (vm.flags & BC_FLAG_I)
|
||||||
#define BC_P (vm.flags & BC_FLAG_P)
|
#define BC_P (vm.flags & BC_FLAG_P)
|
||||||
|
#define BC_R (vm.flags & BC_FLAG_R)
|
||||||
|
|
||||||
#if BC_ENABLED
|
#if BC_ENABLED
|
||||||
|
|
||||||
@ -421,13 +429,19 @@ void bc_vm_init(void);
|
|||||||
void bc_vm_shutdown(void);
|
void bc_vm_shutdown(void);
|
||||||
void bc_vm_freeTemps(void);
|
void bc_vm_freeTemps(void);
|
||||||
|
|
||||||
|
#if !BC_ENABLE_HISTORY
|
||||||
|
#define bc_vm_putchar(c, t) bc_vm_putchar(c)
|
||||||
|
#endif // !BC_ENABLE_HISTORY
|
||||||
|
|
||||||
void bc_vm_printf(const char *fmt, ...);
|
void bc_vm_printf(const char *fmt, ...);
|
||||||
void bc_vm_putchar(int c);
|
void bc_vm_putchar(int c, BcFlushType type);
|
||||||
size_t bc_vm_arraySize(size_t n, size_t size);
|
size_t bc_vm_arraySize(size_t n, size_t size);
|
||||||
size_t bc_vm_growSize(size_t a, size_t b);
|
size_t bc_vm_growSize(size_t a, size_t b);
|
||||||
void* bc_vm_malloc(size_t n);
|
void* bc_vm_malloc(size_t n);
|
||||||
void* bc_vm_realloc(void *ptr, size_t n);
|
void* bc_vm_realloc(void *ptr, size_t n);
|
||||||
char* bc_vm_strdup(const char *str);
|
char* bc_vm_strdup(const char *str);
|
||||||
|
char* bc_vm_getenv(const char* var);
|
||||||
|
void bc_vm_getenvFree(char* var);
|
||||||
|
|
||||||
#if BC_DEBUG_CODE
|
#if BC_DEBUG_CODE
|
||||||
void bc_vm_jmp(const char *f);
|
void bc_vm_jmp(const char *f);
|
||||||
|
10
karatsuba.py
10
karatsuba.py
@ -121,20 +121,20 @@ def run(cmd, env=None):
|
|||||||
|
|
||||||
p = run([ "make", "clean" ])
|
p = run([ "make", "clean" ])
|
||||||
|
|
||||||
print("Testing \"make -j12\"")
|
print("Testing \"make -j16\"")
|
||||||
|
|
||||||
if p.returncode != 0:
|
if p.returncode != 0:
|
||||||
print("make returned an error ({}); exiting...".format(p.returncode))
|
print("make returned an error ({}); exiting...".format(p.returncode))
|
||||||
sys.exit(p.returncode)
|
sys.exit(p.returncode)
|
||||||
|
|
||||||
p = run([ "make", "-j12" ])
|
p = run([ "make", "-j16" ])
|
||||||
|
|
||||||
if p.returncode == 0:
|
if p.returncode == 0:
|
||||||
makecmd = [ "make", "-j12" ]
|
makecmd = [ "make", "-j16" ]
|
||||||
print("Using \"make -j12\"")
|
print("Using \"make -j16\"")
|
||||||
else:
|
else:
|
||||||
makecmd = [ "make" ]
|
makecmd = [ "make" ]
|
||||||
print("Not using \"make -j12\"")
|
print("Not using \"make -j16\"")
|
||||||
|
|
||||||
if test_num != 0:
|
if test_num != 0:
|
||||||
mx2 = test_num
|
mx2 = test_num
|
||||||
|
@ -43,7 +43,7 @@ print_manpage() {
|
|||||||
cat "$manualsdir/header.txt" > "$_print_manpage_out"
|
cat "$manualsdir/header.txt" > "$_print_manpage_out"
|
||||||
cat "$manualsdir/header_${manpage}.txt" >> "$_print_manpage_out"
|
cat "$manualsdir/header_${manpage}.txt" >> "$_print_manpage_out"
|
||||||
|
|
||||||
pandoc -f markdown -t man "$_print_manpage_md" >> "$_print_manpage_out"
|
pandoc -f commonmark -t man "$_print_manpage_md" >> "$_print_manpage_out"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -181,7 +181,7 @@ The following are the options that bc(1) accepts.
|
|||||||
|
|
||||||
{{ A E H N EH EN HN EHN }}
|
{{ A E H N EH EN HN EHN }}
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in bc(1). Most of those users
|
want a prompt or are not used to having them in bc(1). Most of those users
|
||||||
would want to put this option in **BC_ENV_ARGS** (see the
|
would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
**ENVIRONMENT VARIABLES** section).
|
**ENVIRONMENT VARIABLES** section).
|
||||||
@ -192,6 +192,25 @@ The following are the options that bc(1) accepts.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
{{ A E H N EH EN HN EHN }}
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in bc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of bc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **read()** built-in function is called.
|
||||||
|
{{ end }}
|
||||||
|
{{ P EP HP NP EHP ENP HNP EHNP }}
|
||||||
|
: Because bc(1) was built without support for prompts, this option is a no-op.
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
1903
manuals/bc/A.1
1903
manuals/bc/A.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -143,13 +143,27 @@ The following are the options that bc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in bc(1). Most of those users
|
want a prompt or are not used to having them in bc(1). Most of those users
|
||||||
would want to put this option in **BC_ENV_ARGS** (see the
|
would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
**ENVIRONMENT VARIABLES** section).
|
**ENVIRONMENT VARIABLES** section).
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in bc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of bc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **read()** built-in function is called.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
899
manuals/bc/E.1
899
manuals/bc/E.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -127,13 +127,27 @@ The following are the options that bc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in bc(1). Most of those users
|
want a prompt or are not used to having them in bc(1). Most of those users
|
||||||
would want to put this option in **BC_ENV_ARGS** (see the
|
would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
**ENVIRONMENT VARIABLES** section).
|
**ENVIRONMENT VARIABLES** section).
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in bc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of bc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **read()** built-in function is called.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
899
manuals/bc/EH.1
899
manuals/bc/EH.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -124,13 +124,27 @@ The following are the options that bc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in bc(1). Most of those users
|
want a prompt or are not used to having them in bc(1). Most of those users
|
||||||
would want to put this option in **BC_ENV_ARGS** (see the
|
would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
**ENVIRONMENT VARIABLES** section).
|
**ENVIRONMENT VARIABLES** section).
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in bc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of bc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **read()** built-in function is called.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
899
manuals/bc/EHN.1
899
manuals/bc/EHN.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -124,13 +124,27 @@ The following are the options that bc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in bc(1). Most of those users
|
want a prompt or are not used to having them in bc(1). Most of those users
|
||||||
would want to put this option in **BC_ENV_ARGS** (see the
|
would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
**ENVIRONMENT VARIABLES** section).
|
**ENVIRONMENT VARIABLES** section).
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in bc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of bc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **read()** built-in function is called.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -127,6 +127,12 @@ The following are the options that bc(1) accepts.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Because bc(1) was built without support for prompts, this option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
888
manuals/bc/EHP.1
888
manuals/bc/EHP.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -127,6 +127,12 @@ The following are the options that bc(1) accepts.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Because bc(1) was built without support for prompts, this option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
899
manuals/bc/EN.1
899
manuals/bc/EN.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -127,13 +127,27 @@ The following are the options that bc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in bc(1). Most of those users
|
want a prompt or are not used to having them in bc(1). Most of those users
|
||||||
would want to put this option in **BC_ENV_ARGS** (see the
|
would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
**ENVIRONMENT VARIABLES** section).
|
**ENVIRONMENT VARIABLES** section).
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in bc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of bc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **read()** built-in function is called.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
888
manuals/bc/ENP.1
888
manuals/bc/ENP.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -130,6 +130,12 @@ The following are the options that bc(1) accepts.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Because bc(1) was built without support for prompts, this option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
888
manuals/bc/EP.1
888
manuals/bc/EP.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -130,6 +130,12 @@ The following are the options that bc(1) accepts.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Because bc(1) was built without support for prompts, this option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
1903
manuals/bc/H.1
1903
manuals/bc/H.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -139,13 +139,27 @@ The following are the options that bc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in bc(1). Most of those users
|
want a prompt or are not used to having them in bc(1). Most of those users
|
||||||
would want to put this option in **BC_ENV_ARGS** (see the
|
would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
**ENVIRONMENT VARIABLES** section).
|
**ENVIRONMENT VARIABLES** section).
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in bc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of bc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **read()** built-in function is called.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
1903
manuals/bc/HN.1
1903
manuals/bc/HN.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -139,13 +139,27 @@ The following are the options that bc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in bc(1). Most of those users
|
want a prompt or are not used to having them in bc(1). Most of those users
|
||||||
would want to put this option in **BC_ENV_ARGS** (see the
|
would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
**ENVIRONMENT VARIABLES** section).
|
**ENVIRONMENT VARIABLES** section).
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in bc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of bc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **read()** built-in function is called.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
1892
manuals/bc/HNP.1
1892
manuals/bc/HNP.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -142,6 +142,12 @@ The following are the options that bc(1) accepts.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Because bc(1) was built without support for prompts, this option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
1892
manuals/bc/HP.1
1892
manuals/bc/HP.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -142,6 +142,12 @@ The following are the options that bc(1) accepts.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Because bc(1) was built without support for prompts, this option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
1903
manuals/bc/N.1
1903
manuals/bc/N.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -143,13 +143,27 @@ The following are the options that bc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in bc(1). Most of those users
|
want a prompt or are not used to having them in bc(1). Most of those users
|
||||||
would want to put this option in **BC_ENV_ARGS** (see the
|
would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
**ENVIRONMENT VARIABLES** section).
|
**ENVIRONMENT VARIABLES** section).
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in bc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of bc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **read()** built-in function is called.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
1892
manuals/bc/NP.1
1892
manuals/bc/NP.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -146,6 +146,12 @@ The following are the options that bc(1) accepts.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Because bc(1) was built without support for prompts, this option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
1892
manuals/bc/P.1
1892
manuals/bc/P.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ bc - arbitrary-precision decimal arithmetic language and calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**bc** [**-ghilPqsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**bc** [**-ghilPqRsvVw**] [**-\-global-stacks**] [**-\-help**] [**-\-interactive**] [**-\-mathlib**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-quiet**] [**-\-standard**] [**-\-warn**] [**-\-version**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -146,6 +146,12 @@ The following are the options that bc(1) accepts.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Because bc(1) was built without support for prompts, this option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-q**, **-\-quiet**
|
**-q**, **-\-quiet**
|
||||||
|
|
||||||
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
|
||||||
|
1747
manuals/bcl.3
1747
manuals/bcl.3
File diff suppressed because it is too large
Load Diff
121
manuals/build.md
121
manuals/build.md
@ -37,9 +37,50 @@ See [Build Environment Variables][4] for a more detailed description of all
|
|||||||
accepted environment variables and [Build Options][5] for more detail about all
|
accepted environment variables and [Build Options][5] for more detail about all
|
||||||
accepted build options.
|
accepted build options.
|
||||||
|
|
||||||
|
## Windows
|
||||||
|
|
||||||
|
On Windows, this `bc` can be built using Visual Studio or MSBuild.
|
||||||
|
|
||||||
|
However, only one build configuration (besides Debug or Release) is supported:
|
||||||
|
extra math and prompt enabled, history and NLS (locale support) disabled, with
|
||||||
|
both calculators built.
|
||||||
|
|
||||||
|
The library can also be built on Windows.
|
||||||
|
|
||||||
|
### Visual Studio
|
||||||
|
|
||||||
|
In Visual Studio, open up the solution file (`bc.sln` for `bc`, or `bcl.sln` for
|
||||||
|
the library), select the desired configuration, and build.
|
||||||
|
|
||||||
|
### MSBuild
|
||||||
|
|
||||||
|
To build with MSBuild, first, *be sure that you are using the MSBuild that comes
|
||||||
|
with Visual Studio*.
|
||||||
|
|
||||||
|
To build `bc`, run the following from the root directory:
|
||||||
|
|
||||||
|
```
|
||||||
|
msbuild -property:Configuration=<config> bc.sln
|
||||||
|
```
|
||||||
|
|
||||||
|
where `<config>` is either one of `Debug` or `Release`.
|
||||||
|
|
||||||
|
To build the library, run the following from the root directory:
|
||||||
|
|
||||||
|
```
|
||||||
|
msbuild -property:Configuration=<config> bcl.sln
|
||||||
|
```
|
||||||
|
|
||||||
|
where `<config>` is either one of `Debug` or `Release`.
|
||||||
|
|
||||||
|
## POSIX-Compatible Systems
|
||||||
|
|
||||||
|
Building `bc`, `dc`, and `bcl` (the library) is more complex than on Windows
|
||||||
|
because many build options are supported.
|
||||||
|
|
||||||
<a name="cross-compiling"/>
|
<a name="cross-compiling"/>
|
||||||
|
|
||||||
## Cross Compiling
|
### Cross Compiling
|
||||||
|
|
||||||
To cross-compile this `bc`, an appropriate compiler must be present and assigned
|
To cross-compile this `bc`, an appropriate compiler must be present and assigned
|
||||||
to the environment variable `HOSTCC` or `HOST_CC` (the two are equivalent,
|
to the environment variable `HOSTCC` or `HOST_CC` (the two are equivalent,
|
||||||
@ -69,7 +110,7 @@ the environment variable `GEN_EMU`.
|
|||||||
|
|
||||||
<a name="build-environment-variables"/>
|
<a name="build-environment-variables"/>
|
||||||
|
|
||||||
## Build Environment Variables
|
### Build Environment Variables
|
||||||
|
|
||||||
This `bc` supports `CC`, `HOSTCC`, `HOST_CC`, `CFLAGS`, `HOSTCFLAGS`,
|
This `bc` supports `CC`, `HOSTCC`, `HOST_CC`, `CFLAGS`, `HOSTCFLAGS`,
|
||||||
`HOST_CFLAGS`, `CPPFLAGS`, `LDFLAGS`, `LDLIBS`, `PREFIX`, `DESTDIR`, `BINDIR`,
|
`HOST_CFLAGS`, `CPPFLAGS`, `LDFLAGS`, `LDLIBS`, `PREFIX`, `DESTDIR`, `BINDIR`,
|
||||||
@ -81,7 +122,7 @@ put into the generated Makefile.
|
|||||||
More detail on what those environment variables do can be found in the following
|
More detail on what those environment variables do can be found in the following
|
||||||
sections.
|
sections.
|
||||||
|
|
||||||
### `CC`
|
#### `CC`
|
||||||
|
|
||||||
C compiler for the target system. `CC` must be compatible with POSIX `c99`
|
C compiler for the target system. `CC` must be compatible with POSIX `c99`
|
||||||
behavior and options. However, **I encourage users to use any C99 or C11
|
behavior and options. However, **I encourage users to use any C99 or C11
|
||||||
@ -104,33 +145,33 @@ automatically moved into HOSTCFLAGS.
|
|||||||
|
|
||||||
Defaults to `$CC`.
|
Defaults to `$CC`.
|
||||||
|
|
||||||
### `CFLAGS`
|
#### `CFLAGS`
|
||||||
|
|
||||||
Command-line flags that will be passed verbatim to `CC`.
|
Command-line flags that will be passed verbatim to `CC`.
|
||||||
|
|
||||||
Defaults to empty.
|
Defaults to empty.
|
||||||
|
|
||||||
### `HOSTCFLAGS` or `HOST_CFLAGS`
|
#### `HOSTCFLAGS` or `HOST_CFLAGS`
|
||||||
|
|
||||||
Command-line flags that will be passed verbatim to `HOSTCC` or `HOST_CC`.
|
Command-line flags that will be passed verbatim to `HOSTCC` or `HOST_CC`.
|
||||||
|
|
||||||
Defaults to `$CFLAGS`.
|
Defaults to `$CFLAGS`.
|
||||||
|
|
||||||
### `CPPFLAGS`
|
#### `CPPFLAGS`
|
||||||
|
|
||||||
Command-line flags for the C preprocessor. These are also passed verbatim to
|
Command-line flags for the C preprocessor. These are also passed verbatim to
|
||||||
both compilers (`CC` and `HOSTCC`); they are supported just for legacy reasons.
|
both compilers (`CC` and `HOSTCC`); they are supported just for legacy reasons.
|
||||||
|
|
||||||
Defaults to empty.
|
Defaults to empty.
|
||||||
|
|
||||||
### `LDFLAGS`
|
#### `LDFLAGS`
|
||||||
|
|
||||||
Command-line flags for the linker. These are also passed verbatim to both
|
Command-line flags for the linker. These are also passed verbatim to both
|
||||||
compilers (`CC` and `HOSTCC`); they are supported just for legacy reasons.
|
compilers (`CC` and `HOSTCC`); they are supported just for legacy reasons.
|
||||||
|
|
||||||
Defaults to empty.
|
Defaults to empty.
|
||||||
|
|
||||||
### `LDLIBS`
|
#### `LDLIBS`
|
||||||
|
|
||||||
Libraries to link to. These are also passed verbatim to both compilers (`CC` and
|
Libraries to link to. These are also passed verbatim to both compilers (`CC` and
|
||||||
`HOSTCC`); they are supported just for legacy reasons and for cross compiling
|
`HOSTCC`); they are supported just for legacy reasons and for cross compiling
|
||||||
@ -138,7 +179,7 @@ with different C standard libraries (like [musl][3]).
|
|||||||
|
|
||||||
Defaults to empty.
|
Defaults to empty.
|
||||||
|
|
||||||
### `PREFIX`
|
#### `PREFIX`
|
||||||
|
|
||||||
The prefix to install to.
|
The prefix to install to.
|
||||||
|
|
||||||
@ -146,7 +187,7 @@ Can be overridden by passing the `--prefix` option to `configure.sh`.
|
|||||||
|
|
||||||
Defaults to `/usr/local`.
|
Defaults to `/usr/local`.
|
||||||
|
|
||||||
### `DESTDIR`
|
#### `DESTDIR`
|
||||||
|
|
||||||
Path to prepend onto `PREFIX`. This is mostly for distro and package
|
Path to prepend onto `PREFIX`. This is mostly for distro and package
|
||||||
maintainers.
|
maintainers.
|
||||||
@ -156,7 +197,7 @@ to both, the one given to `configure.sh` takes precedence.
|
|||||||
|
|
||||||
Defaults to empty.
|
Defaults to empty.
|
||||||
|
|
||||||
### `BINDIR`
|
#### `BINDIR`
|
||||||
|
|
||||||
The directory to install binaries in.
|
The directory to install binaries in.
|
||||||
|
|
||||||
@ -164,7 +205,7 @@ Can be overridden by passing the `--bindir` option to `configure.sh`.
|
|||||||
|
|
||||||
Defaults to `$PREFIX/bin`.
|
Defaults to `$PREFIX/bin`.
|
||||||
|
|
||||||
### `INCLUDEDIR`
|
#### `INCLUDEDIR`
|
||||||
|
|
||||||
The directory to install header files in.
|
The directory to install header files in.
|
||||||
|
|
||||||
@ -172,7 +213,7 @@ Can be overridden by passing the `--includedir` option to `configure.sh`.
|
|||||||
|
|
||||||
Defaults to `$PREFIX/include`.
|
Defaults to `$PREFIX/include`.
|
||||||
|
|
||||||
### `LIBDIR`
|
#### `LIBDIR`
|
||||||
|
|
||||||
The directory to install libraries in.
|
The directory to install libraries in.
|
||||||
|
|
||||||
@ -180,7 +221,7 @@ Can be overridden by passing the `--libdir` option to `configure.sh`.
|
|||||||
|
|
||||||
Defaults to `$PREFIX/lib`.
|
Defaults to `$PREFIX/lib`.
|
||||||
|
|
||||||
### `DATAROOTDIR`
|
#### `DATAROOTDIR`
|
||||||
|
|
||||||
The root directory to install data files in.
|
The root directory to install data files in.
|
||||||
|
|
||||||
@ -188,7 +229,7 @@ Can be overridden by passing the `--datarootdir` option to `configure.sh`.
|
|||||||
|
|
||||||
Defaults to `$PREFIX/share`.
|
Defaults to `$PREFIX/share`.
|
||||||
|
|
||||||
### `DATADIR`
|
#### `DATADIR`
|
||||||
|
|
||||||
The directory to install data files in.
|
The directory to install data files in.
|
||||||
|
|
||||||
@ -196,7 +237,7 @@ Can be overridden by passing the `--datadir` option to `configure.sh`.
|
|||||||
|
|
||||||
Defaults to `$DATAROOTDIR`.
|
Defaults to `$DATAROOTDIR`.
|
||||||
|
|
||||||
### `MANDIR`
|
#### `MANDIR`
|
||||||
|
|
||||||
The directory to install manpages in.
|
The directory to install manpages in.
|
||||||
|
|
||||||
@ -204,7 +245,7 @@ Can be overridden by passing the `--mandir` option to `configure.sh`.
|
|||||||
|
|
||||||
Defaults to `$DATADIR/man`
|
Defaults to `$DATADIR/man`
|
||||||
|
|
||||||
### `MAN1DIR`
|
#### `MAN1DIR`
|
||||||
|
|
||||||
The directory to install Section 1 manpages in. Because both `bc` and `dc` are
|
The directory to install Section 1 manpages in. Because both `bc` and `dc` are
|
||||||
Section 1 commands, this is the only relevant section directory.
|
Section 1 commands, this is the only relevant section directory.
|
||||||
@ -213,7 +254,7 @@ Can be overridden by passing the `--man1dir` option to `configure.sh`.
|
|||||||
|
|
||||||
Defaults to `$MANDIR/man1`.
|
Defaults to `$MANDIR/man1`.
|
||||||
|
|
||||||
### `LOCALEDIR`
|
#### `LOCALEDIR`
|
||||||
|
|
||||||
The directory to install locales in.
|
The directory to install locales in.
|
||||||
|
|
||||||
@ -221,7 +262,7 @@ Can be overridden by passing the `--localedir` option to `configure.sh`.
|
|||||||
|
|
||||||
Defaults to `$DATAROOTDIR/locale`.
|
Defaults to `$DATAROOTDIR/locale`.
|
||||||
|
|
||||||
### `EXECSUFFIX`
|
#### `EXECSUFFIX`
|
||||||
|
|
||||||
The suffix to append onto the executable names *when installing*. This is for
|
The suffix to append onto the executable names *when installing*. This is for
|
||||||
packagers and distro maintainers who want this `bc` as an option, but do not
|
packagers and distro maintainers who want this `bc` as an option, but do not
|
||||||
@ -229,7 +270,7 @@ want to replace the default `bc`.
|
|||||||
|
|
||||||
Defaults to empty.
|
Defaults to empty.
|
||||||
|
|
||||||
### `EXECPREFIX`
|
#### `EXECPREFIX`
|
||||||
|
|
||||||
The prefix to append onto the executable names *when building and installing*.
|
The prefix to append onto the executable names *when building and installing*.
|
||||||
This is for packagers and distro maintainers who want this `bc` as an option,
|
This is for packagers and distro maintainers who want this `bc` as an option,
|
||||||
@ -237,7 +278,7 @@ but do not want to replace the default `bc`.
|
|||||||
|
|
||||||
Defaults to empty.
|
Defaults to empty.
|
||||||
|
|
||||||
### `LONG_BIT`
|
#### `LONG_BIT`
|
||||||
|
|
||||||
The number of bits in a C `long` type. This is mostly for the embedded space.
|
The number of bits in a C `long` type. This is mostly for the embedded space.
|
||||||
|
|
||||||
@ -254,7 +295,7 @@ compliance with the `bc` spec, the minimum allowed value is `32`.
|
|||||||
It is an error if the specified value is greater than the default value of
|
It is an error if the specified value is greater than the default value of
|
||||||
`LONG_BIT` for the target platform.
|
`LONG_BIT` for the target platform.
|
||||||
|
|
||||||
### `GEN_HOST`
|
#### `GEN_HOST`
|
||||||
|
|
||||||
Whether to use `gen/strgen.c`, instead of `gen/strgen.sh`, to produce the C
|
Whether to use `gen/strgen.c`, instead of `gen/strgen.sh`, to produce the C
|
||||||
files that contain the help texts as well as the math libraries. By default,
|
files that contain the help texts as well as the math libraries. By default,
|
||||||
@ -274,7 +315,7 @@ or a non-existent value, will cause the build system to compile and run
|
|||||||
|
|
||||||
Default is "".
|
Default is "".
|
||||||
|
|
||||||
### `GEN_EMU`
|
#### `GEN_EMU`
|
||||||
|
|
||||||
The emulator to run bootstrap binaries under. This is only if the binaries
|
The emulator to run bootstrap binaries under. This is only if the binaries
|
||||||
produced by `HOSTCC` (or `HOST_CC`) need to be run under an emulator to work.
|
produced by `HOSTCC` (or `HOST_CC`) need to be run under an emulator to work.
|
||||||
@ -283,7 +324,7 @@ Defaults to empty.
|
|||||||
|
|
||||||
<a name="build-options"/>
|
<a name="build-options"/>
|
||||||
|
|
||||||
## Build Options
|
### Build Options
|
||||||
|
|
||||||
This `bc` comes with several build options, all of which are enabled by default.
|
This `bc` comes with several build options, all of which are enabled by default.
|
||||||
|
|
||||||
@ -298,7 +339,7 @@ following forms:
|
|||||||
--option=arg
|
--option=arg
|
||||||
```
|
```
|
||||||
|
|
||||||
### Library
|
#### Library
|
||||||
|
|
||||||
To build the math library, use the following commands for the configure step:
|
To build the math library, use the following commands for the configure step:
|
||||||
|
|
||||||
@ -321,7 +362,7 @@ is installed.
|
|||||||
|
|
||||||
The library is built as `bin/libbcl.a`.
|
The library is built as `bin/libbcl.a`.
|
||||||
|
|
||||||
### `bc` Only
|
#### `bc` Only
|
||||||
|
|
||||||
To build `bc` only (no `dc`), use any one of the following commands for the
|
To build `bc` only (no `dc`), use any one of the following commands for the
|
||||||
configure step:
|
configure step:
|
||||||
@ -338,7 +379,7 @@ Those commands are all equivalent.
|
|||||||
***Warning***: It is an error to use those options if `bc` has also been
|
***Warning***: It is an error to use those options if `bc` has also been
|
||||||
disabled (see below).
|
disabled (see below).
|
||||||
|
|
||||||
### `dc` Only
|
#### `dc` Only
|
||||||
|
|
||||||
To build `dc` only (no `bc`), use either one of the following commands for the
|
To build `dc` only (no `bc`), use either one of the following commands for the
|
||||||
configure step:
|
configure step:
|
||||||
@ -357,7 +398,7 @@ disabled (see above).
|
|||||||
|
|
||||||
<a name="build-history"/>
|
<a name="build-history"/>
|
||||||
|
|
||||||
### History
|
#### History
|
||||||
|
|
||||||
To disable signal handling, pass either the `-H` flag or the `--disable-history`
|
To disable signal handling, pass either the `-H` flag or the `--disable-history`
|
||||||
option to `configure.sh`, as follows:
|
option to `configure.sh`, as follows:
|
||||||
@ -376,7 +417,7 @@ platform that does not support the terminal handling that is required.
|
|||||||
completely portable. If the `bc` does not work on your platform, your first step
|
completely portable. If the `bc` does not work on your platform, your first step
|
||||||
should be to retry with history disabled.
|
should be to retry with history disabled.
|
||||||
|
|
||||||
### NLS (Locale Support)
|
#### NLS (Locale Support)
|
||||||
|
|
||||||
To disable locale support (use only English), pass either the `-N` flag or the
|
To disable locale support (use only English), pass either the `-N` flag or the
|
||||||
`--disable-nls` option to `configure.sh`, as follows:
|
`--disable-nls` option to `configure.sh`, as follows:
|
||||||
@ -391,7 +432,7 @@ Both commands are equivalent.
|
|||||||
NLS (locale support) is automatically disabled when building for Windows or on
|
NLS (locale support) is automatically disabled when building for Windows or on
|
||||||
another platform that does not support the POSIX locale API or utilities.
|
another platform that does not support the POSIX locale API or utilities.
|
||||||
|
|
||||||
### Prompt
|
#### Prompt
|
||||||
|
|
||||||
By default, `bc` and `dc` print a prompt when in interactive mode. They both
|
By default, `bc` and `dc` print a prompt when in interactive mode. They both
|
||||||
have the command-line option `-P`/`--no-prompt`, which turns that off, but it
|
have the command-line option `-P`/`--no-prompt`, which turns that off, but it
|
||||||
@ -405,7 +446,7 @@ can be disabled permanently in the build by passing the `-P` flag or the
|
|||||||
|
|
||||||
Both commands are equivalent.
|
Both commands are equivalent.
|
||||||
|
|
||||||
### Locales
|
#### Locales
|
||||||
|
|
||||||
By default, `bc` and `dc` do not install all locales, but only the enabled
|
By default, `bc` and `dc` do not install all locales, but only the enabled
|
||||||
locales. If `DESTDIR` exists and is not empty, then they will install all of
|
locales. If `DESTDIR` exists and is not empty, then they will install all of
|
||||||
@ -421,7 +462,7 @@ have, regardless. To enable that behavior, you can pass the `-l` flag or the
|
|||||||
|
|
||||||
Both commands are equivalent.
|
Both commands are equivalent.
|
||||||
|
|
||||||
### Extra Math
|
#### Extra Math
|
||||||
|
|
||||||
This `bc` has 7 extra operators:
|
This `bc` has 7 extra operators:
|
||||||
|
|
||||||
@ -458,7 +499,7 @@ This `bc` also has a larger library that is only enabled if extra operators and
|
|||||||
the pseudo-random number generator are. More information about the functions can
|
the pseudo-random number generator are. More information about the functions can
|
||||||
be found in the Extended Library section of the full manual.
|
be found in the Extended Library section of the full manual.
|
||||||
|
|
||||||
### Manpages
|
#### Manpages
|
||||||
|
|
||||||
To disable installing manpages, pass either the `-M` flag or the
|
To disable installing manpages, pass either the `-M` flag or the
|
||||||
`--disable-man-pages` option to `configure.sh` as follows:
|
`--disable-man-pages` option to `configure.sh` as follows:
|
||||||
@ -470,7 +511,7 @@ To disable installing manpages, pass either the `-M` flag or the
|
|||||||
|
|
||||||
Both commands are equivalent.
|
Both commands are equivalent.
|
||||||
|
|
||||||
### Karatsuba Length
|
#### Karatsuba Length
|
||||||
|
|
||||||
The Karatsuba length is the point at which `bc` and `dc` switch from Karatsuba
|
The Karatsuba length is the point at which `bc` and `dc` switch from Karatsuba
|
||||||
multiplication to brute force, `O(n^2)` multiplication. It can be set by passing
|
multiplication to brute force, `O(n^2)` multiplication. It can be set by passing
|
||||||
@ -489,7 +530,7 @@ Default is `64`.
|
|||||||
to `16` (to prevent stack overflow). If it is not, `configure.sh` will give an
|
to `16` (to prevent stack overflow). If it is not, `configure.sh` will give an
|
||||||
error.
|
error.
|
||||||
|
|
||||||
### Install Options
|
#### Install Options
|
||||||
|
|
||||||
The relevant `autotools`-style install options are supported in `configure.sh`:
|
The relevant `autotools`-style install options are supported in `configure.sh`:
|
||||||
|
|
||||||
@ -520,7 +561,7 @@ environment variable is overridden.
|
|||||||
other command-line options must be used. Mixing long and short options is not
|
other command-line options must be used. Mixing long and short options is not
|
||||||
supported.
|
supported.
|
||||||
|
|
||||||
## Optimization
|
### Optimization
|
||||||
|
|
||||||
The `configure.sh` script will accept an optimization level to pass to the
|
The `configure.sh` script will accept an optimization level to pass to the
|
||||||
compiler. Because `bc` is orders of magnitude faster with optimization, I
|
compiler. Because `bc` is orders of magnitude faster with optimization, I
|
||||||
@ -560,7 +601,7 @@ I do **NOT*** recommend building with `-march=native`; doing so reduces this
|
|||||||
Manual stripping is not necessary; non-debug builds are automatically stripped
|
Manual stripping is not necessary; non-debug builds are automatically stripped
|
||||||
in the link stage.
|
in the link stage.
|
||||||
|
|
||||||
## Debug Builds
|
### Debug Builds
|
||||||
|
|
||||||
Debug builds (which also disable optimization if no optimization level is given
|
Debug builds (which also disable optimization if no optimization level is given
|
||||||
and if no extra `CFLAGS` are given) can be enabled with either the `-g` flag or
|
and if no extra `CFLAGS` are given) can be enabled with either the `-g` flag or
|
||||||
@ -580,7 +621,7 @@ make
|
|||||||
make install
|
make install
|
||||||
```
|
```
|
||||||
|
|
||||||
## Stripping Binaries
|
### Stripping Binaries
|
||||||
|
|
||||||
By default, when `bc` and `dc` are not built in debug mode, the binaries are
|
By default, when `bc` and `dc` are not built in debug mode, the binaries are
|
||||||
stripped. Stripping can be disabled with either the `-T` or the
|
stripped. Stripping can be disabled with either the `-T` or the
|
||||||
@ -600,7 +641,7 @@ make
|
|||||||
make install
|
make install
|
||||||
```
|
```
|
||||||
|
|
||||||
## Binary Size
|
### Binary Size
|
||||||
|
|
||||||
When built with both calculators, all available features, and `-Os` using
|
When built with both calculators, all available features, and `-Os` using
|
||||||
`clang` and `musl`, the executable is 140.4 kb (140,386 bytes) on `x86_64`. That
|
`clang` and `musl`, the executable is 140.4 kb (140,386 bytes) on `x86_64`. That
|
||||||
@ -649,7 +690,7 @@ kb (107,576 bytes) without history and with extra math support, and 95.3 kb
|
|||||||
optimizations. These builds were done on an `x86_64` machine running Gentoo
|
optimizations. These builds were done on an `x86_64` machine running Gentoo
|
||||||
Linux.
|
Linux.
|
||||||
|
|
||||||
## Testing
|
### Testing
|
||||||
|
|
||||||
The default test suite can be run with the following command:
|
The default test suite can be run with the following command:
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ The following are the options that dc(1) accepts.
|
|||||||
|
|
||||||
{{ A E H N EH EN HN EHN }}
|
{{ A E H N EH EN HN EHN }}
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in dc(1). Most of those users
|
want a prompt or are not used to having them in dc(1). Most of those users
|
||||||
would want to put this option in **DC_ENV_ARGS**.
|
would want to put this option in **DC_ENV_ARGS**.
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@ -92,6 +92,25 @@ The following are the options that dc(1) accepts.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
{{ A E H N EH EN HN EHN }}
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in dc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of dc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **?** command is used.
|
||||||
|
{{ end }}
|
||||||
|
{{ P EP HP NP EHP ENP HNP EHNP }}
|
||||||
|
: This option is a no-op.
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-x** **-\-extended-register**
|
**-x** **-\-extended-register**
|
||||||
|
|
||||||
: Enables extended register mode. See the *Extended Register Mode* subsection
|
: Enables extended register mode. See the *Extended Register Mode* subsection
|
||||||
@ -576,25 +595,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -761,7 +780,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -773,7 +792,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -782,7 +801,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -791,7 +810,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -800,7 +819,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -809,7 +828,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -818,7 +837,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -827,7 +846,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -836,7 +855,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -845,7 +864,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -854,7 +873,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -863,7 +882,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -919,12 +938,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1412
manuals/dc/A.1
1412
manuals/dc/A.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -81,12 +81,26 @@ The following are the options that dc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in dc(1). Most of those users
|
want a prompt or are not used to having them in dc(1). Most of those users
|
||||||
would want to put this option in **DC_ENV_ARGS**.
|
would want to put this option in **DC_ENV_ARGS**.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in dc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of dc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **?** command is used.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-x** **-\-extended-register**
|
**-x** **-\-extended-register**
|
||||||
|
|
||||||
: Enables extended register mode. See the *Extended Register Mode* subsection
|
: Enables extended register mode. See the *Extended Register Mode* subsection
|
||||||
@ -556,25 +570,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -723,7 +737,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -735,7 +749,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -744,7 +758,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -753,7 +767,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -762,7 +776,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -771,7 +785,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -780,7 +794,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -789,7 +803,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -798,7 +812,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -807,7 +821,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -816,7 +830,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -825,7 +839,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -881,12 +895,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1217
manuals/dc/E.1
1217
manuals/dc/E.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -81,12 +81,26 @@ The following are the options that dc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in dc(1). Most of those users
|
want a prompt or are not used to having them in dc(1). Most of those users
|
||||||
would want to put this option in **DC_ENV_ARGS**.
|
would want to put this option in **DC_ENV_ARGS**.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in dc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of dc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **?** command is used.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-x** **-\-extended-register**
|
**-x** **-\-extended-register**
|
||||||
|
|
||||||
: Enables extended register mode. See the *Extended Register Mode* subsection
|
: Enables extended register mode. See the *Extended Register Mode* subsection
|
||||||
@ -432,25 +446,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -563,7 +577,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -575,7 +589,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -584,7 +598,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -593,7 +607,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -602,7 +616,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -611,7 +625,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -620,7 +634,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -629,7 +643,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -638,7 +652,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -647,7 +661,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -656,7 +670,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -665,7 +679,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -721,12 +735,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1217
manuals/dc/EH.1
1217
manuals/dc/EH.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -81,12 +81,26 @@ The following are the options that dc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in dc(1). Most of those users
|
want a prompt or are not used to having them in dc(1). Most of those users
|
||||||
would want to put this option in **DC_ENV_ARGS**.
|
would want to put this option in **DC_ENV_ARGS**.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in dc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of dc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **?** command is used.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-x** **-\-extended-register**
|
**-x** **-\-extended-register**
|
||||||
|
|
||||||
: Enables extended register mode. See the *Extended Register Mode* subsection
|
: Enables extended register mode. See the *Extended Register Mode* subsection
|
||||||
@ -432,25 +446,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -563,7 +577,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -575,7 +589,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -584,7 +598,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -593,7 +607,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -602,7 +616,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -611,7 +625,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -620,7 +634,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -629,7 +643,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -638,7 +652,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -647,7 +661,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -656,7 +670,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -665,7 +679,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -721,12 +735,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1217
manuals/dc/EHN.1
1217
manuals/dc/EHN.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -81,12 +81,26 @@ The following are the options that dc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in dc(1). Most of those users
|
want a prompt or are not used to having them in dc(1). Most of those users
|
||||||
would want to put this option in **DC_ENV_ARGS**.
|
would want to put this option in **DC_ENV_ARGS**.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in dc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of dc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **?** command is used.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-x** **-\-extended-register**
|
**-x** **-\-extended-register**
|
||||||
|
|
||||||
: Enables extended register mode. See the *Extended Register Mode* subsection
|
: Enables extended register mode. See the *Extended Register Mode* subsection
|
||||||
@ -432,25 +446,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -563,7 +577,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -575,7 +589,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -584,7 +598,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -593,7 +607,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -602,7 +616,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -611,7 +625,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -620,7 +634,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -629,7 +643,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -638,7 +652,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -647,7 +661,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -656,7 +670,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -665,7 +679,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -721,12 +735,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1197
manuals/dc/EHNP.1
1197
manuals/dc/EHNP.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -80,6 +80,12 @@ The following are the options that dc(1) accepts.
|
|||||||
|
|
||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
|
: This option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
: This option is a no-op.
|
: This option is a no-op.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
@ -429,25 +435,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -560,7 +566,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -572,7 +578,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -581,7 +587,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -590,7 +596,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -599,7 +605,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -608,7 +614,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -617,7 +623,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -626,7 +632,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -635,7 +641,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -644,7 +650,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -653,7 +659,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -662,7 +668,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -718,12 +724,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1197
manuals/dc/EHP.1
1197
manuals/dc/EHP.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -80,6 +80,12 @@ The following are the options that dc(1) accepts.
|
|||||||
|
|
||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
|
: This option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
: This option is a no-op.
|
: This option is a no-op.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
@ -429,25 +435,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -560,7 +566,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -572,7 +578,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -581,7 +587,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -590,7 +596,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -599,7 +605,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -608,7 +614,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -617,7 +623,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -626,7 +632,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -635,7 +641,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -644,7 +650,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -653,7 +659,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -662,7 +668,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -718,12 +724,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1217
manuals/dc/EN.1
1217
manuals/dc/EN.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -81,12 +81,26 @@ The following are the options that dc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in dc(1). Most of those users
|
want a prompt or are not used to having them in dc(1). Most of those users
|
||||||
would want to put this option in **DC_ENV_ARGS**.
|
would want to put this option in **DC_ENV_ARGS**.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in dc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of dc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **?** command is used.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-x** **-\-extended-register**
|
**-x** **-\-extended-register**
|
||||||
|
|
||||||
: Enables extended register mode. See the *Extended Register Mode* subsection
|
: Enables extended register mode. See the *Extended Register Mode* subsection
|
||||||
@ -432,25 +446,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -563,7 +577,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -575,7 +589,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -584,7 +598,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -593,7 +607,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -602,7 +616,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -611,7 +625,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -620,7 +634,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -629,7 +643,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -638,7 +652,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -647,7 +661,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -656,7 +670,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -665,7 +679,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -721,12 +735,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1197
manuals/dc/ENP.1
1197
manuals/dc/ENP.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -80,6 +80,12 @@ The following are the options that dc(1) accepts.
|
|||||||
|
|
||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
|
: This option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
: This option is a no-op.
|
: This option is a no-op.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
@ -429,25 +435,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -560,7 +566,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -572,7 +578,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -581,7 +587,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -590,7 +596,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -599,7 +605,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -608,7 +614,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -617,7 +623,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -626,7 +632,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -635,7 +641,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -644,7 +650,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -653,7 +659,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -662,7 +668,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -718,12 +724,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1197
manuals/dc/EP.1
1197
manuals/dc/EP.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -80,6 +80,12 @@ The following are the options that dc(1) accepts.
|
|||||||
|
|
||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
|
: This option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
: This option is a no-op.
|
: This option is a no-op.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
@ -429,25 +435,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -560,7 +566,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -572,7 +578,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -581,7 +587,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -590,7 +596,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -599,7 +605,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -608,7 +614,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -617,7 +623,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -626,7 +632,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -635,7 +641,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -644,7 +650,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -653,7 +659,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -662,7 +668,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -718,12 +724,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1412
manuals/dc/H.1
1412
manuals/dc/H.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -81,12 +81,26 @@ The following are the options that dc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in dc(1). Most of those users
|
want a prompt or are not used to having them in dc(1). Most of those users
|
||||||
would want to put this option in **DC_ENV_ARGS**.
|
would want to put this option in **DC_ENV_ARGS**.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in dc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of dc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **?** command is used.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-x** **-\-extended-register**
|
**-x** **-\-extended-register**
|
||||||
|
|
||||||
: Enables extended register mode. See the *Extended Register Mode* subsection
|
: Enables extended register mode. See the *Extended Register Mode* subsection
|
||||||
@ -556,25 +570,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -723,7 +737,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -735,7 +749,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -744,7 +758,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -753,7 +767,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -762,7 +776,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -771,7 +785,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -780,7 +794,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -789,7 +803,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -798,7 +812,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -807,7 +821,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -816,7 +830,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -825,7 +839,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -881,12 +895,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1412
manuals/dc/HN.1
1412
manuals/dc/HN.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -81,12 +81,26 @@ The following are the options that dc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in dc(1). Most of those users
|
want a prompt or are not used to having them in dc(1). Most of those users
|
||||||
would want to put this option in **DC_ENV_ARGS**.
|
would want to put this option in **DC_ENV_ARGS**.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in dc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of dc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **?** command is used.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-x** **-\-extended-register**
|
**-x** **-\-extended-register**
|
||||||
|
|
||||||
: Enables extended register mode. See the *Extended Register Mode* subsection
|
: Enables extended register mode. See the *Extended Register Mode* subsection
|
||||||
@ -556,25 +570,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -723,7 +737,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -735,7 +749,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -744,7 +758,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -753,7 +767,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -762,7 +776,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -771,7 +785,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -780,7 +794,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -789,7 +803,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -798,7 +812,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -807,7 +821,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -816,7 +830,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -825,7 +839,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -881,12 +895,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1392
manuals/dc/HNP.1
1392
manuals/dc/HNP.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -80,6 +80,12 @@ The following are the options that dc(1) accepts.
|
|||||||
|
|
||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
|
: This option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
: This option is a no-op.
|
: This option is a no-op.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
@ -553,25 +559,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -720,7 +726,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -732,7 +738,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -741,7 +747,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -750,7 +756,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -759,7 +765,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -768,7 +774,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -777,7 +783,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -786,7 +792,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -795,7 +801,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -804,7 +810,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -813,7 +819,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -822,7 +828,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -878,12 +884,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1392
manuals/dc/HP.1
1392
manuals/dc/HP.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -80,6 +80,12 @@ The following are the options that dc(1) accepts.
|
|||||||
|
|
||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
|
: This option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
: This option is a no-op.
|
: This option is a no-op.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
@ -553,25 +559,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -720,7 +726,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -732,7 +738,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -741,7 +747,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -750,7 +756,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -759,7 +765,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -768,7 +774,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -777,7 +783,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -786,7 +792,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -795,7 +801,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -804,7 +810,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -813,7 +819,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -822,7 +828,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -878,12 +884,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1412
manuals/dc/N.1
1412
manuals/dc/N.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -81,12 +81,26 @@ The following are the options that dc(1) accepts.
|
|||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
: Disables the prompt in TTY mode. (The prompt is only enabled in TTY mode.
|
||||||
See the **TTY MODE** section) This is mostly for those users that do not
|
See the **TTY MODE** section.) This is mostly for those users that do not
|
||||||
want a prompt or are not used to having them in dc(1). Most of those users
|
want a prompt or are not used to having them in dc(1). Most of those users
|
||||||
would want to put this option in **DC_ENV_ARGS**.
|
would want to put this option in **DC_ENV_ARGS**.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
|
: Disables the read prompt in TTY mode. (The read prompt is only enabled in
|
||||||
|
TTY mode. See the **TTY MODE** section.) This is mostly for those users that
|
||||||
|
do not want a read prompt or are not used to having them in dc(1). Most of
|
||||||
|
those users would want to put this option in **BC_ENV_ARGS** (see the
|
||||||
|
**ENVIRONMENT VARIABLES** section). This option is also useful in hash bang
|
||||||
|
lines of dc(1) scripts that prompt for user input.
|
||||||
|
|
||||||
|
This option does not disable the regular prompt because the read prompt is
|
||||||
|
only used when the **?** command is used.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**-x** **-\-extended-register**
|
**-x** **-\-extended-register**
|
||||||
|
|
||||||
: Enables extended register mode. See the *Extended Register Mode* subsection
|
: Enables extended register mode. See the *Extended Register Mode* subsection
|
||||||
@ -556,25 +570,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -723,7 +737,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -735,7 +749,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -744,7 +758,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -753,7 +767,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -762,7 +776,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -771,7 +785,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -780,7 +794,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -789,7 +803,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -798,7 +812,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -807,7 +821,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -816,7 +830,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -825,7 +839,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -881,12 +895,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1392
manuals/dc/NP.1
1392
manuals/dc/NP.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -80,6 +80,12 @@ The following are the options that dc(1) accepts.
|
|||||||
|
|
||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
|
: This option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
: This option is a no-op.
|
: This option is a no-op.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
@ -553,25 +559,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -720,7 +726,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -732,7 +738,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -741,7 +747,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -750,7 +756,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -759,7 +765,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -768,7 +774,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -777,7 +783,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -786,7 +792,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -795,7 +801,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -804,7 +810,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -813,7 +819,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -822,7 +828,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -878,12 +884,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
1392
manuals/dc/P.1
1392
manuals/dc/P.1
File diff suppressed because it is too large
Load Diff
@ -34,7 +34,7 @@ dc - arbitrary-precision decimal reverse-Polish notation calculator
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
**dc** [**-hiPvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
**dc** [**-hiPRvVx**] [**-\-version**] [**-\-help**] [**-\-interactive**] [**-\-no-prompt**] [**-\-no-read-prompt**] [**-\-extended-register**] [**-e** *expr*] [**-\-expression**=*expr*...] [**-f** *file*...] [**-\-file**=*file*...] [*file*...]
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
@ -80,6 +80,12 @@ The following are the options that dc(1) accepts.
|
|||||||
|
|
||||||
**-P**, **-\-no-prompt**
|
**-P**, **-\-no-prompt**
|
||||||
|
|
||||||
|
: This option is a no-op.
|
||||||
|
|
||||||
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
|
**-R**, **-\-no-read-prompt**
|
||||||
|
|
||||||
: This option is a no-op.
|
: This option is a no-op.
|
||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
@ -553,25 +559,25 @@ These commands control the stack.
|
|||||||
|
|
||||||
These commands control registers (see the **REGISTERS** section).
|
These commands control registers (see the **REGISTERS** section).
|
||||||
|
|
||||||
**s***r*
|
**s**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack and stores it into register *r*.
|
: Pops the value off the top of the stack and stores it into register *r*.
|
||||||
|
|
||||||
**l***r*
|
**l**_r_
|
||||||
|
|
||||||
: Copies the value in register *r* and pushes it onto the stack. This does not
|
: Copies the value in register *r* and pushes it onto the stack. This does not
|
||||||
alter the contents of *r*.
|
alter the contents of *r*.
|
||||||
|
|
||||||
**S***r*
|
**S**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
: Pops the value off the top of the (main) stack and pushes it onto the stack
|
||||||
of register *r*. The previous value of the register becomes inaccessible.
|
of register *r*. The previous value of the register becomes inaccessible.
|
||||||
|
|
||||||
**L***r*
|
**L**_r_
|
||||||
|
|
||||||
: Pops the value off the top of the stack for register *r* and push it onto
|
: Pops the value off the top of the stack for register *r* and push it onto
|
||||||
the main stack. The previous value in the stack for register *r*, if any, is
|
the main stack. The previous value in the stack for register *r*, if any, is
|
||||||
now accessible via the **l***r* command.
|
now accessible via the **l**_r_ command.
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
|
|
||||||
@ -720,7 +726,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
This behavior is the norm whenever a macro is executed, whether by this
|
This behavior is the norm whenever a macro is executed, whether by this
|
||||||
command or by the conditional execution commands below.
|
command or by the conditional execution commands below.
|
||||||
|
|
||||||
**\>***r*
|
**\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is greater than the second, then the contents of register
|
the first value is greater than the second, then the contents of register
|
||||||
@ -732,7 +738,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**>***r***e***s*
|
**>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -741,7 +747,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\>***r*
|
**!\>**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not greater than the second (less than or equal to), then
|
the first value is not greater than the second (less than or equal to), then
|
||||||
@ -750,7 +756,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\>***r***e***s*
|
**!\>**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -759,7 +765,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**\<***r*
|
**\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is less than the second, then the contents of register *r*
|
the first value is less than the second, then the contents of register *r*
|
||||||
@ -768,7 +774,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**\<***r***e***s*
|
**\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -777,7 +783,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!\<***r*
|
**!\<**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not less than the second (greater than or equal to), then
|
the first value is not less than the second (greater than or equal to), then
|
||||||
@ -786,7 +792,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!\<***r***e***s*
|
**!\<**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -795,7 +801,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**=***r*
|
**=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is equal to the second, then the contents of register *r*
|
the first value is equal to the second, then the contents of register *r*
|
||||||
@ -804,7 +810,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**=***r***e***s*
|
**=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -813,7 +819,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
|
|
||||||
This is a **non-portable extension**.
|
This is a **non-portable extension**.
|
||||||
|
|
||||||
**!=***r*
|
**!=**_r_
|
||||||
|
|
||||||
: Pops two values off of the stack that must be numbers and compares them. If
|
: Pops two values off of the stack that must be numbers and compares them. If
|
||||||
the first value is not equal to the second, then the contents of register
|
the first value is not equal to the second, then the contents of register
|
||||||
@ -822,7 +828,7 @@ will be printed with a newline after and then popped from the stack.
|
|||||||
If either or both of the values are not numbers, dc(1) will raise an error
|
If either or both of the values are not numbers, dc(1) will raise an error
|
||||||
and reset (see the **RESET** section).
|
and reset (see the **RESET** section).
|
||||||
|
|
||||||
**!=***r***e***s*
|
**!=**_r_**e**_s_
|
||||||
|
|
||||||
: Like the above, but will execute register *s* if the comparison fails.
|
: Like the above, but will execute register *s* if the comparison fails.
|
||||||
|
|
||||||
@ -878,12 +884,12 @@ These commands query status of the stack or its top value.
|
|||||||
|
|
||||||
These commands manipulate arrays.
|
These commands manipulate arrays.
|
||||||
|
|
||||||
**:***r*
|
**:**_r_
|
||||||
|
|
||||||
: Pops the top two values off of the stack. The second value will be stored in
|
: Pops the top two values off of the stack. The second value will be stored in
|
||||||
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
the array *r* (see the **REGISTERS** section), indexed by the first value.
|
||||||
|
|
||||||
**;***r*
|
**;**_r_
|
||||||
|
|
||||||
: Pops the value on top of the stack and uses it as an index into the array
|
: Pops the value on top of the stack and uses it as an index into the array
|
||||||
*r*. The selected value is then pushed onto the stack.
|
*r*. The selected value is then pushed onto the stack.
|
||||||
|
@ -1 +1 @@
|
|||||||
.TH "BC" "1" "March 2021" "Gavin D. Howard" "General Commands Manual"
|
.TH "BC" "1" "April 2021" "Gavin D. Howard" "General Commands Manual"
|
||||||
|
@ -1 +1 @@
|
|||||||
.TH "BCL" "3" "March 2021" "Gavin D. Howard" "Libraries Manual"
|
.TH "BCL" "3" "April 2021" "Gavin D. Howard" "Libraries Manual"
|
||||||
|
@ -1 +1 @@
|
|||||||
.TH "DC" "1" "March 2021" "Gavin D. Howard" "General Commands Manual"
|
.TH "DC" "1" "April 2021" "Gavin D. Howard" "General Commands Manual"
|
||||||
|
33
release.sh
33
release.sh
@ -30,6 +30,7 @@
|
|||||||
usage() {
|
usage() {
|
||||||
printf 'usage: %s [run_tests] [generate_tests] [test_with_clang] [test_with_gcc] \n' "$script"
|
printf 'usage: %s [run_tests] [generate_tests] [test_with_clang] [test_with_gcc] \n' "$script"
|
||||||
printf ' [run_sanitizers] [run_valgrind] [run_64_bit] [run_gen_script]\n'
|
printf ' [run_sanitizers] [run_valgrind] [run_64_bit] [run_gen_script]\n'
|
||||||
|
printf ' [test_c11] [test_128_bit]\n'
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -216,8 +217,10 @@ runconfigseries() {
|
|||||||
|
|
||||||
if [ "$run_64_bit" -ne 0 ]; then
|
if [ "$run_64_bit" -ne 0 ]; then
|
||||||
|
|
||||||
runconfigtests "$_runconfigseries_CFLAGS" "$_runconfigseries_CC" \
|
if [ "$test_128_bit" -ne 0 ]; then
|
||||||
"$_runconfigseries_configure_flags" 1 64 "$_runconfigseries_run_tests"
|
runconfigtests "$_runconfigseries_CFLAGS" "$_runconfigseries_CC" \
|
||||||
|
"$_runconfigseries_configure_flags" 1 64 "$_runconfigseries_run_tests"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$run_gen_script" -ne 0 ]; then
|
if [ "$run_gen_script" -ne 0 ]; then
|
||||||
runconfigtests "$_runconfigseries_CFLAGS" "$_runconfigseries_CC" \
|
runconfigtests "$_runconfigseries_CFLAGS" "$_runconfigseries_CC" \
|
||||||
@ -307,7 +310,10 @@ runtests() {
|
|||||||
shift
|
shift
|
||||||
|
|
||||||
runtestseries "-std=c99 $_runtests_CFLAGS" "$_runtests_CC" "$_runtests_configure_flags" "$_runtests_run_tests"
|
runtestseries "-std=c99 $_runtests_CFLAGS" "$_runtests_CC" "$_runtests_configure_flags" "$_runtests_run_tests"
|
||||||
runtestseries "-std=c11 $_runtests_CFLAGS" "$_runtests_CC" "$_runtests_configure_flags" "$_runtests_run_tests"
|
|
||||||
|
if [ "$test_c11" -ne 0 ]; then
|
||||||
|
runtestseries "-std=c11 $_runtests_CFLAGS" "$_runtests_CC" "$_runtests_configure_flags" "$_runtests_run_tests"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
karatsuba() {
|
karatsuba() {
|
||||||
@ -498,6 +504,20 @@ else
|
|||||||
run_gen_script=0
|
run_gen_script=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$#" -gt 0 ]; then
|
||||||
|
test_c11="$1"
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
test_c11=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$#" -gt 0 ]; then
|
||||||
|
test_128_bit="$1"
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
test_128_bit=0
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$run_64_bit" -ne 0 ]; then
|
if [ "$run_64_bit" -ne 0 ]; then
|
||||||
bits=64
|
bits=64
|
||||||
else
|
else
|
||||||
@ -523,8 +543,6 @@ header "Running math library under --standard"
|
|||||||
|
|
||||||
printf 'quit\n' | bin/bc -ls
|
printf 'quit\n' | bin/bc -ls
|
||||||
|
|
||||||
version=$(make version)
|
|
||||||
|
|
||||||
do_make clean_tests
|
do_make clean_tests
|
||||||
|
|
||||||
if [ "$test_with_clang" -ne 0 ]; then
|
if [ "$test_with_clang" -ne 0 ]; then
|
||||||
@ -573,8 +591,9 @@ if [ "$run_tests" -ne 0 ]; then
|
|||||||
printf '\n'
|
printf '\n'
|
||||||
printf 'Then run the GitHub release script as follows:\n'
|
printf 'Then run the GitHub release script as follows:\n'
|
||||||
printf '\n'
|
printf '\n'
|
||||||
printf ' <github_release> %s release.sh RELEASE.md\\\n' "$version"
|
printf ' <github_release> <version> .gitignore .gitattributes\\\n'
|
||||||
printf ' tests/afl.py tests/radamsa.sh tests/radamsa.txt tests/randmath.py \\\n'
|
printf ' manpage.sh release.sh RELEASE.md tests/afl.py\\\n'
|
||||||
|
printf ' tests/radamsa.sh tests/radamsa.txt tests/randmath.py\\\n'
|
||||||
printf ' tests/fuzzing/ tests/bc/scripts/timeconst.bc\n'
|
printf ' tests/fuzzing/ tests/bc/scripts/timeconst.bc\n'
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
@ -39,7 +39,9 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#endif // _WIN32
|
||||||
|
|
||||||
#include <vector.h>
|
#include <vector.h>
|
||||||
#include <read.h>
|
#include <read.h>
|
||||||
@ -53,6 +55,7 @@ static const BcOptLong bc_args_lopt[] = {
|
|||||||
{ "help", BC_OPT_NONE, 'h' },
|
{ "help", BC_OPT_NONE, 'h' },
|
||||||
{ "interactive", BC_OPT_NONE, 'i' },
|
{ "interactive", BC_OPT_NONE, 'i' },
|
||||||
{ "no-prompt", BC_OPT_NONE, 'P' },
|
{ "no-prompt", BC_OPT_NONE, 'P' },
|
||||||
|
{ "no-read-prompt", BC_OPT_NONE, 'R' },
|
||||||
#if BC_ENABLED
|
#if BC_ENABLED
|
||||||
{ "global-stacks", BC_OPT_BC_ONLY, 'g' },
|
{ "global-stacks", BC_OPT_BC_ONLY, 'g' },
|
||||||
{ "mathlib", BC_OPT_BC_ONLY, 'l' },
|
{ "mathlib", BC_OPT_BC_ONLY, 'l' },
|
||||||
@ -144,6 +147,12 @@ void bc_args(int argc, char *argv[], bool exit_exprs) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 'R':
|
||||||
|
{
|
||||||
|
vm.flags |= BC_FLAG_R;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
#if BC_ENABLED
|
#if BC_ENABLED
|
||||||
case 'g':
|
case 'g':
|
||||||
{
|
{
|
||||||
|
@ -172,6 +172,12 @@ const char* const bc_err_msgs[] = {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if BC_ENABLE_HISTORY
|
||||||
|
const BcFlushType bc_flush_none = BC_FLUSH_NO_EXTRAS_NO_CLEAR;
|
||||||
|
const BcFlushType bc_flush_err = BC_FLUSH_NO_EXTRAS_CLEAR;
|
||||||
|
const BcFlushType bc_flush_save = BC_FLUSH_SAVE_EXTRAS_CLEAR;
|
||||||
|
#endif // BC_ENABLE_HISTORY
|
||||||
|
|
||||||
#if BC_ENABLE_HISTORY
|
#if BC_ENABLE_HISTORY
|
||||||
const char *bc_history_bad_terms[] = { "dumb", "cons25", "emacs", NULL };
|
const char *bc_history_bad_terms[] = { "dumb", "cons25", "emacs", NULL };
|
||||||
|
|
||||||
|
71
src/file.c
71
src/file.c
@ -36,7 +36,10 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#endif // _WIN32
|
||||||
|
|
||||||
#include <file.h>
|
#include <file.h>
|
||||||
#include <vm.h>
|
#include <vm.h>
|
||||||
@ -82,11 +85,32 @@ static BcStatus bc_file_output(int fd, const char *buf, size_t n) {
|
|||||||
return BC_STATUS_SUCCESS;
|
return BC_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
BcStatus bc_file_flushErr(BcFile *restrict f) {
|
BcStatus bc_file_flushErr(BcFile *restrict f, BcFlushType type)
|
||||||
|
{
|
||||||
BcStatus s;
|
BcStatus s;
|
||||||
|
|
||||||
if (f->len) {
|
if (f->len) {
|
||||||
|
|
||||||
|
#if BC_ENABLE_HISTORY
|
||||||
|
if (BC_TTY) {
|
||||||
|
if (f->buf[f->len - 1] != '\n' &&
|
||||||
|
(type == BC_FLUSH_SAVE_EXTRAS_CLEAR ||
|
||||||
|
type == BC_FLUSH_SAVE_EXTRAS_NO_CLEAR))
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = f->len - 2; i < f->len && f->buf[i] != '\n'; --i);
|
||||||
|
|
||||||
|
i += 1;
|
||||||
|
|
||||||
|
bc_vec_string(&vm.history.extras, f->len - i, f->buf + i);
|
||||||
|
}
|
||||||
|
else if (type >= BC_FLUSH_NO_EXTRAS_CLEAR) {
|
||||||
|
bc_vec_popAll(&vm.history.extras);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // BC_ENABLE_HISTORY
|
||||||
|
|
||||||
s = bc_file_output(f->fd, f->buf, f->len);
|
s = bc_file_output(f->fd, f->buf, f->len);
|
||||||
f->len = 0;
|
f->len = 0;
|
||||||
}
|
}
|
||||||
@ -95,9 +119,9 @@ BcStatus bc_file_flushErr(BcFile *restrict f) {
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
void bc_file_flush(BcFile *restrict f) {
|
void bc_file_flush(BcFile *restrict f, BcFlushType type) {
|
||||||
|
|
||||||
BcStatus s = bc_file_flushErr(f);
|
BcStatus s = bc_file_flushErr(f, type);
|
||||||
|
|
||||||
if (BC_ERR(s)) {
|
if (BC_ERR(s)) {
|
||||||
|
|
||||||
@ -109,10 +133,11 @@ void bc_file_flush(BcFile *restrict f) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void bc_file_write(BcFile *restrict f, const char *buf, size_t n) {
|
void bc_file_write(BcFile *restrict f, BcFlushType type,
|
||||||
|
const char *buf, size_t n)
|
||||||
|
{
|
||||||
if (n > f->cap - f->len) {
|
if (n > f->cap - f->len) {
|
||||||
bc_file_flush(f);
|
bc_file_flush(f, type);
|
||||||
assert(!f->len);
|
assert(!f->len);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,8 +148,8 @@ void bc_file_write(BcFile *restrict f, const char *buf, size_t n) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void bc_file_printf(BcFile *restrict f, const char *fmt, ...) {
|
void bc_file_printf(BcFile *restrict f, const char *fmt, ...)
|
||||||
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
@ -144,7 +169,7 @@ void bc_file_vprintf(BcFile *restrict f, const char *fmt, va_list args) {
|
|||||||
|
|
||||||
if (percent != ptr) {
|
if (percent != ptr) {
|
||||||
size_t len = (size_t) (percent - ptr);
|
size_t len = (size_t) (percent - ptr);
|
||||||
bc_file_write(f, ptr, len);
|
bc_file_write(f, bc_flush_none, ptr, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
c = percent[1];
|
c = percent[1];
|
||||||
@ -153,13 +178,13 @@ void bc_file_vprintf(BcFile *restrict f, const char *fmt, va_list args) {
|
|||||||
|
|
||||||
uchar uc = (uchar) va_arg(args, int);
|
uchar uc = (uchar) va_arg(args, int);
|
||||||
|
|
||||||
bc_file_putchar(f, uc);
|
bc_file_putchar(f, bc_flush_none, uc);
|
||||||
}
|
}
|
||||||
else if (c == 's') {
|
else if (c == 's') {
|
||||||
|
|
||||||
char *s = va_arg(args, char*);
|
char *s = va_arg(args, char*);
|
||||||
|
|
||||||
bc_file_puts(f, s);
|
bc_file_puts(f, bc_flush_none, s);
|
||||||
}
|
}
|
||||||
#if BC_DEBUG_CODE
|
#if BC_DEBUG_CODE
|
||||||
else if (c == 'd') {
|
else if (c == 'd') {
|
||||||
@ -167,14 +192,14 @@ void bc_file_vprintf(BcFile *restrict f, const char *fmt, va_list args) {
|
|||||||
int d = va_arg(args, int);
|
int d = va_arg(args, int);
|
||||||
|
|
||||||
if (d < 0) {
|
if (d < 0) {
|
||||||
bc_file_putchar(f, '-');
|
bc_file_putchar(f, bc_flush_none, '-');
|
||||||
d = -d;
|
d = -d;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!d) bc_file_putchar(f, '0');
|
if (!d) bc_file_putchar(f, bc_flush_none, '0');
|
||||||
else {
|
else {
|
||||||
bc_file_ultoa((unsigned long long) d, buf);
|
bc_file_ultoa((unsigned long long) d, buf);
|
||||||
bc_file_puts(f, buf);
|
bc_file_puts(f, bc_flush_none, buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // BC_DEBUG_CODE
|
#endif // BC_DEBUG_CODE
|
||||||
@ -187,25 +212,25 @@ void bc_file_vprintf(BcFile *restrict f, const char *fmt, va_list args) {
|
|||||||
if (c == 'z') ull = (unsigned long long) va_arg(args, size_t);
|
if (c == 'z') ull = (unsigned long long) va_arg(args, size_t);
|
||||||
else ull = (unsigned long long) va_arg(args, unsigned long);
|
else ull = (unsigned long long) va_arg(args, unsigned long);
|
||||||
|
|
||||||
if (!ull) bc_file_putchar(f, '0');
|
if (!ull) bc_file_putchar(f, bc_flush_none, '0');
|
||||||
else {
|
else {
|
||||||
bc_file_ultoa(ull, buf);
|
bc_file_ultoa(ull, buf);
|
||||||
bc_file_puts(f, buf);
|
bc_file_puts(f, bc_flush_none, buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ptr = percent + 2 + (c == 'l' || c == 'z');
|
ptr = percent + 2 + (c == 'l' || c == 'z');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ptr[0]) bc_file_puts(f, ptr);
|
if (ptr[0]) bc_file_puts(f, bc_flush_none, ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void bc_file_puts(BcFile *restrict f, const char *str) {
|
void bc_file_puts(BcFile *restrict f, BcFlushType type, const char *str) {
|
||||||
bc_file_write(f, str, strlen(str));
|
bc_file_write(f, type, str, strlen(str));
|
||||||
}
|
}
|
||||||
|
|
||||||
void bc_file_putchar(BcFile *restrict f, uchar c) {
|
void bc_file_putchar(BcFile *restrict f, BcFlushType type, uchar c) {
|
||||||
if (f->len == f->cap) bc_file_flush(f);
|
if (f->len == f->cap) bc_file_flush(f, type);
|
||||||
assert(f->len < f->cap);
|
assert(f->len < f->cap);
|
||||||
f->buf[f->len] = (char) c;
|
f->buf[f->len] = (char) c;
|
||||||
f->len += 1;
|
f->len += 1;
|
||||||
@ -221,5 +246,5 @@ void bc_file_init(BcFile *f, int fd, char *buf, size_t cap) {
|
|||||||
|
|
||||||
void bc_file_free(BcFile *f) {
|
void bc_file_free(BcFile *f) {
|
||||||
BC_SIG_ASSERT_LOCKED;
|
BC_SIG_ASSERT_LOCKED;
|
||||||
bc_file_flush(f);
|
bc_file_flush(f, bc_flush_none);
|
||||||
}
|
}
|
||||||
|
@ -505,8 +505,8 @@ static size_t bc_history_cursorPos(void) {
|
|||||||
size_t cols, rows, i;
|
size_t cols, rows, i;
|
||||||
|
|
||||||
// Report cursor location.
|
// Report cursor location.
|
||||||
bc_file_write(&vm.fout, "\x1b[6n", 4);
|
bc_file_write(&vm.fout, bc_flush_none, "\x1b[6n", 4);
|
||||||
bc_file_flush(&vm.fout);
|
bc_file_flush(&vm.fout, bc_flush_none);
|
||||||
|
|
||||||
// Read the response: ESC [ rows ; cols R.
|
// Read the response: ESC [ rows ; cols R.
|
||||||
for (i = 0; i < sizeof(buf) - 1; ++i) {
|
for (i = 0; i < sizeof(buf) - 1; ++i) {
|
||||||
@ -556,15 +556,15 @@ static size_t bc_history_columns(void) {
|
|||||||
if (BC_ERR(start == SIZE_MAX)) return BC_HIST_DEF_COLS;
|
if (BC_ERR(start == SIZE_MAX)) return BC_HIST_DEF_COLS;
|
||||||
|
|
||||||
// Go to right margin and get position.
|
// Go to right margin and get position.
|
||||||
bc_file_write(&vm.fout, "\x1b[999C", 6);
|
bc_file_write(&vm.fout, bc_flush_none, "\x1b[999C", 6);
|
||||||
bc_file_flush(&vm.fout);
|
bc_file_flush(&vm.fout, bc_flush_none);
|
||||||
cols = bc_history_cursorPos();
|
cols = bc_history_cursorPos();
|
||||||
if (BC_ERR(cols == SIZE_MAX)) return BC_HIST_DEF_COLS;
|
if (BC_ERR(cols == SIZE_MAX)) return BC_HIST_DEF_COLS;
|
||||||
|
|
||||||
// Restore position.
|
// Restore position.
|
||||||
if (cols > start) {
|
if (cols > start) {
|
||||||
bc_file_printf(&vm.fout, "\x1b[%zuD", cols - start);
|
bc_file_printf(&vm.fout, "\x1b[%zuD", cols - start);
|
||||||
bc_file_flush(&vm.fout);
|
bc_file_flush(&vm.fout, bc_flush_none);
|
||||||
}
|
}
|
||||||
|
|
||||||
return cols;
|
return cols;
|
||||||
@ -632,7 +632,7 @@ static void bc_history_refresh(BcHistory *h) {
|
|||||||
char* buf = h->buf.v;
|
char* buf = h->buf.v;
|
||||||
size_t colpos, len = BC_HIST_BUF_LEN(h), pos = h->pos;
|
size_t colpos, len = BC_HIST_BUF_LEN(h), pos = h->pos;
|
||||||
|
|
||||||
bc_file_flush(&vm.fout);
|
bc_file_flush(&vm.fout, bc_flush_none);
|
||||||
|
|
||||||
while(h->pcol + bc_history_colPos(buf, len, pos) >= h->cols) {
|
while(h->pcol + bc_history_colPos(buf, len, pos) >= h->cols) {
|
||||||
|
|
||||||
@ -647,24 +647,32 @@ static void bc_history_refresh(BcHistory *h) {
|
|||||||
len -= bc_history_prevLen(buf, len, NULL);
|
len -= bc_history_prevLen(buf, len, NULL);
|
||||||
|
|
||||||
// Cursor to left edge.
|
// Cursor to left edge.
|
||||||
bc_file_write(&vm.fout, "\r", 1);
|
bc_file_write(&vm.fout, bc_flush_none, "\r", 1);
|
||||||
|
|
||||||
|
// Take the extra stuff into account.
|
||||||
|
if (h->extras.len > 1) {
|
||||||
|
len += h->extras.len - 1;
|
||||||
|
pos += h->extras.len - 1;
|
||||||
|
bc_file_write(&vm.fout, bc_flush_none, h->extras.v, h->extras.len - 1);
|
||||||
|
}
|
||||||
|
|
||||||
// Write the prompt, if desired.
|
// Write the prompt, if desired.
|
||||||
#if BC_ENABLE_PROMPT
|
#if BC_ENABLE_PROMPT
|
||||||
if (BC_USE_PROMPT) bc_file_write(&vm.fout, h->prompt, h->plen);
|
if (BC_USE_PROMPT)
|
||||||
|
bc_file_write(&vm.fout, bc_flush_none, h->prompt, h->plen);
|
||||||
#endif // BC_ENABLE_PROMPT
|
#endif // BC_ENABLE_PROMPT
|
||||||
|
|
||||||
bc_file_write(&vm.fout, buf, BC_HIST_BUF_LEN(h));
|
bc_file_write(&vm.fout, bc_flush_none, buf, BC_HIST_BUF_LEN(h));
|
||||||
|
|
||||||
// Erase to right.
|
// Erase to right.
|
||||||
bc_file_write(&vm.fout, "\x1b[0K", 4);
|
bc_file_write(&vm.fout, bc_flush_none, "\x1b[0K", 4);
|
||||||
|
|
||||||
// Move cursor to original position.
|
// Move cursor to original position.
|
||||||
colpos = bc_history_colPos(buf, len, pos) + h->pcol;
|
colpos = bc_history_colPos(buf, len, pos) + h->pcol;
|
||||||
|
|
||||||
if (colpos) bc_file_printf(&vm.fout, "\r\x1b[%zuC", colpos);
|
if (colpos) bc_file_printf(&vm.fout, "\r\x1b[%zuC", colpos);
|
||||||
|
|
||||||
bc_file_flush(&vm.fout);
|
bc_file_flush(&vm.fout, bc_flush_none);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -684,7 +692,7 @@ static void bc_history_edit_insert(BcHistory *h, const char *cbuf, size_t clen)
|
|||||||
h->buf.len += clen - 1;
|
h->buf.len += clen - 1;
|
||||||
bc_vec_pushByte(&h->buf, '\0');
|
bc_vec_pushByte(&h->buf, '\0');
|
||||||
|
|
||||||
len = BC_HIST_BUF_LEN(h);
|
len = BC_HIST_BUF_LEN(h) + h->extras.len - 1;
|
||||||
#if BC_ENABLE_PROMPT
|
#if BC_ENABLE_PROMPT
|
||||||
colpos = bc_history_promptColLen(h->prompt, h->plen);
|
colpos = bc_history_promptColLen(h->prompt, h->plen);
|
||||||
#endif // BC_ENABLE_PROMPT
|
#endif // BC_ENABLE_PROMPT
|
||||||
@ -693,8 +701,8 @@ static void bc_history_edit_insert(BcHistory *h, const char *cbuf, size_t clen)
|
|||||||
if (colpos < h->cols) {
|
if (colpos < h->cols) {
|
||||||
|
|
||||||
// Avoid a full update of the line in the trivial case.
|
// Avoid a full update of the line in the trivial case.
|
||||||
bc_file_write(&vm.fout, cbuf, clen);
|
bc_file_write(&vm.fout, bc_flush_none, cbuf, clen);
|
||||||
bc_file_flush(&vm.fout);
|
bc_file_flush(&vm.fout, bc_flush_none);
|
||||||
}
|
}
|
||||||
else bc_history_refresh(h);
|
else bc_history_refresh(h);
|
||||||
}
|
}
|
||||||
@ -1102,7 +1110,7 @@ static void bc_history_printCtrl(BcHistory *h, unsigned int c) {
|
|||||||
bc_vec_pushByte(&h->buf, '\0');
|
bc_vec_pushByte(&h->buf, '\0');
|
||||||
|
|
||||||
if (c != BC_ACTION_CTRL_C && c != BC_ACTION_CTRL_D) {
|
if (c != BC_ACTION_CTRL_C && c != BC_ACTION_CTRL_D) {
|
||||||
bc_file_write(&vm.fout, newline, sizeof(newline) - 1);
|
bc_file_write(&vm.fout, bc_flush_none, newline, sizeof(newline) - 1);
|
||||||
bc_history_refresh(h);
|
bc_history_refresh(h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1116,6 +1124,11 @@ static BcStatus bc_history_edit(BcHistory *h, const char *prompt) {
|
|||||||
|
|
||||||
bc_history_reset(h);
|
bc_history_reset(h);
|
||||||
|
|
||||||
|
// Don't write the saved output the first time. This is because it has
|
||||||
|
// already been written to output. In other words, don't uncomment the
|
||||||
|
// line below or add anything like it.
|
||||||
|
// bc_file_write(&vm.fout, bc_flush_none, h->extras.v, h->extras.len - 1);
|
||||||
|
|
||||||
#if BC_ENABLE_PROMPT
|
#if BC_ENABLE_PROMPT
|
||||||
if (BC_USE_PROMPT) {
|
if (BC_USE_PROMPT) {
|
||||||
|
|
||||||
@ -1123,8 +1136,8 @@ static BcStatus bc_history_edit(BcHistory *h, const char *prompt) {
|
|||||||
h->plen = strlen(prompt);
|
h->plen = strlen(prompt);
|
||||||
h->pcol = bc_history_promptColLen(prompt, h->plen);
|
h->pcol = bc_history_promptColLen(prompt, h->plen);
|
||||||
|
|
||||||
bc_file_write(&vm.fout, prompt, h->plen);
|
bc_file_write(&vm.fout, bc_flush_none, prompt, h->plen);
|
||||||
bc_file_flush(&vm.fout);
|
bc_file_flush(&vm.fout, bc_flush_none);
|
||||||
}
|
}
|
||||||
#endif // BC_ENABLE_PROMPT
|
#endif // BC_ENABLE_PROMPT
|
||||||
|
|
||||||
@ -1158,8 +1171,8 @@ static BcStatus bc_history_edit(BcHistory *h, const char *prompt) {
|
|||||||
case BC_ACTION_CTRL_C:
|
case BC_ACTION_CTRL_C:
|
||||||
{
|
{
|
||||||
bc_history_printCtrl(h, c);
|
bc_history_printCtrl(h, c);
|
||||||
bc_file_write(&vm.fout, vm.sigmsg, vm.siglen);
|
bc_file_write(&vm.fout, bc_flush_none, vm.sigmsg, vm.siglen);
|
||||||
bc_file_write(&vm.fout, bc_program_ready_msg,
|
bc_file_write(&vm.fout, bc_flush_none, bc_program_ready_msg,
|
||||||
bc_program_ready_msg_len);
|
bc_program_ready_msg_len);
|
||||||
bc_history_reset(h);
|
bc_history_reset(h);
|
||||||
bc_history_refresh(h);
|
bc_history_refresh(h);
|
||||||
@ -1254,7 +1267,7 @@ static BcStatus bc_history_edit(BcHistory *h, const char *prompt) {
|
|||||||
// Clear screen.
|
// Clear screen.
|
||||||
case BC_ACTION_CTRL_L:
|
case BC_ACTION_CTRL_L:
|
||||||
{
|
{
|
||||||
bc_file_write(&vm.fout, "\x1b[H\x1b[2J", 7);
|
bc_file_write(&vm.fout, bc_flush_none, "\x1b[H\x1b[2J", 7);
|
||||||
bc_history_refresh(h);
|
bc_history_refresh(h);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1302,8 +1315,8 @@ static BcStatus bc_history_raw(BcHistory *h, const char *prompt) {
|
|||||||
h->stdin_has_data = bc_history_stdinHasData(h);
|
h->stdin_has_data = bc_history_stdinHasData(h);
|
||||||
if (!h->stdin_has_data) bc_history_disableRaw(h);
|
if (!h->stdin_has_data) bc_history_disableRaw(h);
|
||||||
|
|
||||||
bc_file_write(&vm.fout, "\n", 1);
|
bc_file_write(&vm.fout, bc_flush_none, "\n", 1);
|
||||||
bc_file_flush(&vm.fout);
|
bc_file_flush(&vm.fout, bc_flush_none);
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
@ -1382,6 +1395,7 @@ void bc_history_init(BcHistory *h) {
|
|||||||
|
|
||||||
bc_vec_init(&h->buf, sizeof(char), NULL);
|
bc_vec_init(&h->buf, sizeof(char), NULL);
|
||||||
bc_vec_init(&h->history, sizeof(char*), bc_history_string_free);
|
bc_vec_init(&h->history, sizeof(char*), bc_history_string_free);
|
||||||
|
bc_vec_init(&h->extras, sizeof(char), NULL);
|
||||||
|
|
||||||
FD_ZERO(&h->rdset);
|
FD_ZERO(&h->rdset);
|
||||||
FD_SET(STDIN_FILENO, &h->rdset);
|
FD_SET(STDIN_FILENO, &h->rdset);
|
||||||
@ -1401,6 +1415,7 @@ void bc_history_free(BcHistory *h) {
|
|||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
bc_vec_free(&h->buf);
|
bc_vec_free(&h->buf);
|
||||||
bc_vec_free(&h->history);
|
bc_vec_free(&h->history);
|
||||||
|
bc_vec_free(&h->extras);
|
||||||
#endif // NDEBUG
|
#endif // NDEBUG
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1439,8 +1454,8 @@ void bc_history_printKeyCodes(BcHistory *h) {
|
|||||||
isprint(c) ? c : '?', (unsigned long) c);
|
isprint(c) ? c : '?', (unsigned long) c);
|
||||||
|
|
||||||
// Go left edge manually, we are in raw mode.
|
// Go left edge manually, we are in raw mode.
|
||||||
bc_vm_putchar('\r');
|
bc_vm_putchar('\r', bc_flush_none);
|
||||||
bc_file_flush(&vm.fout);
|
bc_file_flush(&vm.fout, bc_flush_none);
|
||||||
}
|
}
|
||||||
|
|
||||||
bc_history_disableRaw(h);
|
bc_history_disableRaw(h);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user