Browse Source

prompt for interactive mode

Roberto Ierusalimschy 28 years ago
parent
commit
a3235ad270
1 changed files with 13 additions and 6 deletions
  1. 13 6
      lua.c

+ 13 - 6
lua.c

@@ -1,5 +1,5 @@
 /*
 /*
-** $Id: $
+** $Id: lua.c,v 1.1 1997/09/16 19:25:59 roberto Exp roberto $
 ** Lua stand-alone interpreter
 ** Lua stand-alone interpreter
 ** See Copyright Notice in lua.h
 ** See Copyright Notice in lua.h
 */
 */
@@ -30,11 +30,15 @@ static void manual_input (void)
 {
 {
   if (isatty(0)) {
   if (isatty(0)) {
     char buffer[250];
     char buffer[250];
-    while (fgets(buffer, sizeof(buffer), stdin) != 0) {
+    while (1) {
       lua_beginblock();
       lua_beginblock();
+      printf("%s", lua_getstring(lua_getglobal("_PROMPT")));
+      if (fgets(buffer, sizeof(buffer), stdin) == 0)
+        break;
       lua_dostring(buffer);
       lua_dostring(buffer);
       lua_endblock();
       lua_endblock();
     }
     }
+    printf("\n");
   }
   }
   else
   else
     lua_dofile(NULL);  /* executes stdin as a file */
     lua_dofile(NULL);  /* executes stdin as a file */
@@ -45,11 +49,14 @@ int main (int argc, char *argv[])
 {
 {
   int i;
   int i;
   setlocale(LC_ALL, "");
   setlocale(LC_ALL, "");
-  lua_iolibopen ();
-  lua_strlibopen ();
-  lua_mathlibopen ();
-  if (argc < 2)
+  lua_iolibopen();
+  lua_strlibopen();
+  lua_mathlibopen();
+  lua_pushstring("Lua> "); lua_setglobal("_PROMPT");
+  if (argc < 2) {
+    printf("%s  %s\n", LUA_VERSION, LUA_COPYRIGHT);
     manual_input();
     manual_input();
+  }
   else for (i=1; i<argc; i++) {
   else for (i=1; i<argc; i++) {
     if (strcmp(argv[i], "-") == 0)
     if (strcmp(argv[i], "-") == 0)
       manual_input();
       manual_input();