// Rust for GUELib (ZorkMud) // Ported to TMI-2 4-21-94 #define BLANKLINE " \ " #define PROMPT "*" string verb; int cmd_pipe( string arg ) { object pipe_server; if(! arg) write("Note: No verb supplied, each line will be treated as its own command .\n"); seteuid( getuid( previous_object() ) ); pipe_server = clone_object( file_name( this_object() ) ); pipe_server->_main( arg ); return 1; } private void show_prompt() { write("\r"BLANKLINE"\r"PROMPT"\r"); } void _main( string arg ) { if( base_name( this_object() ) != file_name( previous_object() ) ) return; verb = arg; write("Entering pipe mode. Type '**' to quit.\n"); input_to( "handle_piping" ); show_prompt(); } static void handle_piping( string arg ) { if( arg == "**" ) { write( "Done.\n" ); destruct( this_object() ); return; } this_player()->force_me( sprintf("%s %s", verb, arg) ); input_to( "handle_piping" ); show_prompt(); } int help() { write(wrap( "Syntax: pipe [command]\n" "The pipe command is a more powerful version of the old converse command." " Whatever argument you supply to pipe gets appended to everything you type " "until you type '**' on a line by itself, at which time the pipe ends. " "This is meant for people with cut-and-paste, so that you can do " "'pipe tell rust' and enter a big block of text, without having to type " "'tell rust' every line, and cut-and-pasting every single line you want to pipe. \n" )); return 1; }