/* Do not remove the headers from this file! see /USAGE for more info. */ //:COMMAND //USAGE: ed [ filename ] // //The mud file editor. //With no file name supplied, the last file editted will be edited again. //If you supply a file/path that does not exist, ed will respond with [new] //then your ed prompt. // //Help for ed commands is available from within ed itself. inherit CMD; private nosave mapping locks = ([]); private nomask void unlock(string fname) { map_delete(locks, fname); } nomask private void main(string* argv) { mixed fname; if ( sizeof(argv) ) fname = argv[0]; if (objectp(fname)) fname = base_name(fname); if ( !fname ) { fname = get_user_variable("cwf"); if ( !fname ) { out("You have no cwf. Please specify a file.\n"); return; } } else fname = evaluate_path(fname); if(objectp(locks[fname])) { printf("Sorry, that file is already being edited by %s.\n", locks[fname]->query_userid()); return; } if(file_size(fname)>MAX_FILE_SIZE) { printf("Sorry, that file is too large to edit.\n"); return; } locks[fname] = this_user(); this_user()->query_shell_ob()->set_cwf(fname); new(ED_SESSION)->begin_editing(fname, 0, (: unlock($(fname)) :)); }