From c712588222b619a83c4495b812cbf160e2718387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Fernandez-Sanguino=20Pe=C3=B1a?= Date: Fri, 15 Oct 2010 22:42:17 +0000 Subject: Code rewrite to clarify what the code does and the different situations, avoid nested ifs as this seems to confuse people CVS version numbers copypage.pl: 1.34 -> 1.35 --- copypage.pl | 92 +++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 50 insertions(+), 42 deletions(-) (limited to 'copypage.pl') diff --git a/copypage.pl b/copypage.pl index af6c28174b9..291f27c9d19 100755 --- a/copypage.pl +++ b/copypage.pl @@ -338,53 +338,61 @@ sub find_files_attic # to look for files in the Attic system "LC_ALL=C cvs status '$file' >$tmpfile 2>&1"; + if ( $? != 0 ) { + # CVS returns an error, then cleanup and return + # Do not complain because this might happen just because we + # have no network access, just cleanup the temporary file + unlink $tmpfile; + return 0; + } + # If CVS does not return an error then there is a file in CVS # even if $dstfile is not in the filesystem # There could be two reasons for this: # - The user has removed it but somebody else put it in CVS # - It resides in the Attic - if ( $? == 0 ) { - my $deleted_version = ""; - my $previous_version = ""; - my $cvs_location = ""; - - # Parse the result of cvs status - open(TF, $tmpfile) || die ("Cannot open temporary file: $?"); - while ($line = ) { - chomp $line; - if ( $line =~ /Repository revision:\s+(\d+)\.(\d+)\s+(.*)$/ ) { - $cvs_location = $3; - $deleted_version = $1.".".$2 ; - $previous_version = $1.".".($2-1); - } + my $deleted_version = ""; + my $previous_version = ""; + my $cvs_location = ""; + + # Parse the result of cvs status + open(TF, $tmpfile) || die ("Cannot open temporary file: $?"); + while ($line = ) { + chomp $line; + if ( $line =~ /Repository revision:\s+(\d+)\.(\d+)\s+(.*)$/ ) { + $cvs_location = $3; + $deleted_version = $1.".".$2 ; + $previous_version = $1.".".($2-1); } - close TF; - unlink $tmpfile; - - # Now determine in which situation we are in - if ( $cvs_location ne "" ) { - # We need CVS information to continue here - if ( $cvs_location =~ /Attic\// ) { - # Situation 1 - There is a translation in the Attic - # Give information on how to restore - print STDERR "ERROR: An old translation exists in the Attic, you should restore it using:\n"; - print STDERR "\tcvs update -j $deleted_version -j $previous_version $dstfile\n"; - print STDERR "\t[Edit and update the file]\n"; - print STDERR "\tcvs ci $dstfile\n"; - die ("Old translation found\n"); - } else { - # Situation 2 - There is already a file in CVS with this - # name, since it does not exist in the local copy maybe - # the local copy is not up to date - die ("ERROR: A translation already exist in CVS for this file.\nPlease update your CVS copy using 'cvs update'.\n"); - } # of if $cvs_location Attic - } # of if $cvs_location ne "" - } # of if $? -# Nothing to do if cvs returns an error, maybe its because we have -# no network access - -# Cleanup - unlink $tmpfile; - return 0; + } + close TF; + unlink $tmpfile; # File is not used from here on, delete it + + # Now determine in which situation we are in: + + if ( $cvs_location eq "" ) { +# Situation 0 - This happens when the return text is +# "Repository revision: No revision control file" + return 0; # Nothing to do here + + } + + if ( $cvs_location =~ /Attic\// ) { +# Situation 1 - There is a translation in the Attic +# Give information on how to restore + + print STDERR "ERROR: An old translation exists in the Attic, you should restore it using:\n"; + print STDERR "\tcvs update -j $deleted_version -j $previous_version $dstfile\n"; + print STDERR "\t[Edit and update the file]\n"; + print STDERR "\tcvs ci $dstfile\n"; + die ("Old translation found\n"); + } + + # Situation 2 - There is already a file in CVS with this + # name, since it does not exist in the local copy maybe + # the local copy is not up to date + print STDERR "ERROR: A translation already exist in CVS for this file.\n"; + print STDERR "\tPlease update your CVS copy using 'cvs update'.\n"; + die ("Translation already exists\n"); } -- cgit v1.2.3