diff options
author | Werner Koch <wk@gnupg.org> | 2013-09-07 10:06:46 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2013-09-25 13:20:47 +0200 |
commit | 9a4447ccd1b90bcd701941e80a7f484a1825fcea (patch) | |
tree | 62063a27d2f9b93e9f98691e69941ceb6bfe9dea /src/mpicalc.c | |
parent | 64a7d347847d606eb5f4c156e24ba060271b8f6b (diff) | |
download | libgcrypt-9a4447ccd1b90bcd701941e80a7f484a1825fcea.tar.gz |
mpicalc: Add statement to compute the number of bits.
* src/mpicalc.c (do_nbits): New.
(main): Add statement 'b'.
Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'src/mpicalc.c')
-rw-r--r-- | src/mpicalc.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/mpicalc.c b/src/mpicalc.c index 762d7c81..dd852277 100644 --- a/src/mpicalc.c +++ b/src/mpicalc.c @@ -238,6 +238,20 @@ do_rshift (void) } +static void +do_nbits (void) +{ + unsigned int n; + + if (stackidx < 1) + { + fputs ("stack underflow\n", stderr); + return; + } + n = mpi_get_nbits (stack[stackidx - 1]); + mpi_set_ui (stack[stackidx - 1], n); +} + static int my_getc (void) @@ -279,6 +293,7 @@ print_help (void) "i remove item [0] := [1] {-1}\n" "d dup item [-1] := [0] {+1}\n" "r reverse [0] := [1], [1] := [0] {0}\n" + "b # of bits [0] := nbits([0]) {0}\n" "c clear stack\n" "p print top item\n" "f print the stack\n" @@ -381,7 +396,7 @@ main (int argc, char **argv) do_add (); } break; - case '-': + case '-': if ((c = my_getc ()) == '-') do_dec (); else if (isdigit (c) || (c >= 'A' && c <= 'F')) @@ -454,6 +469,9 @@ main (int argc, char **argv) stack[stackidx-2] = tmp; } break; + case 'b': + do_nbits (); + break; case 'c': for (i = 0; i < stackidx; i++) { |