bc: trim banner, use empty interactive prompts (GNU bc compat)
function old new delta bc_vm_run 689 684 -5 bc_program_read 355 350 -5 bc_read_line 307 285 -22 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-32) Total: -32 bytes text data bss dec hex filename 985409 485 7296 993190 f27a6 busybox_old 985265 485 7296 993046 f2716 busybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
d0bc5fdfea
commit
6e7c65fca0
@ -2,9 +2,6 @@
|
|||||||
/*
|
/*
|
||||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||||
* Copyright (c) 2018 Gavin D. Howard and contributors.
|
* Copyright (c) 2018 Gavin D. Howard and contributors.
|
||||||
*
|
|
||||||
* ** Automatically generated from https://github.com/gavinhoward/bc **
|
|
||||||
* ** Do not edit unless you know what you are doing. **
|
|
||||||
*/
|
*/
|
||||||
//config:config BC
|
//config:config BC
|
||||||
//config: bool "bc (45 kb; 49 kb when combined with dc)"
|
//config: bool "bc (45 kb; 49 kb when combined with dc)"
|
||||||
@ -97,7 +94,7 @@
|
|||||||
//config:config FEATURE_DC_SMALL
|
//config:config FEATURE_DC_SMALL
|
||||||
//config: bool "Minimal dc implementation (4.2 kb), not using bc code base"
|
//config: bool "Minimal dc implementation (4.2 kb), not using bc code base"
|
||||||
//config: depends on DC && !BC
|
//config: depends on DC && !BC
|
||||||
//config: default y
|
//config: default n
|
||||||
//config:
|
//config:
|
||||||
//config:config FEATURE_DC_LIBM
|
//config:config FEATURE_DC_LIBM
|
||||||
//config: bool "Enable power and exp functions (requires libm)"
|
//config: bool "Enable power and exp functions (requires libm)"
|
||||||
@ -155,11 +152,11 @@
|
|||||||
//usage: "obase = A\n"
|
//usage: "obase = A\n"
|
||||||
//usage:
|
//usage:
|
||||||
//usage:#define dc_trivial_usage
|
//usage:#define dc_trivial_usage
|
||||||
//usage: "[-eSCRIPT]... [-fFILE]... [FILE]..."
|
//usage: IF_NOT_FEATURE_DC_SMALL("[-x] ")"[-eSCRIPT]... [-fFILE]... [FILE]..."
|
||||||
//usage:
|
//usage:
|
||||||
//usage:#define dc_full_usage "\n"
|
//usage:#define dc_full_usage "\n"
|
||||||
//usage: "\nTiny RPN calculator. Operations:"
|
//usage: "\nTiny RPN calculator. Operations:"
|
||||||
//usage: "\n+, -, *, /, %, ~, ^, |,"
|
//usage: "\n+, -, *, /, %, ~, ^," IF_NOT_FEATURE_DC_SMALL(" |,")
|
||||||
//usage: "\np - print top of the stack (without popping)"
|
//usage: "\np - print top of the stack (without popping)"
|
||||||
//usage: "\nf - print entire stack"
|
//usage: "\nf - print entire stack"
|
||||||
//usage: "\nk - pop the value and set the precision"
|
//usage: "\nk - pop the value and set the precision"
|
||||||
@ -1267,13 +1264,11 @@ static int push_input_byte(BcVec *vec, char c)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BcStatus bc_read_line(BcVec *vec, const char *prompt)
|
static BcStatus bc_read_line(BcVec *vec)
|
||||||
{
|
{
|
||||||
BcStatus s;
|
BcStatus s;
|
||||||
bool bad_chars;
|
bool bad_chars;
|
||||||
|
|
||||||
if (G_posix) prompt = "";
|
|
||||||
|
|
||||||
s = BC_STATUS_SUCCESS;
|
s = BC_STATUS_SUCCESS;
|
||||||
do {
|
do {
|
||||||
int c;
|
int c;
|
||||||
@ -1296,7 +1291,7 @@ static BcStatus bc_read_line(BcVec *vec, const char *prompt)
|
|||||||
if (G_ttyin) {
|
if (G_ttyin) {
|
||||||
int n, i;
|
int n, i;
|
||||||
# define line_buf bb_common_bufsiz1
|
# define line_buf bb_common_bufsiz1
|
||||||
n = read_line_input(G.line_input_state, prompt, line_buf, COMMON_BUFSIZE);
|
n = read_line_input(G.line_input_state, "", line_buf, COMMON_BUFSIZE);
|
||||||
if (n <= 0) { // read errors or EOF, or ^D, or ^C
|
if (n <= 0) { // read errors or EOF, or ^D, or ^C
|
||||||
if (n == 0) // ^C
|
if (n == 0) // ^C
|
||||||
goto intr;
|
goto intr;
|
||||||
@ -1314,8 +1309,6 @@ static BcStatus bc_read_line(BcVec *vec, const char *prompt)
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if (G_ttyin)
|
|
||||||
fputs(prompt, stderr);
|
|
||||||
IF_FEATURE_BC_SIGNALS(errno = 0;)
|
IF_FEATURE_BC_SIGNALS(errno = 0;)
|
||||||
do {
|
do {
|
||||||
c = fgetc(stdin);
|
c = fgetc(stdin);
|
||||||
@ -5563,7 +5556,7 @@ static BcStatus bc_program_read(void)
|
|||||||
sv_file = G.prog.file;
|
sv_file = G.prog.file;
|
||||||
G.prog.file = NULL;
|
G.prog.file = NULL;
|
||||||
|
|
||||||
s = bc_read_line(&buf, "read> ");
|
s = bc_read_line(&buf);
|
||||||
if (s) goto io_err;
|
if (s) goto io_err;
|
||||||
|
|
||||||
common_parse_init(&parse, BC_PROG_READ);
|
common_parse_init(&parse, BC_PROG_READ);
|
||||||
@ -6976,8 +6969,6 @@ static void bc_vm_info(void)
|
|||||||
{
|
{
|
||||||
printf("%s "BB_VER"\n"
|
printf("%s "BB_VER"\n"
|
||||||
"Copyright (c) 2018 Gavin D. Howard and contributors\n"
|
"Copyright (c) 2018 Gavin D. Howard and contributors\n"
|
||||||
"Report bugs at: https://github.com/gavinhoward/bc\n"
|
|
||||||
"This is free software with ABSOLUTELY NO WARRANTY\n"
|
|
||||||
, applet_name);
|
, applet_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7002,7 +6993,6 @@ static void bc_args(char **argv)
|
|||||||
if (getenv("POSIXLY_CORRECT"))
|
if (getenv("POSIXLY_CORRECT"))
|
||||||
option_mask32 |= BC_FLAG_S;
|
option_mask32 |= BC_FLAG_S;
|
||||||
|
|
||||||
///should be in bc_vm_run() instead??
|
|
||||||
if (opts & BC_FLAG_V) {
|
if (opts & BC_FLAG_V) {
|
||||||
bc_vm_info();
|
bc_vm_info();
|
||||||
exit(0);
|
exit(0);
|
||||||
@ -7130,7 +7120,7 @@ static BcStatus bc_vm_stdin(void)
|
|||||||
// with a backslash to the parser. The reason for that is because the parser
|
// with a backslash to the parser. The reason for that is because the parser
|
||||||
// treats a backslash+newline combo as whitespace, per the bc spec. In that
|
// treats a backslash+newline combo as whitespace, per the bc spec. In that
|
||||||
// case, and for strings and comments, the parser will expect more stuff.
|
// case, and for strings and comments, the parser will expect more stuff.
|
||||||
while ((s = bc_read_line(&buf, ">>> ")) == BC_STATUS_SUCCESS) {
|
while ((s = bc_read_line(&buf)) == BC_STATUS_SUCCESS) {
|
||||||
|
|
||||||
char *string = buf.v;
|
char *string = buf.v;
|
||||||
|
|
||||||
@ -7602,8 +7592,18 @@ int dc_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
INIT_G();
|
INIT_G();
|
||||||
G.sbgn = '[';
|
G.sbgn = '[';
|
||||||
G.send = ']';
|
G.send = ']';
|
||||||
// TODO: dc (GNU bc 1.07.1) 1.4.1 seems to use default width
|
/*
|
||||||
// 1 char narrower than bc from the same package. Do the same?
|
* TODO: dc (GNU bc 1.07.1) 1.4.1 seems to use width
|
||||||
|
* 1 char wider than bc from the same package.
|
||||||
|
* Both default width, and xC_LINE_LENGTH=N are wider:
|
||||||
|
* "DC_LINE_LENGTH=5 dc -e'123456 p'" prints:
|
||||||
|
* 1234\
|
||||||
|
* 56
|
||||||
|
* "echo '123456' | BC_LINE_LENGTH=5 bc" prints:
|
||||||
|
* 123\
|
||||||
|
* 456
|
||||||
|
* Do the same, or it's a bug?
|
||||||
|
*/
|
||||||
bc_vm_init("DC_LINE_LENGTH");
|
bc_vm_init("DC_LINE_LENGTH");
|
||||||
|
|
||||||
// Run -e'SCRIPT' and -fFILE in order of appearance, then handle FILEs
|
// Run -e'SCRIPT' and -fFILE in order of appearance, then handle FILEs
|
||||||
|
Loading…
Reference in New Issue
Block a user