X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/432c4e184d44704511a5991b80224a87cb1d4613..908ebb29ff621f582b34d48fd4278b60b78379b6:/field-parse.c diff --git a/field-parse.c b/field-parse.c index 0a09e57..cbbd246 100644 --- a/field-parse.c +++ b/field-parse.c @@ -1,13 +1,13 @@ /* -*-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 * * (c) 2004 Straylight/Edgeware */ -/*----- Licensing notice --------------------------------------------------* +/*----- Licensing notice --------------------------------------------------* * * This file is part of Catacomb. * @@ -15,26 +15,18 @@ * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. - * + * * Catacomb is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. - * + * * You should have received a copy of the GNU Library General Public * License along with Catacomb; if not, write to the Free * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, * 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); }