示例#1
0
static int pmain (lua_State *l) {
  struct Smain *s = (struct Smain *)lua_touserdata(l, 1);
  int status;
  int interactive = 0;
  if (s->argv[0] && s->argv[0][0]) progname = s->argv[0];
  L = l;
  lua_userinit(l);  /* open libraries */
  status = handle_luainit();
  if (status == 0) {
    status = handle_argv(s->argv, &interactive);
    if (status == 0 && interactive) manual_input();
  }
  s->status = status;
  return 0;
}
示例#2
0
int main (int argc, char *argv[])
{
    int i;
    lua_open();
    lua_pushstring("> ");
    lua_setglobal("_PROMPT");
    lua_userinit();
    if (argc < 2) {  /* no arguments? */
        if (isatty(0)) {
            printf("%s  %s\n", LUA_VERSION, LUA_COPYRIGHT);
            manual_input(1);
        }
        else
            ldo(lua_dofile, NULL);  /* executes stdin as a file */
    }
    else for (i=1; i<argc; i++) {
            if (argv[i][0] == '-') {  /* option? */
                switch (argv[i][1]) {
                case 0:
                    ldo(lua_dofile, NULL);  /* executes stdin as a file */
                    break;
                case 'i':
                    manual_input(1);
                    break;
                case 'q':
                    manual_input(0);
                    break;
                case 'd':
                    lua_setdebug(1);
                    break;
                case 'v':
                    printf("%s  %s\n(written by %s)\n\n",
                           LUA_VERSION, LUA_COPYRIGHT, LUA_AUTHORS);
                    break;
                case 'e':
                    i++;
                    if (ldo(lua_dostring, argv[i]) != 0) {
                        fprintf(stderr, "lua: error running argument `%s'\n", argv[i]);
                        return 1;
                    }
                    break;
                default:
                    print_message();
                    exit(1);
                }
            }
            else if (strchr(argv[i], '='))
                assign(argv[i]);
            else {
                int result = ldo(lua_dofile, argv[i]);
                if (result) {
                    if (result == 2) {
                        fprintf(stderr, "lua: cannot execute file ");
                        perror(argv[i]);
                    }
                    exit(1);
                }
            }
        }
#ifdef DEBUG
    lua_close();
#endif
    return 0;
}