#define CHUNK 16 string file; int line; id(str) { return str == "less" || str == "lesser"; } short() { if (!file) return "Lesser object"; return "Less " + file; } init() { add_action("less", "less"); } input(str) { if (str == "" || str == "d") line += CHUNK; else if (str == "q") { write("Ok.\n"); return; } else if (str == "u" && line > 0) { line -= CHUNK; if (line < 1) line = 1; } if (cat(file, line, CHUNK) == 0) { file = 0; write("EOF\n"); return; } write(line + CHUNK + " More: "); input_to("input"); } less(str) { file = str; line = 1; if (cat(file, line, CHUNK) == 0) { write("No such file\n"); return; } input_to("input"); write(CHUNK + 1 + " more: "); return 1; } get() { return 1; } query_value() { return 20; }