2020-09-06 05:43:07 -07:00

91 lines
2.7 KiB
C

#include <lib.h>
#include <runtime_config.h>
inherit LIB_DAEMON;
static int send_queued_mess(string tmp, object whom){
message("receive", tmp, whom);
return 1;
}
mixed cmd(string str) {
string *arr;
mixed tmp;
int delay = -1;
int bmax = (__LARGEST_PRINTABLE_STRING__ - 1024);
int chunks, rem, currchunk, smax = (get_config(__MAX_STRING_LENGTH__) - 10);
if( !str ) return "You must specify a file to longcat.";
else str = absolute_path(this_player()->query_cwd(), str);
if( !file_exists(str) ) return "File " + str + " not found.";
if((tmp = file_size(str)) < smax){
if( !(tmp = read_file(str)) )
return "Unable to read file " + str + ".";
arr = explode(tmp,"\n");
foreach(string line in arr){
message("system", line, this_player());
}
return 1;
}
chunks = tmp / bmax;
rem = tmp % bmax;
if(rem) chunks++;
while(chunks){
delay++;
chunks--;
if(chunks){
tmp = read_bytes(str, currchunk, bmax);
currchunk += bmax;
}
if(rem && !chunks){
tmp = read_bytes(str, currchunk, rem);
currchunk += rem;
}
call_out("send_queued_mess", (delay/5), tmp, this_player());
}
return 1;
}
string GetHelp() {
return ("Syntax: longcat <file>\n\n"
" /\___/\ \n"
" / \ \n"
" | # # | \n"
" \ @ | \n"
" \ _|_ / \n"
" / \______ \n"
" / _______ ___ \ \n"
" |_____ \ \__/ \n"
" | \__/ \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" | | \n"
" / \ \n"
" / ____ \ \n"
" | / \ | \n"
" | | | | \n"
" / | | \ \n"
" \__/ \__/ \n"
"Displays the contents of the file mentioned all at once, "
"with no limit on the output size. Note that the output "
"for ludicrously large files may lag the mud and cause "
"the command to error out with a \"Too long evaluation\".");
}