aboutsummaryrefslogtreecommitdiff
path: root/lstrlib.c
diff options
context:
space:
mode:
Diffstat (limited to 'lstrlib.c')
-rw-r--r--lstrlib.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/lstrlib.c b/lstrlib.c
index 7340e94c..e239e2fb 100644
--- a/lstrlib.c
+++ b/lstrlib.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lstrlib.c,v 1.98 2003/04/03 13:35:34 roberto Exp roberto $ 2** $Id: lstrlib.c,v 1.99 2003/05/14 14:35:54 roberto Exp roberto $
3** Standard library for string operations and pattern-matching 3** Standard library for string operations and pattern-matching
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -25,13 +25,13 @@
25#endif 25#endif
26 26
27 27
28typedef long sint32; /* a signed version for size_t */ 28typedef lua_Integer sint32; /* a signed version for size_t */
29 29
30 30
31static int str_len (lua_State *L) { 31static int str_len (lua_State *L) {
32 size_t l; 32 size_t l;
33 luaL_checklstring(L, 1, &l); 33 luaL_checklstring(L, 1, &l);
34 lua_pushnumber(L, (lua_Number)l); 34 lua_pushinteger(L, l);
35 return 1; 35 return 1;
36} 36}
37 37
@@ -45,8 +45,8 @@ static sint32 posrelat (sint32 pos, size_t len) {
45static int str_sub (lua_State *L) { 45static int str_sub (lua_State *L) {
46 size_t l; 46 size_t l;
47 const char *s = luaL_checklstring(L, 1, &l); 47 const char *s = luaL_checklstring(L, 1, &l);
48 sint32 start = posrelat(luaL_checklong(L, 2), l); 48 sint32 start = posrelat(luaL_checkinteger(L, 2), l);
49 sint32 end = posrelat(luaL_optlong(L, 3, -1), l); 49 sint32 end = posrelat(luaL_optinteger(L, 3, -1), l);
50 if (start < 1) start = 1; 50 if (start < 1) start = 1;
51 if (end > (sint32)l) end = (sint32)l; 51 if (end > (sint32)l) end = (sint32)l;
52 if (start <= end) 52 if (start <= end)
@@ -108,10 +108,10 @@ static int str_rep (lua_State *L) {
108static int str_byte (lua_State *L) { 108static int str_byte (lua_State *L) {
109 size_t l; 109 size_t l;
110 const char *s = luaL_checklstring(L, 1, &l); 110 const char *s = luaL_checklstring(L, 1, &l);
111 sint32 pos = posrelat(luaL_optlong(L, 2, 1), l); 111 sint32 pos = posrelat(luaL_optinteger(L, 2, 1), l);
112 if (pos <= 0 || (size_t)(pos) > l) /* index out of range? */ 112 if (pos <= 0 || (size_t)(pos) > l) /* index out of range? */
113 return 0; /* no answer */ 113 return 0; /* no answer */
114 lua_pushnumber(L, uchar(s[pos-1])); 114 lua_pushinteger(L, uchar(s[pos-1]));
115 return 1; 115 return 1;
116} 116}
117 117
@@ -463,7 +463,7 @@ static void push_onecapture (MatchState *ms, int i) {
463 int l = ms->capture[i].len; 463 int l = ms->capture[i].len;
464 if (l == CAP_UNFINISHED) luaL_error(ms->L, "unfinished capture"); 464 if (l == CAP_UNFINISHED) luaL_error(ms->L, "unfinished capture");
465 if (l == CAP_POSITION) 465 if (l == CAP_POSITION)
466 lua_pushnumber(ms->L, (lua_Number)(ms->capture[i].init - ms->src_init + 1)); 466 lua_pushinteger(ms->L, ms->capture[i].init - ms->src_init + 1);
467 else 467 else
468 lua_pushlstring(ms->L, ms->capture[i].init, l); 468 lua_pushlstring(ms->L, ms->capture[i].init, l);
469} 469}
@@ -488,7 +488,7 @@ static int str_find (lua_State *L) {
488 size_t l1, l2; 488 size_t l1, l2;
489 const char *s = luaL_checklstring(L, 1, &l1); 489 const char *s = luaL_checklstring(L, 1, &l1);
490 const char *p = luaL_checklstring(L, 2, &l2); 490 const char *p = luaL_checklstring(L, 2, &l2);
491 sint32 init = posrelat(luaL_optlong(L, 3, 1), l1) - 1; 491 sint32 init = posrelat(luaL_optinteger(L, 3, 1), l1) - 1;
492 if (init < 0) init = 0; 492 if (init < 0) init = 0;
493 else if ((size_t)(init) > l1) init = (sint32)l1; 493 else if ((size_t)(init) > l1) init = (sint32)l1;
494 if (lua_toboolean(L, 4) || /* explicit request? */ 494 if (lua_toboolean(L, 4) || /* explicit request? */
@@ -496,8 +496,8 @@ static int str_find (lua_State *L) {
496 /* do a plain search */ 496 /* do a plain search */
497 const char *s2 = lmemfind(s+init, l1-init, p, l2); 497 const char *s2 = lmemfind(s+init, l1-init, p, l2);
498 if (s2) { 498 if (s2) {
499 lua_pushnumber(L, (lua_Number)(s2-s+1)); 499 lua_pushinteger(L, s2-s+1);
500 lua_pushnumber(L, (lua_Number)(s2-s+l2)); 500 lua_pushinteger(L, s2-s+l2);
501 return 2; 501 return 2;
502 } 502 }
503 } 503 }
@@ -512,8 +512,8 @@ static int str_find (lua_State *L) {
512 const char *res; 512 const char *res;
513 ms.level = 0; 513 ms.level = 0;
514 if ((res=match(&ms, s1, p)) != NULL) { 514 if ((res=match(&ms, s1, p)) != NULL) {
515 lua_pushnumber(L, (lua_Number)(s1-s+1)); /* start */ 515 lua_pushinteger(L, s1-s+1); /* start */
516 lua_pushnumber(L, (lua_Number)(res-s)); /* end */ 516 lua_pushinteger(L, res-s); /* end */
517 return push_captures(&ms, NULL, 0) + 2; 517 return push_captures(&ms, NULL, 0) + 2;
518 } 518 }
519 } while (s1++<ms.src_end && !anchor); 519 } while (s1++<ms.src_end && !anchor);
@@ -532,7 +532,7 @@ static int gfind_aux (lua_State *L) {
532 ms.L = L; 532 ms.L = L;
533 ms.src_init = s; 533 ms.src_init = s;
534 ms.src_end = s+ls; 534 ms.src_end = s+ls;
535 for (src = s + (size_t)lua_tonumber(L, lua_upvalueindex(3)); 535 for (src = s + (size_t)lua_tointeger(L, lua_upvalueindex(3));
536 src <= ms.src_end; 536 src <= ms.src_end;
537 src++) { 537 src++) {
538 const char *e; 538 const char *e;
@@ -540,7 +540,7 @@ static int gfind_aux (lua_State *L) {
540 if ((e = match(&ms, src, p)) != NULL) { 540 if ((e = match(&ms, src, p)) != NULL) {
541 int newstart = e-s; 541 int newstart = e-s;
542 if (e == src) newstart++; /* empty match? go at least one position */ 542 if (e == src) newstart++; /* empty match? go at least one position */
543 lua_pushnumber(L, (lua_Number)newstart); 543 lua_pushinteger(L, newstart);
544 lua_replace(L, lua_upvalueindex(3)); 544 lua_replace(L, lua_upvalueindex(3));
545 return push_captures(&ms, src, e); 545 return push_captures(&ms, src, e);
546 } 546 }
@@ -553,7 +553,7 @@ static int gfind (lua_State *L) {
553 luaL_checkstring(L, 1); 553 luaL_checkstring(L, 1);
554 luaL_checkstring(L, 2); 554 luaL_checkstring(L, 2);
555 lua_settop(L, 2); 555 lua_settop(L, 2);
556 lua_pushnumber(L, 0); 556 lua_pushinteger(L, 0);
557 lua_pushcclosure(L, gfind_aux, 3); 557 lua_pushcclosure(L, gfind_aux, 3);
558 return 1; 558 return 1;
559} 559}
@@ -627,7 +627,7 @@ static int str_gsub (lua_State *L) {
627 } 627 }
628 luaL_addlstring(&b, src, ms.src_end-src); 628 luaL_addlstring(&b, src, ms.src_end-src);
629 luaL_pushresult(&b); 629 luaL_pushresult(&b);
630 lua_pushnumber(L, (lua_Number)n); /* number of substitutions */ 630 lua_pushinteger(L, n); /* number of substitutions */
631 return 2; 631 return 2;
632} 632}
633 633