diff options
author | Antti-Juhani Kaijanaho <ajk@debian.org> | 2006-01-28 21:55:00 +0100 |
---|---|---|
committer | Antti-Juhani Kaijanaho <ajk@debian.org> | 2006-01-28 21:55:00 +0100 |
commit | 7e9c9d1de493eab760c8a2269a79f1a3330f8790 (patch) | |
tree | 7b7ca9ad8795515450afcf275b0deae68bbca2d9 /paragraph.c | |
parent | 09b08d086dc36a2575ed26210e6f39f71c7a446f (diff) | |
download | dctrl-tools-7e9c9d1de493eab760c8a2269a79f1a3330f8790.tar.gz |
Import 2.5
Diffstat (limited to 'paragraph.c')
-rw-r--r-- | paragraph.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/paragraph.c b/paragraph.c index 91362de..9cba3da 100644 --- a/paragraph.c +++ b/paragraph.c @@ -16,6 +16,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include <gmp.h> +#include <string.h> #include "msg.h" #include "paragraph.h" #include "strutil.h" @@ -27,12 +29,15 @@ void parse_int(FSAF * fp, struct field_data * fd) struct fsaf_read_rv rd = fsaf_read(fp, fd->start, len); assert(rd.len == len); fd->int_valid = false; - bool ok = str2intmax(&fd->parsed, rd.b, len); - if (!ok) { + char * s = strndup(rd.b, len); + if (s == 0) fatal_enomem(0); + int r = mpz_set_str(fd->parsed, s, 10); + free(s); + fd->int_valid = (r == 0); + if (!fd->int_valid) { message(L_INFORMATIONAL, _("parse of a numeric field failed"), 0); } - fd->int_valid = ok; } void para_init(para_t * para, FSAF * fp, fieldtrie_t * trie) @@ -42,6 +47,9 @@ void para_init(para_t * para, FSAF * fp, fieldtrie_t * trie) para->start = 0; para->end = 0; para->eof = false; + for (size_t i = 0; i < MAX_FIELDS; i++) { + mpz_init(para->fields[i].parsed); + } para_parse_next(para); } |