summaryrefslogtreecommitdiff
path: root/NetWare/t/NWModify-Exist.pl
diff options
context:
space:
mode:
Diffstat (limited to 'NetWare/t/NWModify-Exist.pl')
-rw-r--r--NetWare/t/NWModify-Exist.pl130
1 files changed, 130 insertions, 0 deletions
diff --git a/NetWare/t/NWModify-Exist.pl b/NetWare/t/NWModify-Exist.pl
new file mode 100644
index 0000000000..2b1d07beb8
--- /dev/null
+++ b/NetWare/t/NWModify-Exist.pl
@@ -0,0 +1,130 @@
+
+
+print "\nModifying the '.t' files...\n\n";
+
+use File::Basename;
+use File::Copy;
+
+## Change the below line to the folder you want to process
+$DirName = "/perl/scripts/t";
+
+$FilesTotal = 0;
+$FilesRead = 0;
+$FilesModified = 0;
+
+opendir(DIR, $DirName);
+@Dirs = readdir(DIR);
+
+foreach $DirItem(@Dirs)
+{
+ $DirItem = $DirName."/".$DirItem;
+ push @DirNames, $DirItem; # All items under $DirName folder is copied into an array.
+}
+
+foreach $FileName(@DirNames)
+{
+ if(-d $FileName)
+ { # If an item is a folder, then open it further.
+
+ opendir(SUBDIR, $FileName);
+ @SubDirs = readdir(SUBDIR);
+ close(SUBDIR);
+
+ foreach $SubFileName(@SubDirs)
+ {
+ if(-f $SubFileName)
+ {
+ &Process_File($SubFileName); # If file, process it.
+ }
+ else
+ {
+ $SubFileName = $FileName."/".$SubFileName;
+ push @DirNames, $SubFileName; # If sub-folder, push it into the array.
+ }
+ }
+ }
+ else
+ {
+ if(-f $FileName)
+ {
+ &Process_File($FileName); # If file, process it.
+ }
+ }
+}
+
+close(DIR);
+
+print "\n\n\nTotal number of files present = $FilesTotal\n";
+print "Total number of '.t' files read = $FilesRead\n";
+print "Total number of '.t' files modified = $FilesModified\n\n";
+
+
+
+
+# Process the file.
+sub Process_File
+{
+ local($FileToProcess) = @_; # File name.
+ local($Modified) = 0;
+
+ if(!(-w $FileToProcess)) {
+ # If the file is a read-only file, then change its mode to read-write.
+ chmod(0777, $FileToProcess);
+ }
+
+ ## For example:
+ ## If the value of $FileToProcess is '/perl/scripts/t/pragma/warnings.t', then
+ ## $dir = '/perl/scripts/t/pragma/'
+ ## $base = 'warnings'
+ ## $ext = '.t'
+ $dir = dirname($FileToProcess); # Get the folder name
+ $base = basename($FileToProcess); # Get the base name
+ ($base, $dir, $ext) = fileparse($FileToProcess, '\..*'); # Get the extension of the file passed.
+
+
+ # Do the processing only if the file has '.t' extension.
+ if($ext eq '.t') {
+
+ open(FH, "+< $FileToProcess") or die "Unable to open the file, $FileToProcess for reading and writing.\n";
+ @ARRAY = <FH>; # Get the contents of the file into an array.
+
+ flock(FH, LOCK_EX); # Lock the file for safety purposes.
+ foreach $Line(@ARRAY) # Get each line of the file.
+ {
+ if($Line =~ m/\@INC = /)
+ { # If the line contains the string (@INC = ), then replace it
+
+ # Replace "@INC = " with "unshift @INC, "
+ $Line =~ s/\@INC = /unshift \@INC, /;
+
+ $Modified = 1;
+ }
+
+ if($Line =~ m/push \@INC, /)
+ { # If the line contains the string (push @INC, ), then replace it
+
+ # Replace "push @INC, " with "unshift @INC, "
+ $Line =~ s/push \@INC, /unshift \@INC, /;
+
+ $Modified = 1;
+ }
+ }
+
+ seek(FH, 0, 0); # Seek to the beginning.
+ print FH @ARRAY; # Write the changed array into the file.
+ flock(FH, LOCK_UN); # unlock the file.
+ close FH; # close the file.
+
+ $FilesRead++; # One more file read.
+
+ if($Modified) {
+ print "Modified the file, $FileToProcess\n";
+ $Modified = 0;
+
+ $FilesModified++; # One more file modified.
+ }
+ }
+
+ $FilesTotal++; # One more file present.
+}
+