// Petrarch
// Merentha Lib 1.0
// more.c
#include <std.h>
inherit DAEMON;
void continuep(string str, string *input, object tp, int lines, int start, object return_object, string return_function, string topic, int x);
varargs void display(mixed input, object tp, int lines, int start, object return_object, string return_function, string topic, int x) {
if(!tp) return;
if(!start) start=0;
if(!lines=tp->getenv("LINES")) lines=18;
if(stringp(input)) {
display(explode(input, "\n"), tp, lines, start, return_object, return_function, topic, x);
return;
}
message("more", implode(input[start..(start+lines)],"\n"), tp);
if(sizeof(input)>start+lines) {
message("prompt", "%^B_WHITE%^%^BLACK%^---MORE--- (q) to quit --- (enter) to continue %^RESET%^",tp);
input_to("continuep", input, tp, lines, start, return_object, return_function, topic, x);
}
else {
if(return_object && return_function) call_other(return_object,return_function, topic, x);
}
}
void continuep(string str, string *input, object tp, int lines, int start, object return_object, string return_function, string topic, int x) {
if(str) {
str=lower_case(str);
if(str=="q") return;
if(member_array(str, ({ "", "\n", " "}))!=-1) {
start+=lines+1;
display(input, tp, lines, start, return_object, return_function, topic, x);
return;
}
message("prompt", "%^B_WHITE%^%^BLACK%^---MORE--- (q) to quit --- (enter) to continue %^RESET%^",tp);
}
input_to("continuep", input, tp, lines, start, return_object, return_function, topic, x);
}