From 72659a06050632da1a9b4c492302be46ac283f6b Mon Sep 17 00:00:00 2001
From: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Wed, 28 Nov 2001 18:13:13 -0200
Subject: no more explicit support for wide-chars; too much troble...

---
 lstrlib.c | 277 ++++++++++++++++++++++++++++++++------------------------------
 1 file changed, 141 insertions(+), 136 deletions(-)

(limited to 'lstrlib.c')

diff --git a/lstrlib.c b/lstrlib.c
index 9a6f04d1..8ce5e9ba 100644
--- a/lstrlib.c
+++ b/lstrlib.c
@@ -1,5 +1,5 @@
 /*
-** $Id: lstrlib.c,v 1.72 2001/10/16 17:41:43 roberto Exp $
+** $Id: lstrlib.c,v 1.73 2001/10/26 17:33:30 roberto Exp $
 ** Standard library for string operations and pattern-matching
 ** See Copyright Notice in lua.h
 */
@@ -11,13 +11,18 @@
 #include <stdlib.h>
 #include <string.h>
 
-#define LUA_PRIVATE
 #include "lua.h"
 
 #include "lauxlib.h"
 #include "lualib.h"
 
 
+/* macro to `unsign' a character */
+#ifndef uchar
+#define uchar(c)        ((unsigned char)(c))
+#endif
+
+
 typedef long sint32;	/* a signed version for size_t */
 
 
