diff options
| -rw-r--r-- | libc/stdio/_fpmaxtostr.c | 27 | ||||
| -rw-r--r-- | libc/stdio/_fpmaxtostr.h | 41 | 
2 files changed, 46 insertions, 22 deletions
| diff --git a/libc/stdio/_fpmaxtostr.c b/libc/stdio/_fpmaxtostr.c index 1332a20e7..80b422d60 100644 --- a/libc/stdio/_fpmaxtostr.c +++ b/libc/stdio/_fpmaxtostr.c @@ -1,6 +1,7 @@ -/* Copyright (C) 2004       Manuel Novoa III    <mjn3@codepoet.org> +/* + * Copyright (C) 2000,2001,2003,2004	Manuel Novoa III <mjn3@codepoet.org>   * - * GNU Library General Public License (LGPL) version 2 or later. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   *   * Dedicated to Toni.  See uClibc/DEDICATION.mjn3 for details.   */ @@ -9,15 +10,9 @@  #include <printf.h>  #include <float.h>  #include <locale.h> -#include <bits/uClibc_fpmax.h> +#include "_fpmaxtostr.h" - -typedef size_t (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len, -								intptr_t buf); - - -/* Copyright (C) 2000, 2001, 2003      Manuel Novoa III - * +/*   * Function:   *   *     ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info, @@ -40,7 +35,6 @@ typedef size_t (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len,   * It should also be fairly portable, as no assumptions are made about the   * bit-layout of doubles.  Of course, that does make it less efficient than   * it could be. - *   */  /*****************************************************************************/ @@ -67,9 +61,6 @@ typedef size_t (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len,  #define NUM_HEX_DIGITS      ((FPMAX_MANT_DIG + 3)/ 4) -/* WARNING: Adjust _fp_out_wide() below if this changes! */ -/* With 32 bit ints, we can get 9 decimal digits per block. */ -#define DIGITS_PER_BLOCK     9  #define HEX_DIGITS_PER_BLOCK 8  /* Maximum number of subcases to output double is... @@ -87,15 +78,9 @@ typedef size_t (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len,  /*****************************************************************************/ -#define NUM_DIGIT_BLOCKS   ((DECIMAL_DIG+DIGITS_PER_BLOCK-1)/DIGITS_PER_BLOCK)  #define NUM_HEX_DIGIT_BLOCKS \     ((NUM_HEX_DIGITS+HEX_DIGITS_PER_BLOCK-1)/HEX_DIGITS_PER_BLOCK) -/* WARNING: Adjust _fp_out_wide() below if this changes! */ - -/* extra space for '-', '.', 'e+###', and nul */ -#define BUF_SIZE  ( 3 + NUM_DIGIT_BLOCKS * DIGITS_PER_BLOCK ) -  /*****************************************************************************/  static const char fmt[] = "inf\0INF\0nan\0NAN\0.\0,"; @@ -200,8 +185,6 @@ static const __fpmax_t exp16_table[] = {  #define FPO_STR_PREC    'p'  ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info, -					__fp_outfunc_t fp_outfunc) attribute_hidden; -ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,  					__fp_outfunc_t fp_outfunc)  {  #ifdef __UCLIBC_HAS_HEXADECIMAL_FLOATS__ diff --git a/libc/stdio/_fpmaxtostr.h b/libc/stdio/_fpmaxtostr.h new file mode 100644 index 000000000..5adb9312a --- /dev/null +++ b/libc/stdio/_fpmaxtostr.h @@ -0,0 +1,41 @@ +/* vi: set sw=4 ts=4: */ +/* + * Copyright (C) 2000,2001,2003,2004	Manuel Novoa III <mjn3@codepoet.org> + * + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. + * + * Dedicated to Toni.  See uClibc/DEDICATION.mjn3 for details. + */ + +#ifndef _FPMAXTOSTR_H +#define _FPMAXTOSTR_H 1 + +#include <features.h> +#ifdef __UCLIBC_HAS_FLOATS__ + +#define __need_size_t +#include <stddef.h> +#include <stdint.h> +#include <stdio.h> +#include <printf.h> +#include <sys/types.h> +#include <float.h> +#include <bits/uClibc_fpmax.h> + +/* WARNING: Adjust _fp_out_wide() in _vfprintf.c if this changes! */ +/* With 32 bit ints, we can get 9 decimal digits per block. */ +#define DIGITS_PER_BLOCK     9 + +#define NUM_DIGIT_BLOCKS   ((DECIMAL_DIG+DIGITS_PER_BLOCK-1)/DIGITS_PER_BLOCK) + +/* WARNING: Adjust _fp_out_wide() in _vfprintf.c if this changes! */ +/* extra space for '-', '.', 'e+###', and nul */ +#define BUF_SIZE  ( 3 + NUM_DIGIT_BLOCKS * DIGITS_PER_BLOCK ) + +typedef size_t (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len, intptr_t buf); + +extern ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info, +					__fp_outfunc_t fp_outfunc) attribute_hidden; + +#endif /* __UCLIBC_HAS_FLOATS__ */ +#endif /* _FPMAXTOSTR_H */ | 
