Imported from ../lua-5.0.2.tar.gz.
[lua.git] / etc / min.c
blob45731c9d5a5380d827c029682733f3ae77a3ad30
1 /*
2 * min.c -- a minimal Lua interpreter
3 * loads stdin only with minimal error handling.
4 * no interaction, and no standard library, only a "print" function.
5 */
7 #include <stdio.h>
8 #include "lua.h"
10 static int print(lua_State *L)
12 int n=lua_gettop(L);
13 int i;
14 for (i=1; i<=n; i++)
16 if (i>1) printf("\t");
17 if (lua_isstring(L,i))
18 printf("%s",lua_tostring(L,i));
19 else if (lua_isnil(L,i))
20 printf("%s","nil");
21 else if (lua_isboolean(L,i))
22 printf("%s",lua_toboolean(L,i) ? "true" : "false");
23 else
24 printf("%s:%p",lua_typename(L,lua_type(L,i)),lua_topointer(L,i));
26 printf("\n");
27 return 0;
30 static const char *getF(lua_State *L, void *ud, size_t *size)
32 FILE *f=(FILE *)ud;
33 static char buff[512];
34 if (feof(f)) return NULL;
35 *size=fread(buff,1,sizeof(buff),f);
36 return (*size>0) ? buff : NULL;
39 int main(void)
41 lua_State *L=lua_open();
42 lua_register(L,"print",print);
43 if (lua_load(L,getF,stdin,"=stdin") || lua_pcall(L,0,0,0))
44 fprintf(stderr,"%s\n",lua_tostring(L,-1));
45 return 0;