/* Do not remove the headers from this file! see /USAGE for more info. */ //:COMMAND //$$see: converse //USAGE: xargs <command> // //Acts like 'converse' (see help converse), except that it //allows you to use something other than say. For example, // //xargs tell rust // //will send all your input to Rust until you type: ** inherit CMD; inherit M_INPUT; private nomask void handle_piping(string verb, string arg) { if( arg == "**" || arg == "." ) { write("Done.\n"); modal_pop(); destruct(); return; } this_user()->force_me(verb + " " + arg); } varargs nomask void start_cmd(mixed * arg,int lock) { if(!clonep() || (base_name(previous_object()) != base_name())) { write("Illegal attempt to spoof command.\n"); destruct(); return; } write("Entering pipe mode. Type '**' to quit.\n"); if(lock) modal_push((: handle_piping, arg[0] :), "*\b",0,0,1); else modal_push((: handle_piping, arg[0] :), "*\b"); } private nomask void main(mixed * arg, mapping flags, string stdin, string array implode_inf) { arg[0] = implode_by_arr(arg[0],implode_inf); if (stdin) { arg[0] = replace_string(arg[0],"$*","$$"); if(strsrch(arg[0],"$$") != -1) foreach (string line in explode(stdin, "\n") - ({ "" })) this_user()->force_me(replace_string(arg[0],"$$",line)); else foreach (string line in explode(stdin, "\n") - ({ "" })) this_user()->force_me(arg[0] + " " + line); } else { if(flags["!"]) new(file_name())->start_cmd(arg,1); else new(file_name())->start_cmd(arg); } }