#include <standard.h> #include <cmd.h> inherit CMD_BASE; int ex_spool(string yn,string file,int linum); varargs object * wiz_present(string str,object ob,int internal); void setup() { position = 1; } static int cmd(string str, object me) { object *things; string * filenames; int egg; string spam; if(str == 0 || str == "") return 0; /* dodgy idea, but allows 'ed here' or 'ed strawberry' */ if (sizeof(things = me->wiz_present(str, me))) { spam = file_name(things[0]); sscanf(spam, "%s#%d", spam, egg); if (file_size(spam) < 0) filenames = ({ spam+".c" }); else filenames = ({ spam }); } else filenames = me->get_files(str); if (!sizeof(filenames)) { str = me->get_path(str); } else { if (sizeof(filenames) > 0) { str = filenames[0]; if (sizeof(filenames) > 1) { int loop; loop = 0; while(loop < sizeof(filenames) && file_size(filenames[loop]) < 0) loop++; if(loop >= sizeof(filenames)) { write("No such file.\n"); return 0; } else { str = filenames[loop]; } write("Ambiguous, using : " + str + "\n"); } } } if (file_size(str) == -2) { write("directory\n"); return 1; } ex_spool("y",str,1); return 1; } int ex_spool(string yn,string fil,int linum) { string s1; int i; mixed tnum; if(sscanf(yn,"%d",tnum) == 1) { linum = (int)tnum; if(linum < 1 ) linum = 1; } if( (yn == "Q") || (yn == "q") ) return 1; for(i = 0;i< 20; linum++) { i++; s1 = read_file(fil,linum,1); if( s1 == 0 ) { write("\n"); return(1); } write(s1); } printf("File %s Q to quit ",fil); input_to("ex_spool",0,fil,linum); return 1; }