Merge pull request #578 from PX4/fix_mp_prime_strong_lucas_lefridge_compilation
[libtommath.git] / mp_fwrite.c
blob8ea9d327eee646981b7da06643bd992a84691c59
1 #include "tommath_private.h"
2 #ifdef MP_FWRITE_C
3 /* LibTomMath, multiple-precision integer library -- Tom St Denis */
4 /* SPDX-License-Identifier: Unlicense */
6 #ifndef MP_NO_FILE
7 mp_err mp_fwrite(const mp_int *a, int radix, FILE *stream)
9 char *buf;
10 mp_err err;
11 size_t size, written;
13 if ((err = mp_radix_size_overestimate(a, radix, &size)) != MP_OKAY) {
14 return err;
17 buf = (char *) MP_MALLOC(size);
18 if (buf == NULL) {
19 return MP_MEM;
22 if ((err = mp_to_radix(a, buf, size, &written, radix)) == MP_OKAY) {
23 written--;
24 if (fwrite(buf, written, 1uL, stream) != 1uL) {
25 err = MP_ERR;
29 MP_FREE_BUF(buf, size);
30 return err;
32 #endif
34 #endif