diff options
author | markm <markm@FreeBSD.org> | 1995-11-12 14:40:41 +0000 |
---|---|---|
committer | markm <markm@FreeBSD.org> | 1995-11-12 14:40:41 +0000 |
commit | d938bb78837327b46dc34873a6eb60c002605808 (patch) | |
tree | d720c213b0c2f268c17d14276e809e876bd37dc8 /gnu/lib/libgmp/min.c | |
parent | 7e662b2efdf7b11bed05bdd944746d7b7d0e56af (diff) | |
download | FreeBSD-src-d938bb78837327b46dc34873a6eb60c002605808.zip FreeBSD-src-d938bb78837327b46dc34873a6eb60c002605808.tar.gz |
GNU MP (Multiprecision) library. This is needed by secure RPC (being
done by Bill Paul) and various other BSD programs.
Obtained from:FSF
Diffstat (limited to 'gnu/lib/libgmp/min.c')
-rw-r--r-- | gnu/lib/libgmp/min.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/gnu/lib/libgmp/min.c b/gnu/lib/libgmp/min.c new file mode 100644 index 0000000..2bc7d6d --- /dev/null +++ b/gnu/lib/libgmp/min.c @@ -0,0 +1,64 @@ +/* min(MINT) -- Do decimal input from standard input and store result in + MINT. + +Copyright (C) 1991 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +The GNU MP Library 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 General Public License for more details. + +You should have received a copy of the GNU General Public License +along with the GNU MP Library; see the file COPYING. If not, write to +the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#include <stdio.h> +#include <ctype.h> +#include "mp.h" +#include "gmp.h" +#include "gmp-impl.h" + +void +#ifdef __STDC__ +min (MINT *x) +#else +min (x) + MINT *x; +#endif +{ + char *str; + size_t str_size; + size_t i; + int c; + + str_size = 100; + str = (char *) (*_mp_allocate_func) (str_size); + + for (i = 0; ; i++) + { + if (i >= str_size) + { + size_t old_str_size = str_size; + str_size = str_size * 3 / 2; + str = (char *) (*_mp_reallocate_func) (str, old_str_size, str_size); + } + c = getc (stdin); + if (!(isdigit(c) || c == ' ' || c == '\t')) + break; + str[i] = c; + } + + ungetc (c, stdin); + + str[i] = 0; + _mpz_set_str (x, str, 10); + + (*_mp_free_func) (str, str_size); +} |