Re-formats the BCmath extension to have consistent formatting.
Mostly, it adds the spaces in calculations to have them more readable.
Also:
- removes unused headers
- removes few variables which are used only once in the code
Co-authored-by: George Peter Banyard <girgias@php.net>
* ext/bcmath: coding style: use indentation
And add braces to block statements, as the current code was pretty much unreadable with how inconsistent it was.
* ext/bcmath: Remove some useless header inclusions
* ext/bcmath: Use standard C99 bool type instead of char
* ext/bcmath: Include specific headers instead of config.h
* Restructure definitions to reduce header inclusions
* Use size_t as a more appropriate type
* Remove unused variable full_scale
* Refactor bc_raisemod() to get rid of Zend dependencies
This separates the concerns of throwing exceptions back into the PHP_FUNCTION instead of being the responsibility of the library
* Refactor bc_raise() to get rid of Zend dependencies
This separates the concerns of throwing exceptions back into the PHP_FUNCTION instead of being the responsibility of the library
* Refactor bc_divmod() and bc_modulo() to return bool
Return false on division by 0 attempt instead of -1 and true on success instead of 0
* Refactor bc_divide() to return bool
Return false on division by 0 attempt instead of -1 and true on success instead of 0
- More common filename accross the PHP repository
- Additionally, this patch replaces some legacy form feed (FF or ^L)
characters (for printers) to LF (\n) newline character.
Instead of writing warning messages to `stderr`, we employ PHP's error
handling to raise `E_WARNING` even for the single case where
`bc_rt_error()` has been called, since that did not actually error out.
We choose to call `php_error_docref()` directly in libbcmath, since
there is no upstream, and since other PHP core functionality is already
used in our bundled libbcmath. Accordingly, we remove `rt.c` so it will
not be accidentally used in the future.
Besides adapting a few existing tests, we add new tests so that the
warnings are tested at least once. We also get rid of the Windows
specific tests, since the warning behavior is now supposed to be
platform-agnostic.
We change `bcmul()` and `bcpow()` so that the result has exactly the
requested scale (i.e. decimal places) to make them consistent with the
other BCMath functions. This also changes our stance regarding bug
#52748, which had been classified as documentation problem.
We do not manipulate the numbers themselves (anymore), but rather
introduce `bc_num2str_ex()` which accepts a scale parameter that
overrides the scale of the number by omitting extraneous decimals and
adding zeros, respectively. This also allows us to get rid of
`split_bc_num()`, which fixes bug #75164 as well.
The `n_next` member of struct `bc_struct` is unused; the only code that
would use this member has been disabled since libbcmath has been
bundled nearly 17 years ago. Apparently, `n_next` has been designed to
build a linked list of free numbers, but it is doubtful whether that
would be an improvement over relying on the efficiency of the ZendMM,
so we remove the remaining support altogether.
The ABI break probably affects nobody, but would be okay for a new
minor version according to our release process, anyway.