aboutsummaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1998-12-24 12:57:23 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1998-12-24 12:57:23 -0200
commita881abfd1e2097ea23b586a93c6164f0f4c2cdcd (patch)
tree8b838083828c421cb922b6b0f47d848009d2ba90 /lvm.c
parentd3ac7075a25a28d2968efd5600041dddcdb8a9d2 (diff)
downloadlua-a881abfd1e2097ea23b586a93c6164f0f4c2cdcd.tar.gz
lua-a881abfd1e2097ea23b586a93c6164f0f4c2cdcd.tar.bz2
lua-a881abfd1e2097ea23b586a93c6164f0f4c2cdcd.zip
"strtod" is cleaner than "scanf" for this job.
Diffstat (limited to 'lvm.c')
-rw-r--r--lvm.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/lvm.c b/lvm.c
index 586267e7..9fd7c5d0 100644
--- a/lvm.c
+++ b/lvm.c
@@ -1,11 +1,13 @@
1/* 1/*
2** $Id: lvm.c,v 1.31 1998/07/12 16:16:43 roberto Exp roberto $ 2** $Id: lvm.c,v 1.32 1998/12/03 15:45:15 roberto Exp roberto $
3** Lua virtual machine 3** Lua virtual machine
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
6 6
7 7
8#include <ctype.h>
8#include <stdio.h> 9#include <stdio.h>
10#include <stdlib.h>
9#include <string.h> 11#include <string.h>
10 12
11#include "lauxlib.h" 13#include "lauxlib.h"
@@ -24,6 +26,7 @@
24 26
25#ifdef OLD_ANSI 27#ifdef OLD_ANSI
26#define strcoll(a,b) strcmp(a,b) 28#define strcoll(a,b) strcmp(a,b)
29double strtod();
27#endif 30#endif
28 31
29 32
@@ -48,19 +51,19 @@ static TaggedString *strconc (TaggedString *l, TaggedString *r)
48} 51}
49 52
50 53
51int luaV_tonumber (TObject *obj) 54int luaV_tonumber (TObject *obj) {
52{ /* LUA_NUMBER */ 55 /* LUA_NUMBER */
53 double t;
54 char c;
55 if (ttype(obj) != LUA_T_STRING) 56 if (ttype(obj) != LUA_T_STRING)
56 return 1; 57 return 1;
57 else if (sscanf(svalue(obj), "%lf %c",&t, &c) == 1) { 58 else {
59 char *e;
60 double t = strtod(svalue(obj), &e);
61 while (isspace(*e)) e++;
62 if (*e != '\0') return 2;
58 nvalue(obj) = (real)t; 63 nvalue(obj) = (real)t;
59 ttype(obj) = LUA_T_NUMBER; 64 ttype(obj) = LUA_T_NUMBER;
60 return 0; 65 return 0;
61 } 66 }
62 else
63 return 2;
64} 67}
65 68
66 69