mirror of
https://github.com/sheumann/hush.git
synced 2024-08-21 11:28:57 +00:00
Goetz Bock writes:
Dear list, during my quest do pack busybox into an RPM, I've fixed a small bug (missing \n) in dc's usage. And added two additional operations: mod and exp/power. Feel free to drop them.
This commit is contained in:
parent
a48b0a3af7
commit
a92877403a
@ -280,8 +280,10 @@
|
||||
"expression ..."
|
||||
#define dc_full_usage \
|
||||
"This is a Tiny RPN calculator that understands the\n" \
|
||||
"following operations: +, -, /, *, and, or, not, eor.\n" \
|
||||
"i.e., 'dc 2 2 add' -> 4, and 'dc 8 8 \\* 2 2 + /' -> 16" \
|
||||
"following operations: +, add, -, sub, *, mul, /, div, %, mod, "\
|
||||
"**, exp, and, or, not, eor.\n" \
|
||||
"For example: 'dc 2 2 add' -> 4, and 'dc 8 8 \\* 2 2 + /' -> 16.\n" \
|
||||
"\nOptions:\n" \
|
||||
"p - Prints the value on the top of the stack, without altering the stack.\n" \
|
||||
"f - Prints the entire contents of the stack without altering anything.\n" \
|
||||
"o - Pops the value off the top of the stack and uses it to set the output radix.\n" \
|
||||
|
@ -44,6 +44,13 @@ static void mul(void)
|
||||
push(pop() * pop());
|
||||
}
|
||||
|
||||
static void power(void)
|
||||
{
|
||||
double topower = pop();
|
||||
|
||||
push(pow(pop(), topower));
|
||||
}
|
||||
|
||||
static void divide(void)
|
||||
{
|
||||
double divisor = pop();
|
||||
@ -51,6 +58,13 @@ static void divide(void)
|
||||
push(pop() / divisor);
|
||||
}
|
||||
|
||||
static void mod(void)
|
||||
{
|
||||
unsigned int d = pop();
|
||||
|
||||
push((unsigned int) pop() % d);
|
||||
}
|
||||
|
||||
static void and(void)
|
||||
{
|
||||
push((unsigned int) pop() & (unsigned int) pop());
|
||||
@ -119,10 +133,16 @@ static const struct op operators[] = {
|
||||
{"mul", mul},
|
||||
{"/", divide},
|
||||
{"div", divide},
|
||||
{"**", power},
|
||||
{"exp", power},
|
||||
{"pow", power},
|
||||
{"%", mod},
|
||||
{"mod", mod},
|
||||
{"and", and},
|
||||
{"or", or},
|
||||
{"not", not},
|
||||
{"eor", eor},
|
||||
{"xor", eor},
|
||||
{"p", print_no_pop},
|
||||
{"f", print_stack_no_pop},
|
||||
{"o", set_output_base},
|
||||
|
Loading…
Reference in New Issue
Block a user