aboutsummaryrefslogtreecommitdiffstats
path: root/tools/mpicalc.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>1999-06-08 11:41:46 +0000
committerWerner Koch <[email protected]>1999-06-08 11:41:46 +0000
commit40238d4b63b409d716d1e105c999725e8a7beedc (patch)
tree55ddfe3d43fa2704761ee3c5a54138101002d591 /tools/mpicalc.c
parentSee ChangeLog: Sat Jun 5 15:30:33 CEST 1999 Werner Koch (diff)
downloadgnupg-40238d4b63b409d716d1e105c999725e8a7beedc.tar.gz
gnupg-40238d4b63b409d716d1e105c999725e8a7beedc.zip
See ChangeLog: Tue Jun 8 13:36:25 CEST 1999 Werner Koch
Diffstat (limited to 'tools/mpicalc.c')
-rw-r--r--tools/mpicalc.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/tools/mpicalc.c b/tools/mpicalc.c
index 22af505ac..95ab47c29 100644
--- a/tools/mpicalc.c
+++ b/tools/mpicalc.c
@@ -131,6 +131,18 @@ do_mul(void)
}
static void
+do_mulm(void)
+{
+ if( stackidx < 3 ) {
+ fputs("stack underflow\n", stderr);
+ return;
+ }
+ mpi_mulm( stack[stackidx-3], stack[stackidx-3],
+ stack[stackidx-2], stack[stackidx-1] );
+ stackidx -= 2;
+}
+
+static void
do_div(void)
{
if( stackidx < 2 ) {
@@ -237,7 +249,7 @@ main(int argc, char **argv)
while( (c=getc(stdin)) != EOF ) {
if( !state ) { /* waiting */
- if( isdigit(c) || (c >='A' && c <= 'F') ) {
+ if( isdigit(c) ) {
state = 1;
ungetc(c, stdin);
strbuf[0] = '0';
@@ -275,6 +287,9 @@ main(int argc, char **argv)
case '*':
do_mul();
break;
+ case 'm':
+ do_mulm();
+ break;
case '/':
do_div();
break;
@@ -338,7 +353,7 @@ main(int argc, char **argv)
}
}
else if( state == 1 ) { /* in a number */
- if( !(isdigit(c) || (c >='A' && c <= 'F')) ) { /* store the number */
+ if( !isxdigit(c) ) { /* store the number */
state = 0;
ungetc(c, stdin);
if( stridx < 1000 )