summaryrefslogtreecommitdiff
path: root/strlib.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1995-02-06 17:37:51 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1995-02-06 17:37:51 -0200
commit2d053126e642bc1770ccc426ef0a95eb13f2085c (patch)
tree05f35d5b215a9cbd21433ad45a86434e56ec0937 /strlib.c
parent3203460c9e44f44e4586ecee6b1cb528db9150c7 (diff)
downloadlua-github-2d053126e642bc1770ccc426ef0a95eb13f2085c.tar.gz
new function for copy strings (strdup is not ANSI)
Diffstat (limited to 'strlib.c')
-rw-r--r--strlib.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/strlib.c b/strlib.c
index f6de70fc..329a7937 100644
--- a/strlib.c
+++ b/strlib.c
@@ -3,16 +3,27 @@
** String library to LUA
*/
-char *rcs_strlib="$Id: strlib.c,v 1.10 1995/02/02 18:54:58 roberto Exp $";
+char *rcs_strlib="$Id: strlib.c,v 1.11 1995/02/02 20:05:37 roberto Exp roberto $";
#include <string.h>
-#include <strings.h>
#include <stdlib.h>
#include <ctype.h>
#include "lua.h"
#include "lualib.h"
+
+static char *newstring (lua_Object o)
+{
+ char *s = lua_getstring(o);
+ char *ns = (char *)malloc(strlen(s)+1);
+ if (ns == 0)
+ lua_error("not enough memory for new string");
+ strcpy(ns, s);
+ return ns;
+}
+
+
/*
** Return the position of the first caracter of a substring into a string
** LUA interface:
@@ -86,7 +97,7 @@ static void str_sub (void)
lua_error ("incorrect arguments to function `strsub'");
if (o3 != LUA_NOOBJECT && !lua_isnumber(o3))
lua_error ("incorrect third argument to function `strsub'");
- s = lua_copystring(o1);
+ s = newstring(o1);
start = lua_getnumber (o2);
end = o3 == LUA_NOOBJECT ? strlen(s) : lua_getnumber (o3);
if (end < start || start < 1 || end > strlen(s))
@@ -110,7 +121,7 @@ static void str_lower (void)
lua_Object o = lua_getparam (1);
if (!lua_isstring(o))
lua_error ("incorrect arguments to function `strlower'");
- c = s = lua_copystring(o);
+ c = s = newstring(o);
while (*c != 0)
{
*c = tolower(*c);
@@ -132,7 +143,7 @@ static void str_upper (void)
lua_Object o = lua_getparam (1);
if (!lua_isstring(o))
lua_error ("incorrect arguments to function `strlower'");
- c = s = lua_copystring(o);
+ c = s = newstring(o);
while (*c != 0)
{
*c = toupper(*c);