X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/432c4e184d44704511a5991b80224a87cb1d4613..298182ad446aaced14dea7ed0e7c968946787288:/field-parse.c diff --git a/field-parse.c b/field-parse.c index 0a09e57..5f9092a 100644 --- a/field-parse.c +++ b/field-parse.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: field-parse.c,v 1.1 2004/03/27 17:54:11 mdw Exp $ + * $Id: field-parse.c,v 1.4 2004/04/08 01:36:15 mdw Exp $ * * Parse field descriptions * @@ -27,14 +27,6 @@ * MA 02111-1307, USA. */ -/*----- Revision history --------------------------------------------------* - * - * $Log: field-parse.c,v $ - * Revision 1.1 2004/03/27 17:54:11 mdw - * Standard curves and curve checking. - * - */ - /*----- Header files ------------------------------------------------------*/ #include "field.h" @@ -56,30 +48,39 @@ field *field_parse(qd_parse *qd) { - field *f; - mp *m = MP_NEW; + field *f = 0; + mp *m = MP_NEW, *b = MP_NEW; - switch (qd_enum(qd, "prime,niceprime,binpoly")) { + switch (qd_enum(qd, "prime,niceprime,binpoly,binnorm")) { case 0: qd_delim(qd, ':'); - if ((m = qd_getmp(qd)) == 0) return (0); + if ((m = qd_getmp(qd)) == 0) goto done; f = field_prime(m); break; case 1: qd_delim(qd, ':'); - if ((m = qd_getmp(qd)) == 0) return (0); + if ((m = qd_getmp(qd)) == 0) goto done; f = field_niceprime(m); break; case 2: qd_delim(qd, ':'); - if ((m = qd_getmp(qd)) == 0) return (0); + if ((m = qd_getmp(qd)) == 0) goto done; f = field_binpoly(m); break; - default: - f = 0; + case 3: + qd_delim(qd, ':'); + if ((m = qd_getmp(qd)) == 0) goto done; + qd_delim(qd, ','); + if ((b = qd_getmp(qd)) == 0) goto done; + f = field_binnorm(m, b); break; + default: + goto done; } + if (!f) qd->e = "bad field parameters"; +done: mp_drop(m); + mp_drop(b); return (f); }