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
,