From 3db58009ac14be33d8db811e3875b9ae51e5163c Mon Sep 17 00:00:00 2001 From: mdw Date: Wed, 9 Oct 2002 00:33:44 +0000 Subject: [PATCH] Allow `0o' and `0b' prefixes for octal and binary (from Haskell) --- mptext.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/mptext.c b/mptext.c index 84056e6..565322d 100644 --- a/mptext.c +++ b/mptext.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: mptext.c,v 1.13 2002/10/09 00:21:06 mdw Exp $ + * $Id: mptext.c,v 1.14 2002/10/09 00:33:44 mdw Exp $ * * Textual representation of multiprecision numbers * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: mptext.c,v $ + * Revision 1.14 2002/10/09 00:33:44 mdw + * Allow `0o' and `0b' prefixes for octal and binary (from Haskell) + * * Revision 1.13 2002/10/09 00:21:06 mdw * Allow user-specified `r_xx' bases to be up to 62. * @@ -210,12 +213,22 @@ mp *mp_read(mp *m, int radix, const mptext_ops *ops, void *p) r = 0; } else { ch = ops->get(p); - if (ch == 'x') { - ch = ops->get(p); - rd = 16; - } else { - rd = 8; - f |= f_ok; + switch (ch) { + case 'x': + rd = 16; + goto prefix; + case 'o': + rd = 8; + goto prefix; + case 'b': + rd = 2; + goto prefix; + prefix: + ch = ops->get(p); + break; + default: + rd = 8; + f |= f_ok; } r = -1; } -- 2.11.0