1 /* __gmp_fprintf_funs -- support for formatted output to FILEs.
3 THE FUNCTIONS IN THIS FILE ARE FOR INTERNAL USE ONLY. THEY'RE ALMOST
4 CERTAIN TO BE SUBJECT TO INCOMPATIBLE CHANGES OR DISAPPEAR COMPLETELY IN
5 FUTURE GNU MP RELEASES.
7 Copyright 2001 Free Software Foundation, Inc.
9 This file is part of the GNU MP Library.
11 The GNU MP Library is free software; you can redistribute it and/or modify
12 it under the terms of the GNU Lesser General Public License as published by
13 the Free Software Foundation; either version 3 of the License, or (at your
14 option) any later version.
16 The GNU MP Library is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
19 License for more details.
21 You should have received a copy of the GNU Lesser General Public License
22 along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
38 /* SunOS 4 stdio.h doesn't provide a prototype for this */
39 #if ! HAVE_DECL_VFPRINTF
40 int vfprintf __GMP_PROTO ((FILE *, const char *, va_list));
45 gmp_fprintf_memory (FILE *fp, const char *str, size_t len)
47 return fwrite (str, 1, len, fp);
50 /* glibc putc is a function, at least when it's in multi-threaded mode or
51 some such, so fwrite chunks instead of making many calls. */
53 gmp_fprintf_reps (FILE *fp, int c, int reps)
59 memset (buf, c, MIN (reps, sizeof (buf)));
60 for (i = reps; i > 0; i -= sizeof (buf))
62 piece = MIN (i, sizeof (buf));
63 ret = fwrite (buf, 1, piece, fp);
66 ASSERT (ret == piece);
72 const struct doprnt_funs_t __gmp_fprintf_funs = {
73 (doprnt_format_t) vfprintf,
74 (doprnt_memory_t) gmp_fprintf_memory,
75 (doprnt_reps_t) gmp_fprintf_reps,