diff --git a/lauxlib.h b/lauxlib.h index e26c7fa4..508b1cd0 100644 --- a/lauxlib.h +++ b/lauxlib.h @@ -1,5 +1,5 @@ /* -** $Id: lauxlib.h,v 1.8 1998/06/18 16:57:03 roberto Exp roberto $ +** $Id: lauxlib.h,v 1.9 1998/06/19 16:14:09 roberto Exp roberto $ ** Auxiliary functions for building Lua libraries ** See Copyright Notice in lua.h */ @@ -28,7 +28,11 @@ char *luaL_check_lstr (int numArg, long *len); #define luaL_opt_string(n, d) (luaL_opt_lstr((n), (d), NULL)) char *luaL_opt_lstr (int numArg, char *def, long *len); double luaL_check_number (int numArg); +#define luaL_check_int(n) ((int)luaL_check_number(n)) +#define luaL_check_long(n) ((long)luaL_check_number(n)) double luaL_opt_number (int numArg, double def); +#define luaL_opt_int(n,d) ((int)luaL_opt_number(n,d)) +#define luaL_opt_long(n,d) ((long)luaL_opt_number(n,d)) lua_Object luaL_functionarg (int arg); lua_Object luaL_tablearg (int arg); lua_Object luaL_nonnullarg (int numArg); diff --git a/lbuffer.c b/lbuffer.c index 9ec37a73..6bcc9c5a 100644 --- a/lbuffer.c +++ b/lbuffer.c @@ -1,5 +1,5 @@ /* -** $Id: lbuffer.c,v 1.3 1998/06/02 20:37:04 roberto Exp roberto $ +** $Id: lbuffer.c,v 1.4 1998/06/19 16:14:09 roberto Exp roberto $ ** Auxiliary functions for building Lua libraries ** See Copyright Notice in lua.h */ @@ -42,7 +42,7 @@ char *luaL_openspace (int size) void luaL_addchar (int c) { openspace(BUFF_STEP); - L->Mbuffer[L->Mbuffnext++] = c; + L->Mbuffer[L->Mbuffnext++] = (char)c; } diff --git a/lbuiltin.c b/lbuiltin.c index 574e5fae..d4dd0716 100644 --- a/lbuiltin.c +++ b/lbuiltin.c @@ -1,5 +1,5 @@ /* -** $Id: lbuiltin.c,v 1.38 1998/12/15 15:21:09 roberto Exp roberto $ +** $Id: lbuiltin.c,v 1.40 1998/12/27 20:22:36 roberto Exp roberto $ ** Built-in functions ** See Copyright Notice in lua.h */ @@ -133,7 +133,7 @@ static void luaB_print (void) { static void luaB_tonumber (void) { - int base = luaL_opt_number(2, 10); + int base = luaL_opt_int(2, 10); if (base == 10) { /* standard conversion */ lua_Object o = lua_getparam(1); if (lua_isnumber(o)) @@ -186,7 +186,7 @@ static void luaB_luatag (void) { static void luaB_settag (void) { lua_Object o = luaL_tablearg(1); lua_pushobject(o); - lua_settag(luaL_check_number(2)); + lua_settag(luaL_check_int(2)); lua_pushobject(o); /* returns first argument */ } @@ -195,8 +195,8 @@ static void luaB_newtag (void) { } static void luaB_copytagmethods (void) { - lua_pushnumber(lua_copytagmethods(luaL_check_number(1), - luaL_check_number(2))); + lua_pushnumber(lua_copytagmethods(luaL_check_int(1), + luaL_check_int(2))); } static void luaB_rawgettable (void) { @@ -215,13 +215,11 @@ static void luaB_rawsettable (void) { static void luaB_settagmethod (void) { lua_Object nf = luaL_nonnullarg(3); lua_pushobject(nf); - lua_pushobject(lua_settagmethod((int)luaL_check_number(1), - luaL_check_string(2))); + lua_pushobject(lua_settagmethod(luaL_check_int(1), luaL_check_string(2))); } static void luaB_gettagmethod (void) { - lua_pushobject(lua_gettagmethod((int)luaL_check_number(1), - luaL_check_string(2))); + lua_pushobject(lua_gettagmethod(luaL_check_int(1), luaL_check_string(2))); } static void luaB_seterrormethod (void) { @@ -231,7 +229,7 @@ static void luaB_seterrormethod (void) { } static void luaB_collectgarbage (void) { - lua_pushnumber(lua_collectgarbage(luaL_opt_number(1, 0))); + lua_pushnumber(lua_collectgarbage(luaL_opt_int(1, 0))); } diff --git a/liolib.c b/liolib.c index 764dd883..638fe9a6 100644 --- a/liolib.c +++ b/liolib.c @@ -1,5 +1,5 @@ /* -** $Id: liolib.c,v 1.26 1998/11/20 15:41:43 roberto Exp roberto $ +** $Id: liolib.c,v 1.27 1998/12/27 20:21:28 roberto Exp roberto $ ** Standard I/O (and system) library ** See Copyright Notice in lua.h */ @@ -105,8 +105,11 @@ static FILE *getfileparam (char *name, int *arg) { static char *getmode (char mode) { static char m[3]; m[0] = mode; - m[1] = (*luaL_opt_string(FIRSTARG+1, "text") == 'b') ? 'b' : '\0'; - m[2] = '\0'; + if (*luaL_opt_string(FIRSTARG+1, "text") == 'b') { + m[1] = 'b'; + m[2] = '\0'; + } + else m[1] = '\0'; return m; } @@ -308,7 +311,7 @@ static void io_read (void) { l = luaL_getsize(); if (!success && l==0) return; /* read fails */ lua_pushlstring(luaL_buffer(), l); - } while ((p = luaL_opt_string(arg++, NULL))); + } while ((p = luaL_opt_string(arg++, NULL)) != NULL); } @@ -319,7 +322,7 @@ static void io_write (void) { char *s; long l; while ((s = luaL_opt_lstr(arg++, NULL, &l)) != NULL) - status = status && (fwrite(s, 1, l, f) == l); + status = status && ((long)fwrite(s, 1, l, f) == l); pushresult(status); } @@ -329,7 +332,7 @@ static void io_seek (void) { static char *modenames[] = {"set", "cur", "end", NULL}; FILE *f = getfile(FIRSTARG-1+1); int op = luaL_findstring(luaL_opt_string(FIRSTARG-1+2, "cur"), modenames); - long offset = luaL_opt_number(FIRSTARG-1+3, 0); + long offset = luaL_opt_long(FIRSTARG-1+3, 0); luaL_arg_check(f, FIRSTARG-1+1, "invalid file handler"); luaL_arg_check(op != -1, FIRSTARG-1+2, "invalid mode"); op = fseek(f, offset, mode[op]); diff --git a/llex.c b/llex.c index 941e6b8a..a0b63fe1 100644 --- a/llex.c +++ b/llex.c @@ -1,5 +1,5 @@ /* -** $Id: llex.c,v 1.25 1998/12/03 15:45:15 roberto Exp $ +** $Id: llex.c,v 1.26 1998/12/27 20:25:20 roberto Exp roberto $ ** Lexical Analizer ** See Copyright Notice in lua.h */ @@ -61,7 +61,7 @@ void luaX_error (LexState *ls, char *s) { void luaX_token2str (int token, char *s) { if (token < 255) { - s[0] = token; + s[0] = (char)token; s[1] = '\0'; } else @@ -138,7 +138,7 @@ static void readname (LexState *LS, char *buff) buff[PRAGMASIZE] = 0; luaX_syntaxerror(LS, "pragma too long", buff); } - buff[i++] = LS->current; + buff[i++] = (char)LS->current; next(LS); } buff[i] = 0; @@ -344,7 +344,7 @@ int luaX_lex (LexState *LS) { c = 10*c + (LS->current-'0'); next(LS); } while (++i<3 && isdigit(LS->current)); - if (c > (unsigned char)c) + if (c != (unsigned char)c) luaX_error(LS, "escape sequence too large"); save(c); } diff --git a/lmathlib.c b/lmathlib.c index 181ee8d4..1d99df32 100644 --- a/lmathlib.c +++ b/lmathlib.c @@ -1,5 +1,5 @@ /* -** $Id: lmathlib.c,v 1.10 1998/06/19 16:14:09 roberto Exp roberto $ +** $Id: lmathlib.c,v 1.11 1998/09/08 19:25:35 roberto Exp roberto $ ** Lua standard mathematical library ** See Copyright Notice in lua.h */ @@ -122,7 +122,7 @@ static void math_frexp (void) { } static void math_ldexp (void) { - lua_pushnumber(ldexp(luaL_check_number(1), luaL_check_number(2))); + lua_pushnumber(ldexp(luaL_check_number(1), luaL_check_int(2))); } @@ -166,9 +166,8 @@ static void math_random (void) } -static void math_randomseed (void) -{ - srand(luaL_check_number(1)); +static void math_randomseed (void) { + srand(luaL_check_int(1)); } diff --git a/lparser.c b/lparser.c index 659d64d6..e1f0372e 100644 --- a/lparser.c +++ b/lparser.c @@ -1,5 +1,5 @@ /* -** $Id: lparser.c,v 1.5 1998/08/11 13:28:05 roberto Exp roberto $ +** $Id: lparser.c,v 1.6 1998/12/23 14:06:57 roberto Exp roberto $ ** LL(1) Parser and code generator for Lua ** See Copyright Notice in lua.h */ @@ -158,18 +158,18 @@ static int code_oparg_at (LexState *ls, int pc, OpCode op, int builtin, Byte *code = ls->fs->f->code; deltastack(ls, delta); if (arg < builtin) { - code[pc] = op+1+arg; + code[pc] = (Byte)(op+1+arg); return 1; } else if (arg <= 255) { - code[pc] = op; - code[pc+1] = arg; + code[pc] = (Byte)op; + code[pc+1] = (Byte)arg; return 2; } else if (arg <= MAX_WORD) { - code[pc] = op+1+builtin; - code[pc+1] = arg>>8; - code[pc+2] = arg&0xFF; + code[pc] = (Byte)(op+1+builtin); + code[pc+1] = (Byte)(arg>>8); + code[pc+2] = (Byte)(arg&0xFF); return 3; } else luaX_error(ls, "code too long " MES_LIM("64K") @@ -202,7 +202,7 @@ static void code_oparg (LexState *ls, OpCode op, int builtin, int arg, static void code_opcode (LexState *ls, OpCode op, int delta) { deltastack(ls, delta); - code_byte(ls->fs, op); + code_byte(ls->fs, (Byte)op); } @@ -277,7 +277,7 @@ static void flush_record (LexState *ls, int n) { static void flush_list (LexState *ls, int m, int n) { if (n == 0) return; code_oparg(ls, SETLIST, 1, m, -n); - code_byte(ls->fs, n); + code_byte(ls->fs, (Byte)n); } @@ -391,7 +391,7 @@ static void adjuststack (LexState *ls, int n) { static void close_exp (LexState *ls, int pc, int nresults) { if (pc > 0) { /* expression is an open function call */ Byte *code = ls->fs->f->code; - int nparams = code[pc]; /* save nparams */ + Byte nparams = code[pc]; /* save nparams */ pc += fix_opcode(ls, pc-2, CALLFUNC, 2, nresults); code[pc] = nparams; /* restore nparams */ if (nresults != MULT_RET) @@ -426,11 +426,11 @@ static void code_args (LexState *ls, int nparams, int dots) { fs->nlocalvar += nparams; /* "self" may already be there */ nparams = fs->nlocalvar; if (!dots) { - fs->f->code[1] = nparams; /* fill-in arg information */ + fs->f->code[1] = (Byte)nparams; /* fill-in arg information */ deltastack(ls, nparams); } else { - fs->f->code[1] = nparams+ZEROVARARG; + fs->f->code[1] = (Byte)(nparams+ZEROVARARG); deltastack(ls, nparams+1); add_localvar(ls, luaS_new("arg")); } @@ -515,7 +515,7 @@ static void func_onstack (LexState *ls, FuncState *func) { for (i=0; inupvalues; i++) lua_pushvar(ls, &func->upvalues[i]); code_oparg(ls, CLOSURE, 0, c, -func->nupvalues+1); - code_byte(fs, func->nupvalues); + code_byte(fs, (Byte)func->nupvalues); } } @@ -548,7 +548,7 @@ static void close_func (LexState *ls) { FuncState *fs = ls->fs; TProtoFunc *f = fs->f; code_opcode(ls, ENDCODE, 0); - f->code[0] = fs->maxstacksize; + f->code[0] = (Byte)fs->maxstacksize; f->code = luaM_reallocvector(f->code, fs->pc, Byte); f->consts = luaM_reallocvector(f->consts, f->nconsts, TObject); if (fs->maxvars != -1) { /* debug information? */ @@ -1092,7 +1092,7 @@ static int funcparams (LexState *ls, int slf) { } code_byte(fs, 0); /* save space for opcode */ code_byte(fs, 0); /* and nresult */ - code_byte(fs, nparams+slf); + code_byte(fs, (Byte)(nparams+slf)); return fs->pc-1; } diff --git a/lstrlib.c b/lstrlib.c index 98e90ab2..e1eac354 100644 --- a/lstrlib.c +++ b/lstrlib.c @@ -1,5 +1,5 @@ /* -** $Id: lstrlib.c,v 1.20 1998/11/10 19:38:12 roberto Exp roberto $ +** $Id: lstrlib.c,v 1.21 1998/12/01 18:41:25 roberto Exp roberto $ ** Standard library for strings and pattern-matching ** See Copyright Notice in lua.h */ @@ -46,8 +46,8 @@ static long posrelat (long pos, long len) { static void str_sub (void) { long l; char *s = luaL_check_lstr(1, &l); - long start = posrelat(luaL_check_number(2), l); - long end = posrelat(luaL_opt_number(3, -1), l); + long start = posrelat(luaL_check_long(2), l); + long end = posrelat(luaL_opt_long(3, -1), l); if (start < 1) start = 1; if (end > l) end = l; if (start <= end) @@ -82,7 +82,7 @@ static void str_rep (void) { long l; char *s = luaL_check_lstr(1, &l); - int n = (int)luaL_check_number(2); + int n = luaL_check_int(2); luaL_resetbuffer(); while (n-- > 0) addnchar(s, l); @@ -94,7 +94,7 @@ static void str_byte (void) { long l; char *s = luaL_check_lstr(1, &l); - long pos = posrelat(luaL_opt_number(2, 1), l); + long pos = posrelat(luaL_opt_long(2, 1), l); luaL_arg_check(0= 500) fprintf(stderr, "lua: shell argument too long"); else { @@ -90,13 +88,11 @@ static void assign (char *arg) } } -#define BUF_SIZE 512 -static void manual_input (int prompt) -{ +static void manual_input (int prompt) { int cont = 1; while (cont) { - char buffer[BUF_SIZE]; + char buffer[BUFSIZ]; int i = 0; lua_beginblock(); if (prompt) @@ -112,13 +108,13 @@ static void manual_input (int prompt) buffer[i-1] = '\n'; else break; } - else if (i >= BUF_SIZE-1) { + else if (i >= BUFSIZ-1) { fprintf(stderr, "lua: argument line too long\n"); break; } - else buffer[i++] = c; + else buffer[i++] = (char)c; } - buffer[i] = 0; + buffer[i] = '\0'; ldo(lua_dostring, buffer); lua_endblock(); } diff --git a/lzio.c b/lzio.c index 35a2d6a7..8e11ef4d 100644 --- a/lzio.c +++ b/lzio.c @@ -1,5 +1,5 @@ /* -** $Id: lzio.c,v 1.2 1997/11/21 19:00:46 roberto Exp roberto $ +** $Id: lzio.c,v 1.3 1997/12/22 20:57:18 roberto Exp roberto $ ** a generic input stream interface ** See Copyright Notice in lua.h */ @@ -15,11 +15,11 @@ /* ----------------------------------------------------- memory buffers --- */ -static int zmfilbuf (ZIO* z) -{ +static int zmfilbuf (ZIO* z) { return EOZ; } + ZIO* zmopen (ZIO* z, char* b, int size, char *name) { if (b==NULL) return NULL;