85 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			85 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
| #!/usr/bin/perl
 | |
| # this will adjust the 'slaying' lines
 | |
| # in the current directory, and all sub-directories,
 | |
| # so shuffling maps to new directories is not a problem.
 | |
| #
 | |
| # This absolutely depends on each map having a unique name.
 | |
| # This script should be placed outside of the map directory,
 | |
| # but you should be inside it when you run it.  Ideally
 | |
| # in the top-level maps directory.
 | |
| #
 | |
| # Dupes are noted, and not adjusted.
 | |
| #
 | |
| 
 | |
| use File::Basename qw( basename );
 | |
| use vars qw( $MAPBASE );
 | |
| use strict;
 | |
| use warnings;
 | |
| 
 | |
| # this is the base directory of the maps.
 | |
| # The slaying linesthatpointtoothermaps,
 | |
| # will be re-written as $MAPBASE/filename
 | |
| $MAPBASE = "/mlab";
 | |
| 
 | |
| my %FILES = ();
 | |
| my %DUPES = ();
 | |
| open(FIND, "find ./|");
 | |
| while (<FIND>) {
 | |
| 	chomp;
 | |
| 	next unless -f;
 | |
| 	next if $_ =~ /editor/;
 | |
| 	my $basename = basename($_);
 | |
| 	if ($FILES{$basename}) {
 | |
| 		unless (exists $DUPES{$basename}) {
 | |
| 			$DUPES{$basename} = [];
 | |
| 			push(@{ $DUPES{$basename} }, $FILES{$basename});
 | |
| 		}
 | |
| 		push(@{ $DUPES{$basename} }, $_);
 | |
| 		#warn "DUPE!: $_ => $FILES{$basename}\n";
 | |
| 	}
 | |
| 	else {
 | |
| 		$FILES{$basename} = $_;
 | |
| 	}
 | |
| }
 | |
| close(FIND);
 | |
| foreach my $file (keys %DUPES) {
 | |
| 	delete $FILES{$file};
 | |
| 	print "Dupe filename: $file Sizes:";
 | |
| 	foreach my $x (@{ $DUPES{$file} }) {
 | |
| 		printf " %s", -s $x; # file size
 | |
| 		printf " %s", $x; # file path
 | |
| 	}
 | |
| 	print "\n";
 | |
| }
 | |
| 
 | |
| foreach my $file (keys %FILES) {
 | |
| 	open(FILE, "<$FILES{$file}");
 | |
| 	my $data = join("", <FILE>);
 | |
| 	close(FILE);
 | |
| 
 | |
| 	my $newdata = $data;
 | |
| 
 | |
| 	$newdata =~ s/(slaying|final_map)\s+(.+)/mappath($1,$2)/eg;
 | |
| 	if ($newdata ne $data) {
 | |
| 		open(FILE, ">$FILES{$file}");
 | |
| 		print FILE $newdata;
 | |
| 		close(FILE);
 | |
| 	}
 | |
| 	#printf("%s => %s\n", $file, $FILES{$file});
 | |
| }
 | |
| 
 | |
| sub mappath {
 | |
| 	my ($type,$name) = @_;
 | |
| 	$name =~ s/\s+//g;
 | |
| 	my $file = basename($name);
 | |
| 	my $new = $FILES{$file};
 | |
| 	if ($new) {
 | |
| 		unless ($file =~ /[a-z]/) {
 | |
| 			print "CASE?: $file\n";
 | |
| 		}
 | |
| 		$new =~ s/^\.\///;
 | |
| 		return "$type $MAPBASE/$new";
 | |
| 	}
 | |
| 	return "$type $name";
 | |
| }
 |