diff options
author | Werner Koch <wk@gnupg.org> | 2017-07-05 20:05:41 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2017-07-05 20:05:41 +0200 |
commit | 0d30a4a9791d20c8881b5b12bd44611d9f4274cd (patch) | |
tree | 234cf894f94049903d9f374d6e531b1d1f5d32b0 | |
parent | 5feaf1cc8f22c1f8d19a34850d86fe190f1432e2 (diff) | |
download | libgcrypt-0d30a4a9791d20c8881b5b12bd44611d9f4274cd.tar.gz |
tools: Add left shift to mpicalc.
* src/mpicalc.c (do_lshift): New.
(main): Handle '<'.
Signed-off-by: Werner Koch <wk@gnupg.org>
-rw-r--r-- | src/mpicalc.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/mpicalc.c b/src/mpicalc.c index ebd1bbb9..11246f38 100644 --- a/src/mpicalc.c +++ b/src/mpicalc.c @@ -232,6 +232,17 @@ do_gcd (void) } static void +do_lshift (void) +{ + if (stackidx < 1) + { + fputs ("stack underflow\n", stderr); + return; + } + mpi_lshift (stack[stackidx - 1], stack[stackidx - 1], 1); +} + +static void do_rshift (void) { if (stackidx < 1) @@ -242,7 +253,6 @@ do_rshift (void) mpi_rshift (stack[stackidx - 1], stack[stackidx - 1], 1); } - static void do_nbits (void) { @@ -305,6 +315,7 @@ print_help (void) "* multiply [0] := [1] * [0] {-1}\n" "/ divide [0] := [1] - [0] {-1}\n" "% modulo [0] := [1] % [0] {-1}\n" + "< left shift [0] := [0] << 1 {0}\n" "> right shift [0] := [0] >> 1 {0}\n" "++ increment [0] := [0]++ {0}\n" "-- decrement [0] := [0]-- {0}\n" @@ -487,6 +498,9 @@ main (int argc, char **argv) case '^': do_powm (); break; + case '<': + do_lshift (); + break; case '>': do_rshift (); break; |