(distribute): Add README.utmpd.
[kopensolaris-gnu/glibc.git] / misc / efgcvt.c
1 /* Compatibility functions for floating point formatting.
2    Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Library General Public License as
7    published by the Free Software Foundation; either version 2 of the
8    License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Library General Public License for more details.
14
15    You should have received a copy of the GNU Library General Public
16    License along with the GNU C Library; see the file COPYING.LIB.  If not,
17    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18    Boston, MA 02111-1307, USA.  */
19
20 #include <stdio.h>
21 #include <stdlib.h>
22 #include <float.h>
23
24 #ifndef FLOAT_TYPE
25 #define FLOAT_TYPE double
26 #define FUNC_PREFIX
27 #define FLOAT_FMT_FLAG
28 #define MAXDIG (DBL_DIG + DBL_MAX_10_EXP)
29 #endif
30
31 #define APPEND(a, b) APPEND2 (a, b)
32 #define APPEND2(a, b) a##b
33
34
35 char *
36 APPEND (FUNC_PREFIX, fcvt) (value, ndigit, decpt, sign)
37      FLOAT_TYPE value;
38      int ndigit, *decpt, *sign;
39 {
40   static char buf[MAXDIG];
41
42   (void) fcvt_r (value, ndigit, decpt, sign, buf, sizeof buf);
43
44   return buf;
45 }
46
47 char *
48 APPEND (FUNC_PREFIX, ecvt) (value, ndigit, decpt, sign)
49      FLOAT_TYPE value;
50      int ndigit, *decpt, *sign;
51 {
52   static char buf[MAXDIG];
53
54   (void) ecvt_r (value, ndigit, decpt, sign, buf, sizeof buf);
55
56   return buf;
57 }
58
59 char *
60 APPEND (FUNC_PREFIX, gcvt) (value, ndigit, buf)
61      FLOAT_TYPE value;
62      int ndigit;
63      char *buf;
64 {
65   sprintf (buf, "%.*" FLOAT_FMT_FLAG "g", ndigit, value);
66   return buf;
67 }