@@ -37,14 +42,14 @@ static sint32 posrelat (sint32 pos, size_t len) {
 
 static int str_sub (lua_State *L) {
   size_t l;
-  const l_char *s = luaL_check_lstr(L, 1, &l);
+  const char *s = luaL_check_lstr(L, 1, &l);
   sint32 start = posrelat(luaL_check_long(L, 2), l);
   sint32 end = posrelat(luaL_opt_long(L, 3, -1), l);
   if (start < 1) start = 1;
   if (end > (sint32)l) end = l;
   if (start <= end)
     lua_pushlstring(L, s+start-1, end-start+1);
-  else lua_pushliteral(L, l_s(""));
+  else lua_pushliteral(L, "");
   return 1;
 }
 
@@ -53,7 +58,7 @@ static int str_lower (lua_State *L) {
   size_t l;
   size_t i;
   luaL_Buffer b;
-  const l_char *s = luaL_check_lstr(L, 1, &l);
+  const char *s = luaL_check_lstr(L, 1, &l);
   luaL_buffinit(L, &b);
   for (i=0; i<l; i++)
     luaL_putchar(&b, tolower(uchar(s[i])));
@@ -66,7 +71,7 @@ static int str_upper (lua_State *L) {
   size_t l;
   size_t i;
   luaL_Buffer b;
-  const l_char *s = luaL_check_lstr(L, 1, &l);
+  const char *s = luaL_check_lstr(L, 1, &l);
   luaL_buffinit(L, &b);
   for (i=0; i<l; i++)
     luaL_putchar(&b, toupper(uchar(s[i])));
@@ -77,7 +82,7 @@ static int str_upper (lua_State *L) {
 static int str_rep (lua_State *L) {
   size_t l;
   luaL_Buffer b;
-  const l_char *s = luaL_check_lstr(L, 1, &l);
+  const char *s = luaL_check_lstr(L, 1, &l);
   int n = luaL_check_int(L, 2);
   luaL_buffinit(L, &b);
   while (n-- > 0)
@@ -108,9 +113,9 @@ static int str_concat (lua_State *L) {
 
 static int str_byte (lua_State *L) {
   size_t l;
-  const l_char *s = luaL_check_lstr(L, 1, &l);
+  const char *s = luaL_check_lstr(L, 1, &l);
   sint32 pos = posrelat(luaL_opt_long(L, 2, 1), l);
-  luaL_arg_check(L, 0 < pos && (size_t)(pos) <= l, 2,  l_s("out of range"));
+  luaL_arg_check(L, 0 < pos && (size_t)(pos) <= l, 2,  "out of range");
   lua_pushnumber(L, uchar(s[pos-1]));
   return 1;
 }
@@ -123,7 +128,7 @@ static int str_char (lua_State *L) {
   luaL_buffinit(L, &b);
   for (i=1; i<=n; i++) {
     int c = luaL_check_int(L, i);
-    luaL_arg_check(L, uchar(c) == c, i, l_s("invalid value"));
+    luaL_arg_check(L, uchar(c) == c, i, "invalid value");
     luaL_putchar(&b, uchar(c));
   }
   luaL_pushresult(&b);
@@ -147,25 +152,25 @@ static int str_char (lua_State *L) {
 #define CAP_POSITION	(-2)
 
 typedef struct MatchState {
-  const l_char *src_init;  /* init of source string */
-  const l_char *src_end;  /* end (`\0') of source string */
+  const char *src_init;  /* init of source string */
+  const char *src_end;  /* end (`\0') of source string */
   int level;  /* total number of captures (finished or unfinished) */
   struct {
-    const l_char *init;
+    const char *init;
     sint32 len;
   } capture[MAX_CAPTURES];
   lua_State *L;
 } MatchState;
 
 
-#define ESC		l_c('%')
-#define SPECIALS	l_s("^$*+?.([%-")
+#define ESC		'%'
+#define SPECIALS	"^$*+?.([%-"
 
 
 static int check_capture (MatchState *ms, int l) {
-  l -= l_c('1');
+  l -= '1';
   if (l < 0 || l >= ms->level || ms->capture[l].len == CAP_UNFINISHED)
-    lua_error(ms->L, l_s("invalid capture index"));
+    lua_error(ms->L, "invalid capture index");
   return l;
 }
 
@@ -174,25 +179,25 @@ static int capture_to_close (MatchState *ms) {
   int level = ms->level;
   for (level--; level>=0; level--)
     if (ms->capture[level].len == CAP_UNFINISHED) return level;
-  lua_error(ms->L, l_s("invalid pattern capture"));
+  lua_error(ms->L, "invalid pattern capture");
   return 0;  /* to avoid warnings */
 }
 
 
-static const l_char *luaI_classend (MatchState *ms, const l_char *p) {
+static const char *luaI_classend (MatchState *ms, const char *p) {
   switch (*p++) {
     case ESC:
-      if (*p == l_c('\0'))
-        lua_error(ms->L, l_s("malformed pattern (ends with `%')"));
+      if (*p == '\0')
+        lua_error(ms->L, "malformed pattern (ends with `%')");
       return p+1;
-    case l_c('['):
-      if (*p == l_c('^')) p++;
+    case '[':
+      if (*p == '^') p++;
       do {  /* look for a `]' */
-        if (*p == l_c('\0'))
-          lua_error(ms->L, l_s("malformed pattern (missing `]')"));
-        if (*(p++) == ESC && *p != l_c('\0'))
+        if (*p == '\0')
+          lua_error(ms->L, "malformed pattern (missing `]')");
+        if (*(p++) == ESC && *p != '\0')
           p++;  /* skip escapes (e.g. `%]') */
-      } while (*p != l_c(']'));
+      } while (*p != ']');
       return p+1;
     default:
       return p;
@@ -200,28 +205,28 @@ static const l_char *luaI_classend (MatchState *ms, const l_char *p) {
 }
 
 
-static int match_class (l_charint c, l_charint cl) {
+static int match_class (int c, int cl) {
   int res;
   switch (tolower(cl)) {
-    case l_c('a') : res = isalpha(c); break;
-    case l_c('c') : res = iscntrl(c); break;
-    case l_c('d') : res = isdigit(c); break;
-    case l_c('l') : res = islower(c); break;
-    case l_c('p') : res = ispunct(c); break;
-    case l_c('s') : res = isspace(c); break;
-    case l_c('u') : res = isupper(c); break;
-    case l_c('w') : res = isalnum(c); break;
-    case l_c('x') : res = isxdigit(c); break;
-    case l_c('z') : res = (c == 0); break;
+    case 'a' : res = isalpha(c); break;
+    case 'c' : res = iscntrl(c); break;
+    case 'd' : res = isdigit(c); break;
+    case 'l' : res = islower(c); break;
+    case 'p' : res = ispunct(c); break;
+    case 's' : res = isspace(c); break;
+    case 'u' : res = isupper(c); break;
+    case 'w' : res = isalnum(c); break;
+    case 'x' : res = isxdigit(c); break;
+    case 'z' : res = (c == 0); break;
     default: return (cl == c);
   }
   return (islower(cl) ? res : !res);
 }
 
 
-static int matchbracketclass (l_charint c, const l_char *p, const l_char *ec) {
+static int matchbracketclass (int c, const char *p, const char *ec) {
   int sig = 1;
-  if (*(p+1) == l_c('^')) {
+  if (*(p+1) == '^') {
     sig = 0;
     p++;  /* skip the `^' */
   }
@@ -231,7 +236,7 @@ static int matchbracketclass (l_charint c, const l_char *p, const l_char *ec) {
       if (match_class(c, *p))
         return sig;
     }
-    else if ((*(p+1) == l_c('-')) && (p+2 < ec)) {
+    else if ((*(p+1) == '-') && (p+2 < ec)) {
       p+=2;
       if (uchar(*(p-2)) <= c && c <= uchar(*p))
         return sig;
@@ -242,13 +247,13 @@ static int matchbracketclass (l_charint c, const l_char *p, const l_char *ec) {
 }
 
 
-static int luaI_singlematch (l_charint c, const l_char *p, const l_char *ep) {
+static int luaI_singlematch (int c, const char *p, const char *ep) {
   switch (*p) {
-    case l_c('.'):  /* matches any char */
+    case '.':  /* matches any char */
       return 1;
     case ESC:
       return match_class(c, *(p+1));
-    case l_c('['):
+    case '[':
       return matchbracketclass(c, p, ep-1);
     default:
       return (uchar(*p) == c);
@@ -256,13 +261,13 @@ static int luaI_singlematch (l_charint c, const l_char *p, const l_char *ep) {
 }
 
 
-static const l_char *match (MatchState *ms, const l_char *s, const l_char *p);
+static const char *match (MatchState *ms, const char *s, const char *p);
 
 
-static const l_char *matchbalance (MatchState *ms, const l_char *s,
-                                   const l_char *p) {
+static const char *matchbalance (MatchState *ms, const char *s,
+                                   const char *p) {
   if (*p == 0 || *(p+1) == 0)
-    lua_error(ms->L, l_s("unbalanced pattern"));
+    lua_error(ms->L, "unbalanced pattern");
   if (*s != *p) return NULL;
   else {
     int b = *p;
@@ -279,14 +284,14 @@ static const l_char *matchbalance (MatchState *ms, const l_char *s,
 }
 
 
-static const l_char *max_expand (MatchState *ms, const l_char *s,
-                                 const l_char *p, const l_char *ep) {
+static const char *max_expand (MatchState *ms, const char *s,
+                                 const char *p, const char *ep) {
   sint32 i = 0;  /* counts maximum expand for item */
   while ((s+i)<ms->src_end && luaI_singlematch(uchar(*(s+i)), p, ep))
     i++;
   /* keeps trying to match with the maximum repetitions */
   while (i>=0) {
-    const l_char *res = match(ms, (s+i), ep+1);
+    const char *res = match(ms, (s+i), ep+1);
     if (res) return res;
     i--;  /* else didn't match; reduce 1 repetition to try again */
   }
@@ -294,10 +299,10 @@ static const l_char *max_expand (MatchState *ms, const l_char *s,
 }
 
 
-static const l_char *min_expand (MatchState *ms, const l_char *s,
-                                 const l_char *p, const l_char *ep) {
+static const char *min_expand (MatchState *ms, const char *s,
+                                 const char *p, const char *ep) {
   for (;;) {
-    const l_char *res = match(ms, s, ep+1);
+    const char *res = match(ms, s, ep+1);
     if (res != NULL)
       return res;
     else if (s<ms->src_end && luaI_singlematch(uchar(*s), p, ep))
@@ -307,11 +312,11 @@ static const l_char *min_expand (MatchState *ms, const l_char *s,
 }
 
 
-static const l_char *start_capture (MatchState *ms, const l_char *s,
-                                    const l_char *p, int what) {
-  const l_char *res;
+static const char *start_capture (MatchState *ms, const char *s,
+                                    const char *p, int what) {
+  const char *res;
   int level = ms->level;
-  if (level >= MAX_CAPTURES) lua_error(ms->L, l_s("too many captures"));
+  if (level >= MAX_CAPTURES) lua_error(ms->L, "too many captures");
   ms->capture[level].init = s;
   ms->capture[level].len = what;
   ms->level = level+1;
@@ -321,10 +326,10 @@ static const l_char *start_capture (MatchState *ms, const l_char *s,
 }
 
 
-static const l_char *end_capture (MatchState *ms, const l_char *s,
-                                  const l_char *p) {
+static const char *end_capture (MatchState *ms, const char *s,
+                                  const char *p) {
   int l = capture_to_close(ms);
-  const l_char *res;
+  const char *res;
   ms->capture[l].len = s - ms->capture[l].init;  /* close capture */
   if ((res = match(ms, s, p)) == NULL)  /* match failed? */
     ms->capture[l].len = CAP_UNFINISHED;  /* undo capture */
@@ -332,7 +337,7 @@ static const l_char *end_capture (MatchState *ms, const l_char *s,
 }
 
 
-static const l_char *match_capture (MatchState *ms, const l_char *s, int l) {
+static const char *match_capture (MatchState *ms, const char *s, int l) {
   size_t len;
   l = check_capture(ms, l);
   len = ms->capture[l].len;
@@ -343,15 +348,15 @@ static const l_char *match_capture (MatchState *ms, const l_char *s, int l) {
 }
 
 
-static const l_char *match (MatchState *ms, const l_char *s, const l_char *p) {
+static const char *match (MatchState *ms, const char *s, const char *p) {
   init: /* using goto's to optimize tail recursion */
   switch (*p) {
-    case l_c('('):  /* start capture */
-      if (*(p+1) == l_c(')'))  /* position capture? */
+    case '(':  /* start capture */
+      if (*(p+1) == ')')  /* position capture? */
         return start_capture(ms, s, p+2, CAP_POSITION);
       else
         return start_capture(ms, s, p+1, CAP_UNFINISHED);
-    case l_c(')'):  /* end capture */
+    case ')':  /* end capture */
       return end_capture(ms, s, p+1);
     case ESC:  /* may be %[0-9] or %b */
       if (isdigit(uchar(*(p+1)))) {  /* capture? */
@@ -359,33 +364,33 @@ static const l_char *match (MatchState *ms, const l_char *s, const l_char *p) {
         if (s == NULL) return NULL;
         p+=2; goto init;  /* else return match(ms, s, p+2) */
       }
-      else if (*(p+1) == l_c('b')) {  /* balanced string? */
+      else if (*(p+1) == 'b') {  /* balanced string? */
         s = matchbalance(ms, s, p+2);
         if (s == NULL) return NULL;
         p+=4; goto init;  /* else return match(ms, s, p+4); */
       }
       else goto dflt;  /* case default */
-    case l_c('\0'):  /* end of pattern */
+    case '\0':  /* end of pattern */
       return s;  /* match succeeded */
-    case l_c('$'):
-      if (*(p+1) == l_c('\0'))  /* is the `$' the last char in pattern? */
+    case '$':
+      if (*(p+1) == '\0')  /* is the `$' the last char in pattern? */
         return (s == ms->src_end) ? s : NULL;  /* check end of string */
       else goto dflt;
     default: dflt: {  /* it is a pattern item */
-      const l_char *ep = luaI_classend(ms, p);  /* points to what is next */
+      const char *ep = luaI_classend(ms, p);  /* points to what is next */
       int m = s<ms->src_end && luaI_singlematch(uchar(*s), p, ep);
       switch (*ep) {
-        case l_c('?'): {  /* optional */
-          const l_char *res;
+        case '?': {  /* optional */
+          const char *res;
           if (m && ((res=match(ms, s+1, ep+1)) != NULL))
             return res;
           p=ep+1; goto init;  /* else return match(ms, s, ep+1); */
         }
-        case l_c('*'):  /* 0 or more repetitions */
+        case '*':  /* 0 or more repetitions */
           return max_expand(ms, s, p, ep);
-        case l_c('+'):  /* 1 or more repetitions */
+        case '+':  /* 1 or more repetitions */
           return (m ? max_expand(ms, s+1, p, ep) : NULL);
-        case l_c('-'):  /* 0 or more repetitions (minimum) */
+        case '-':  /* 0 or more repetitions (minimum) */
           return min_expand(ms, s, p, ep);
         default:
           if (!m) return NULL;
@@ -397,15 +402,15 @@ static const l_char *match (MatchState *ms, const l_char *s, const l_char *p) {
 
 
 
-static const l_char *lmemfind (const l_char *s1, size_t l1,
-                               const l_char *s2, size_t l2) {
+static const char *lmemfind (const char *s1, size_t l1,
+                               const char *s2, size_t l2) {
   if (l2 == 0) return s1;  /* empty strings are everywhere */
   else if (l2 > l1) return NULL;  /* avoids a negative `l1' */
   else {
-    const l_char *init;  /* to search for a `*s2' inside `s1' */
+    const char *init;  /* to search for a `*s2' inside `s1' */
     l2--;  /* 1st char will be checked by `memchr' */
     l1 = l1-l2;  /* `s2' cannot be found after that */
-    while (l1 > 0 && (init = (const l_char *)memchr(s1, *s2, l1)) != NULL) {
+    while (l1 > 0 && (init = (const char *)memchr(s1, *s2, l1)) != NULL) {
       init++;   /* 1st char is already checked */
       if (memcmp(init, s2+1, l2) == 0)
         return init-1;
@@ -421,7 +426,7 @@ static const l_char *lmemfind (const l_char *s1, size_t l1,
 
 static void push_onecapture (MatchState *ms, int i) {
   int l = ms->capture[i].len;
-  if (l == CAP_UNFINISHED) lua_error(ms->L, l_s("unfinished capture"));
+  if (l == CAP_UNFINISHED) lua_error(ms->L, "unfinished capture");
   if (l == CAP_POSITION)
     lua_pushnumber(ms->L, ms->capture[i].init - ms->src_init + 1);
   else
@@ -431,7 +436,7 @@ static void push_onecapture (MatchState *ms, int i) {
 
 static int push_captures (MatchState *ms) {
   int i;
-  luaL_check_stack(ms->L, ms->level, l_s("too many captures"));
+  luaL_check_stack(ms->L, ms->level, "too many captures");
   for (i=0; i<ms->level; i++)
     push_onecapture(ms, i);
   return ms->level;  /* number of strings pushed */
@@ -440,13 +445,13 @@ static int push_captures (MatchState *ms) {
 
 static int str_find (lua_State *L) {
   size_t l1, l2;
-  const l_char *s = luaL_check_lstr(L, 1, &l1);
-  const l_char *p = luaL_check_lstr(L, 2, &l2);
+  const char *s = luaL_check_lstr(L, 1, &l1);
+  const char *p = luaL_check_lstr(L, 2, &l2);
   sint32 init = posrelat(luaL_opt_long(L, 3, 1), l1) - 1;
-  luaL_arg_check(L, 0 <= init && (size_t)(init) <= l1, 3, l_s("out of range"));
+  luaL_arg_check(L, 0 <= init && (size_t)(init) <= l1, 3, "out of range");
   if (lua_gettop(L) > 3 ||  /* extra argument? */
       strpbrk(p, SPECIALS) == NULL) {  /* or no special characters? */
-    const l_char *s2 = lmemfind(s+init, l1-init, p, l2);
+    const char *s2 = lmemfind(s+init, l1-init, p, l2);
     if (s2) {
       lua_pushnumber(L, s2-s+1);
       lua_pushnumber(L, s2-s+l2);
@@ -455,13 +460,13 @@ static int str_find (lua_State *L) {
   }
   else {
     MatchState ms;
-    int anchor = (*p == l_c('^')) ? (p++, 1) : 0;
-    const l_char *s1=s+init;
+    int anchor = (*p == '^') ? (p++, 1) : 0;
+    const char *s1=s+init;
     ms.L = L;
     ms.src_init = s;
     ms.src_end = s+l1;
     do {
-      const l_char *res;
+      const char *res;
       ms.level = 0;
       if ((res=match(&ms, s1, p)) != NULL) {
         lua_pushnumber(L, s1-s+1);  /* start */
@@ -478,7 +483,7 @@ static int str_find (lua_State *L) {
 static void add_s (MatchState *ms, luaL_Buffer *b) {
   lua_State *L = ms->L;
   if (lua_isstring(L, 3)) {
-    const l_char *news = lua_tostring(L, 3);
+    const char *news = lua_tostring(L, 3);
     size_t l = lua_strlen(L, 3);
     size_t i;
     for (i=0; i<l; i++) {
@@ -511,22 +516,22 @@ static void add_s (MatchState *ms, luaL_Buffer *b) {
 
 static int str_gsub (lua_State *L) {
   size_t srcl;
-  const l_char *src = luaL_check_lstr(L, 1, &srcl);
-  const l_char *p = luaL_check_string(L, 2);
+  const char *src = luaL_check_lstr(L, 1, &srcl);
+  const char *p = luaL_check_string(L, 2);
   int max_s = luaL_opt_int(L, 4, srcl+1);
-  int anchor = (*p == l_c('^')) ? (p++, 1) : 0;
+  int anchor = (*p == '^') ? (p++, 1) : 0;
   int n = 0;
   MatchState ms;
   luaL_Buffer b;
   luaL_arg_check(L,
     lua_gettop(L) >= 3 && (lua_isstring(L, 3) || lua_isfunction(L, 3)),
-    3, l_s("string or function expected"));
+    3, "string or function expected");
   luaL_buffinit(L, &b);
   ms.L = L;
   ms.src_init = src;
   ms.src_end = src+srcl;
   while (n < max_s) {
-    const l_char *e;
+    const char *e;
     ms.level = 0;
     e = match(&ms, src, p);
     if (e) {
@@ -557,40 +562,40 @@ static int str_gsub (lua_State *L) {
 
 static void luaI_addquoted (lua_State *L, luaL_Buffer *b, int arg) {
   size_t l;
-  const l_char *s = luaL_check_lstr(L, arg, &l);
-  luaL_putchar(b, l_c('"'));
+  const char *s = luaL_check_lstr(L, arg, &l);
+  luaL_putchar(b, '"');
   while (l--) {
     switch (*s) {
-      case l_c('"'):  case l_c('\\'):  case l_c('\n'):
-        luaL_putchar(b, l_c('\\'));
+      case '"':  case '\\':  case '\n':
+        luaL_putchar(b, '\\');
         luaL_putchar(b, *s);
         break;
-      case l_c('\0'): luaL_addlstring(b, l_s("\\000"), 4); break;
+      case '\0': luaL_addlstring(b, "\\000", 4); break;
       default: luaL_putchar(b, *s);
     }
     s++;
   }
-  luaL_putchar(b, l_c('"'));
+  luaL_putchar(b, '"');
 }
 
 
-static const l_char *scanformat (lua_State *L, const l_char *strfrmt,
-                                 l_char *form, int *hasprecision) {
-  const l_char *p = strfrmt;
-  while (strchr(l_s("-+ #0"), *p)) p++;  /* skip flags */
+static const char *scanformat (lua_State *L, const char *strfrmt,
+                                 char *form, int *hasprecision) {
+  const char *p = strfrmt;
+  while (strchr("-+ #0", *p)) p++;  /* skip flags */
   if (isdigit(uchar(*p))) p++;  /* skip width */
   if (isdigit(uchar(*p))) p++;  /* (2 digits at most) */
-  if (*p == l_c('.')) {
+  if (*p == '.') {
     p++;
     *hasprecision = 1;
     if (isdigit(uchar(*p))) p++;  /* skip precision */
     if (isdigit(uchar(*p))) p++;  /* (2 digits at most) */
   }
   if (isdigit(uchar(*p)))
-    lua_error(L, l_s("invalid format (width or precision too long)"));
+    lua_error(L, "invalid format (width or precision too long)");
   if (p-strfrmt+2 > MAX_FORMAT)  /* +2 to include `%' and the specifier */
-    lua_error(L, l_s("invalid format (too long)"));
-  form[0] = l_c('%');
+    lua_error(L, "invalid format (too long)");
+  form[0] = '%';
   strncpy(form+1, strfrmt, p-strfrmt+1);
   form[p-strfrmt+2] = 0;
   return p;
@@ -600,40 +605,40 @@ static const l_char *scanformat (lua_State *L, const l_char *strfrmt,
 static int str_format (lua_State *L) {
   int arg = 1;
   size_t sfl;
-  const l_char *strfrmt = luaL_check_lstr(L, arg, &sfl);
-  const l_char *strfrmt_end = strfrmt+sfl;
+  const char *strfrmt = luaL_check_lstr(L, arg, &sfl);
+  const char *strfrmt_end = strfrmt+sfl;
   luaL_Buffer b;
   luaL_buffinit(L, &b);
   while (strfrmt < strfrmt_end) {
-    if (*strfrmt != l_c('%'))
+    if (*strfrmt != '%')
       luaL_putchar(&b, *strfrmt++);
-    else if (*++strfrmt == l_c('%'))
+    else if (*++strfrmt == '%')
       luaL_putchar(&b, *strfrmt++);  /* %% */
     else { /* format item */
-      l_char form[MAX_FORMAT];  /* to store the format (`%...') */
-      l_char buff[MAX_ITEM];  /* to store the formatted item */
+      char form[MAX_FORMAT];  /* to store the format (`%...') */
+      char buff[MAX_ITEM];  /* to store the formatted item */
       int hasprecision = 0;
-      if (isdigit(uchar(*strfrmt)) && *(strfrmt+1) == l_c('$'))
-        lua_error(L, l_s("obsolete `format' option (d$)"));
+      if (isdigit(uchar(*strfrmt)) && *(strfrmt+1) == '$')
+        lua_error(L, "obsolete `format' option (d$)");
       arg++;
       strfrmt = scanformat(L, strfrmt, form, &hasprecision);
       switch (*strfrmt++) {
-        case l_c('c'):  case l_c('d'):  case l_c('i'):
+        case 'c':  case 'd':  case 'i':
           sprintf(buff, form, luaL_check_int(L, arg));
           break;
-        case l_c('o'):  case l_c('u'):  case l_c('x'):  case l_c('X'):
+        case 'o':  case 'u':  case 'x':  case 'X':
           sprintf(buff, form, (unsigned int)(luaL_check_number(L, arg)));
           break;
-        case l_c('e'):  case l_c('E'): case l_c('f'):
-        case l_c('g'): case l_c('G'):
+        case 'e':  case 'E': case 'f':
+        case 'g': case 'G':
           sprintf(buff, form, luaL_check_number(L, arg));
           break;
-        case l_c('q'):
+        case 'q':
           luaI_addquoted(L, &b, arg);
           continue;  /* skip the `addsize' at the end */
-        case l_c('s'): {
+        case 's': {
           size_t l;
-          const l_char *s = luaL_check_lstr(L, arg, &l);
+          const char *s = luaL_check_lstr(L, arg, &l);
           if (!hasprecision && l >= 100) {
             /* no precision and string is too long to be formatted;
                keep original string */
@@ -647,7 +652,7 @@ static int str_format (lua_State *L) {
           }
         }
         default:  /* also treat cases `pnLlh' */
-          lua_error(L, l_s("invalid option in `format'"));
+          lua_error(L, "invalid option in `format'");
       }
       luaL_addlstring(&b, buff, strlen(buff));
     }
@@ -658,17 +663,17 @@ static int str_format (lua_State *L) {
 
 
 static const luaL_reg strlib[] = {
-{l_s("strlen"), str_len},
-{l_s("strsub"), str_sub},
-{l_s("strlower"), str_lower},
-{l_s("strupper"), str_upper},
-{l_s("strchar"), str_char},
-{l_s("strrep"), str_rep},
-{l_s("strbyte"), str_byte},
-{l_s("concat"), str_concat},
-{l_s("format"), str_format},
-{l_s("strfind"), str_find},
-{l_s("gsub"), str_gsub}
+{"strlen", str_len},
+{"strsub", str_sub},
+{"strlower", str_lower},
+{"strupper", str_upper},
+{"strchar", str_char},
+{"strrep", str_rep},
+{"strbyte", str_byte},
+{"concat", str_concat},
+{"format", str_format},
+{"strfind", str_find},
+{"gsub", str_gsub}
 };
 
 
-- 
cgit v1.2.3-55-g6feb