/** * Nanvaent Industries International * LPC: Search and Replace * Written by : Weazel@Nanvaent Nov 92 * Modified by : Bill@Nanvaent Jan 93 * Modified by : Bill@Nanvaent+@Discworld Mar 93 */ #include <creator.h> inherit COMMAND_BASE; /** @ignore yes */ int cmd( string str ) { string *files, file; string s1, s2, s3, s4; mixed things; seteuid( geteuid(TP) ); if( !str ) return notify_fail("Usage: sar <search_string> <replace_string> " "<files>\n"); s4 = str[ 0 .. 0 ]; if( sscanf( str, s4+"%s"+s4+" "+s4+"%s"+s4+" %s", s1, s2, s3 ) != 3 ) if( sscanf( str, "%s %s %s", s1, s2, s3 ) != 3 ) { return notify_fail("Usage: sar <search_string> <replace_string> " "<files>\n"); } if( s1 == s2 ) return notify_fail("Search string is the same as the replace string, " "not replacing anything.\n"); if( strsrch( s3, "*") == -1 ) { if( sizeof( things = WIZ_PRESENT->wiz_present( s3, TP ) ) ) { s3 = file_name(things[0]); sscanf( s3, "%s#%*d", s3 ); if( !file_exists(s3) ) s3 += ".c"; } } files = (string *)TP->get_files(s3); if( !sizeof(files) ) return notify_fail("File(s) "+s3+" not found.\n"); s1 = replace( s1, "^M", "\n"); s2 = replace( s2, "^M", "\n"); foreach( file in files ) { if( !file_exists(file) ) continue; s4 = read_file(file); if( s4 && s4 != "" ) { s4 = replace( s4, s1, s2 ); rm(file); write_file( file, s4 ); printf("Finished processing %s.\n", file ); } else printf("Failed to process %s - no contents.\n", file ); } return 1; } /* cmd() */