** Read multiple lines until a complete Lua statement */
| 348 | ** Read multiple lines until a complete Lua statement |
| 349 | */ |
| 350 | static int multiline (lua_State *L) { |
| 351 | for (;;) { /* repeat until gets a complete statement */ |
| 352 | size_t len; |
| 353 | const char *line = lua_tolstring(L, 1, &len); /* get what it has */ |
| 354 | int status = luaL_loadbuffer(L, line, len, "=stdin"); /* try it */ |
| 355 | if (!incomplete(L, status) || !pushline(L, 0)) { |
| 356 | lua_saveline(L, line); /* keep history */ |
| 357 | return status; /* cannot or should not try to add continuation line */ |
| 358 | } |
| 359 | lua_pushliteral(L, "\n"); /* add newline... */ |
| 360 | lua_insert(L, -2); /* ...between the two lines */ |
| 361 | lua_concat(L, 3); /* join them */ |
| 362 | } |
| 363 | } |
| 364 | |
| 365 | |
| 366 | /* |
no test coverage detected