use strict;
use warnings;

#--------------------------------------------------------------------------------------------------------------
# Run Namefix
#--------------------------------------------------------------------------------------------------------------

sub run_namefix 
{
	# reset misc vars
	$main::hl_counter 	= 0;
	$main::hlist2->delete("all");

	$main::id3_change	= 0;
        $main::change 		= 0;
        $main::suggestF 	= 0;
        $main::tmpfilefound 	= 0;
        $main::enum_count 	= 0;
        $main::tags_rm		= 0;
        $main::last_recr_dir 	= "";

        my $t_s 		= "";	# tmp string
        my @tmp_arr		= "";

        # prep vars we need
        if($main::disable_regexp == 1) 
        {
        	$main::rpwold_escaped = &escape_string($main::rpwold);
        } else 
        {
        	$main::rpwold_escaped = $main::rpwold;
        }

        if($main::filter_use_re == 0) 
        {
        	$main::filter_string_escaped = &escape_string($main::filter_string);
        }
        else 
        {
        	$main::filter_string_escaped = $main::filter_string;
        }

        if(-f $main::killwords_file) 
        {
        	undef @main::kill_words_arr;
                @tmp_arr = &readsf("$main::killwords_file");
                for $t_s(@tmp_arr) 
                {
                	$t_s = &escape_string($t_s);
                	push (@main::kill_words_arr, $t_s);
                }
        }
        if(-f $main::killpat_file) 
        {
                @main::kill_patterns_arr = &readsf("$main::killpat_file");
        }
        if(-f $main::casing_file) 
        {
        	undef @main::word_casing_arr;

                @tmp_arr = &readf("$main::casing_file");
                for $t_s(@tmp_arr) 
                {
                	$t_s = escape_string($t_s);
                	push (@main::word_casing_arr, $t_s);
                }
        }

        $main::orig_dir = cwd;
        chdir $main::dir;
	&nf_print("..");
        if(!$main::recr) 
        {
                opendir(DIR, "$main::dir") or die "can't open working dir: $!";
                my @dirlist = readdir(DIR);
                closedir DIR;
                                                # -- make sure we dont have . and .. in array --
                @dirlist = reverse @dirlist;    # this puts . and .. and end of array
                $#dirlist = $#dirlist - 2;      # remove . and ..
                @dirlist = &ci_sort(@dirlist);  # sort array

                foreach(@dirlist) 
                {
                        if(!$_) # stop warnings getting spat out
                        {       
                                next;
                        }
                        if($main::proc_dirs) 
                        {
                                &fixname;
                                next;
                        }
                        elsif(! -d $_) 
                        {
                                &fixname;
                        }
                }
        }
        if($main::recr) 
        {
                find(\&fixname, "$main::dir");
        }

	# print info

        &nf_print(" ");
        if ($main::testmode == 1) 
        {
        	&nf_print("$main::change files would have been modified");
        	if($main::id3_mode) 
        	{
        		&nf_print("$main::id3_change mp3s would of had tags updated.");
        	}
                if($main::tags_rm) 
                {
                	&nf_print("$main::tags_rm mp3 tags would have been removed");
                }
        } 
        else 
        {
        	&nf_print("$main::change files have been modifided");
        	if($main::id3_mode) 
        	{
        		&nf_print("$main::id3_change tags have been updated");
        	}
                if($main::tags_rm) 
                {
                	&nf_print("$main::tags_rm mp3 tags have been removed");
                }
        }
        &nf_print(" ");


        if($main::suggestF != 0) 
        {
        	$t_s = "namefix.pl was unable to rename $main::suggestF files.\nPerhaps you should enable \"FS Fix\".";
	        &nf_print($t_s);
		&nf_print(" ");
        }

        if($main::tmpfilefound != 0) 
        {
        	&nf_error("namefix.pl found tmp some of its own tmp files, this should not happen. Please check the following list of files.\n$main::tmpfilelist\n");
	}

	&nf_print("namefix.pl $main::version by $main::author");

        # cleanup

	$main::testmode = 1;  # return to test mode for safety :)
	chdir $main::dir;
}

1;

syntax highlighted by Code2HTML, v. 0.9.1