Add lua-5.0.2
[obnox/wireshark/wip.git] / plugins / lua / lua-5.0.2 / etc / min.c
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 */
6
7 #include <stdio.h>
8 #include "lua.h"
9
10 static int print(lua_State *L)
11 {
12  int n=lua_gettop(L);
13  int i;
14  for (i=1; i<=n; i++)
15  {
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));
25  }
26  printf("\n");
27  return 0;
28 }
29
30 static const char *getF(lua_State *L, void *ud, size_t *size)
31 {
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;
37 }
38
39 int main(void)
40 {
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;
46 }