#! /usr/bin/perl -w use strict; use IO::Dir; use Shell; open (LOG_FILE, ">/home/bassplayer/add_to_cvs_log.txt") || die "Couldn't open log file"; my @all_directories; my @directories = get_directories( dir => '.', first => '1' ); while ( @directories ) { my @more_directories = get_directories( dir => $directories[0], first => '0' ); push @directories, @more_directories; push @all_directories, $directories[0]; shift @directories; } foreach ( @all_directories ) { print STDOUT "ALL_DIR: $_\n"; check_files( dir => $_ ); } close LOG_FILE; exit 0; ##################### sub get_directories { ##################### my %arg = @_; my @directories; my $d = new IO::Dir $arg{dir}; if ( defined $d ) { while ( defined( $_ = $d->read ) ) { unless ( $_ eq '..' || ( $_ eq '.' && $arg{first} ne '1' ) || $_ eq 'CVS' ) {; if ( -d $_ ) { print STDOUT "DIR: $_\n"; push @directories, $_; } } } undef $d; } 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 '.' || $_ eq 'CVS'; if ( -d $_ ) { print LOG_FILE "ADDING DIR: $_\n"; my $cvs_output = cvs( 'add', $_ ); print LOG_FILE "COMMITTING DIR: $_\n"; $cvs_output .= cvs( 'commit', '-m _', $_ ); print LOG_FILE $cvs_output; } if ( ( -B $_ ) && ( $_ =~ m/\.jpg$/ || $_ =~ m/\.jpeg$/ || $_ =~ m/\.gif$/ ) ) { print LOG_FILE "ADDING FILE: $_\n"; my $cvs_output = cvs( 'add', '-kb', $_ ); print LOG_FILE "COMMITTING FILE: $_\n"; $cvs_output .= cvs( 'commit', '-m _', $_ ); print LOG_FILE $cvs_output; } elsif ( $_ =~ m/\.pl$/ || m/\.cgi$/ || m/\.htm$/ || $_ =~ m/\.html$/ || $_ =~ m/\.shtml$/ ) { print LOG_FILE "ADDING FILE: $_\n"; my $cvs_output = cvs( 'add', $_ ); print LOG_FILE "COMMITTING FILE: $_\n"; $cvs_output .= cvs( 'commit', '-m _', $_ ); print LOG_FILE $cvs_output; } } undef $d; } }