summaryrefslogtreecommitdiff
path: root/etc/min.c
diff options
context:
space:
mode:
Diffstat (limited to 'etc/min.c')
-rw-r--r--etc/min.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/etc/min.c b/etc/min.c
index 6a85a4d1..81e3b73d 100644
--- a/etc/min.c
+++ b/etc/min.c
@@ -1,39 +1,36 @@
/*
* min.c -- a minimal Lua interpreter
-* loads stdin only with minimal error handling.
-* no interaction, and no standard library, only a "print" function.
+* runs one file from the command line or stdin if none given.
+* minimal error handling, no traceback, no interaction, no standard library,
+* only a "print" function.
*/
#include <stdio.h>
#include "lua.h"
#include "lauxlib.h"
+#include "lualib.h"
static int print(lua_State *L)
{
int n=lua_gettop(L);
int i;
+ const char *s="";
for (i=1; i<=n; i++)
{
- if (i>1) printf("\t");
- if (lua_isstring(L,i))
- printf("%s",lua_tostring(L,i));
- else if (lua_isnil(L,i))
- printf("%s","nil");
- else if (lua_isboolean(L,i))
- printf("%s",lua_toboolean(L,i) ? "true" : "false");
- else
- printf("%s:%p",luaL_typename(L,i),lua_topointer(L,i));
+ printf("%s%s",s,luaL_tolstring(L,i,NULL));
+ s="\t";
}
printf("\n");
return 0;
}
-int main(void)
+int main(int argc, char *argv[])
{
lua_State *L=lua_open();
lua_register(L,"print",print);
- if (luaL_dofile(L,NULL)!=0) fprintf(stderr,"%s\n",lua_tostring(L,-1));
+ luaL_openlibs(L);
+ if (luaL_dofile(L,argv[1])!=0) fprintf(stderr,"%s\n",lua_tostring(L,-1));
lua_close(L);
return 0;
}