#! /usr/bin/perl -w use strict; use IO::Dir; use Shell; open (LOG_FILE, ">/home/bassplayer/add_to_cvs/htdocs_out.txt") || die "Couldn't open log file"; open (DIR_FILE, ">/home/bassplayer/add_to_cvs/htdocs_dir.txt") || die "Couldn't open dir file"; my @all_directories; my @directories = ( '.' ); while ( @directories ) { my @more_directories = get_directories( dir => $directories[0], first => '0' ); push @directories, @more_directories; push @all_directories, $directories[0]; shift @directories; } print LOG_FILE "TOTAL NUM DIR: $#all_directories\n"; foreach ( @all_directories ) { check_files( dir => $_ ); } close DIR_FILE; close LOG_FILE; exit 0; ##################### sub get_directories { ##################### my %arg = @_; my @directories; my $path = $arg{dir}; opendir(DIR, $arg{dir}) || die "can't opendir $arg{dir}: $!"; my @output = grep { -d "$arg{dir}/$_" } readdir(DIR); for ( my $i = 0 ; $i <= $#output ; $i++ ) { if ( $output[$i] ne '.' && $output[$i] ne '..' && $output[$i] !~ m/CVS/ && $arg{dir} !~ m/CVS/ ) { my $directory = "$arg{dir}/$output[$i]"; my $cvs_output; print LOG_FILE "ADDING DIR: $directory\n"; $cvs_output = cvs( 'add', $directory ); print LOG_FILE "COMMITTING DIR: $directory\n"; $cvs_output .= cvs( 'commit', '-m _', $directory ); print LOG_FILE $cvs_output; push @directories, $directory; print DIR_FILE "$directory\n"; } } return @directories; } ################# sub check_files { ################# my %arg = @_; my $d = new IO::Dir $arg{dir}; if ( defined $d ) { while ( defined( $_ = $d->read ) ) { next if $_ eq '..' || $_ eq '.' || $_ =~ m/CVS/; my $file = "$arg{dir}/$_"; if ( -d $_ ) { print LOG_FILE "SKIPPING DIR: $file\n"; } elsif ( $_ =~ m/\.jpg$/ || $_ =~ m/\.jpeg$/ || $_ =~ m/\.gif$/ || $_ =~ m/\.xls$/ || $_ =~ m/\.doc$/ || $_ =~ m/\.pdf$/ || $_ =~ m/\.swf$/ || $_ =~ m/\.cgi$/ ) { my $cvs_output; print LOG_FILE "ADDING BINARY FILE: $file\n"; $cvs_output = cvs( 'add', '-kb', $file ); print LOG_FILE "COMMITTING FILE: $file\n"; $cvs_output .= cvs( 'commit', '-m _', $file ); print LOG_FILE $cvs_output; } elsif ( $_ =~ m/\.htm$/ || $_ =~ m/\.html$/ || $_ =~ m/\.shtml$/ || $_ =~ m/\.js$/ || $_ =~ m/\.css$/ || $_ =~ m/\.pl$/ || $_ =~ m/^\.htaccess$/ || $_ =~ m/^\..*passwd$/ || $_ =~ m/^\.users$/ || $_ =~ m/^\.txt$/ ) { my $cvs_output; print LOG_FILE "ADDING FILE: $file\n"; $cvs_output = cvs( 'add', $file ); print LOG_FILE "COMMITTING FILE: $file\n"; $cvs_output .= cvs( 'commit', '-m _', $file ); print LOG_FILE $cvs_output; } } undef $d; } }