summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/stdlib')
-rw-r--r--lib/libc/stdlib/atof.c12
-rw-r--r--lib/libc/stdlib/atoi.c11
-rw-r--r--lib/libc/stdlib/atol.38
-rw-r--r--lib/libc/stdlib/atol.c12
-rw-r--r--lib/libc/stdlib/atoll.c10
5 files changed, 44 insertions, 9 deletions
diff --git a/lib/libc/stdlib/atof.c b/lib/libc/stdlib/atof.c
index 130e285..e6dffa9 100644
--- a/lib/libc/stdlib/atof.c
+++ b/lib/libc/stdlib/atof.c
@@ -29,18 +29,26 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)atof.c 8.1 (Berkeley) 6/4/93";
#endif /* LIBC_SCCS and not lint */
+#include <errno.h>
#include <stdlib.h>
-#include <stddef.h>
double
atof(ascii)
const char *ascii;
{
- return (strtod(ascii, NULL));
+ double r;
+ int saverr;
+
+ saverr = errno;
+ r = strtod(ascii, (char **)NULL);
+ errno = saverr;
+ return r;
}
diff --git a/lib/libc/stdlib/atoi.c b/lib/libc/stdlib/atoi.c
index 48e508a..8e98a96e7 100644
--- a/lib/libc/stdlib/atoi.c
+++ b/lib/libc/stdlib/atoi.c
@@ -29,18 +29,25 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)atoi.c 8.1 (Berkeley) 6/4/93";
#endif /* LIBC_SCCS and not lint */
+#include <errno.h>
#include <stdlib.h>
-#include <stddef.h>
int
atoi(str)
const char *str;
{
- return((int)strtol(str, (char **)NULL, 10));
+ int r, saverr;
+
+ saverr = errno;
+ r = (int)strtol(str, (char **)NULL, 10);
+ errno = saverr;
+ return r;
}
diff --git a/lib/libc/stdlib/atol.3 b/lib/libc/stdlib/atol.3
index d23f42d..9ba67cd 100644
--- a/lib/libc/stdlib/atol.3
+++ b/lib/libc/stdlib/atol.3
@@ -82,6 +82,13 @@ representation.
It is equivalent to:
.Pp
.Dl "strtoll(nptr, (char **)NULL, 10);"
+.Sh ERRORS
+The
+.Fn atol
+function does not detect errors.
+The
+.Fn atoll
+function does not detect errors.
.Sh SEE ALSO
.Xr atof 3 ,
.Xr atoi 3 ,
@@ -94,7 +101,6 @@ The
function
conforms to
.St -isoC .
-.Pp
The
.Fn atoll
function
diff --git a/lib/libc/stdlib/atol.c b/lib/libc/stdlib/atol.c
index 31bcaa6..b85b8b2 100644
--- a/lib/libc/stdlib/atol.c
+++ b/lib/libc/stdlib/atol.c
@@ -29,18 +29,26 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)atol.c 8.1 (Berkeley) 6/4/93";
#endif /* LIBC_SCCS and not lint */
-#include <stddef.h>
+#include <errno.h>
#include <stdlib.h>
long
atol(str)
const char *str;
{
- return(strtol(str, (char **)NULL, 10));
+ long r;
+ int saverr;
+
+ saverr = errno;
+ r = strtol(str, (char **)NULL, 10);
+ errno = saverr;
+ return r;
}
diff --git a/lib/libc/stdlib/atoll.c b/lib/libc/stdlib/atoll.c
index 72ca59a..c0a7212 100644
--- a/lib/libc/stdlib/atoll.c
+++ b/lib/libc/stdlib/atoll.c
@@ -33,12 +33,18 @@
* $FreeBSD$
*/
-#include <stddef.h>
+#include <errno.h>
#include <stdlib.h>
long long
atoll(str)
const char *str;
{
- return(strtoll(str, (char **)NULL, 10));
+ long long r;
+ int saverr;
+
+ saverr = errno;
+ r = strtoll(str, (char **)NULL, 10);
+ errno = saverr;
+ return r;
}
OpenPOWER on IntegriCloud