Blame view

tools/sctk-2.4.10/src/stmValidator/buildInstallVersion.pl 1.64 KB
8dcb6dfcb   Yannick Estève   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
  #!/usr/bin/perl
  
  # STMVALIDATOR
  # Author: Jon Fiscus, Jerome Ajot
  #
  # This software was developed at the National Institute of Standards and Technology by 
  # employees of the Federal Government in the course of their official duties. Pursuant
  # to title 17 Section 105 of the United States Code this software is not subject to
  # copyright protection and is in the public domain. RTTMVALIDATOR is an experimental system.
  # NIST assumes no responsibility whatsoever for its use by other parties, and makes no
  # guarantees, expressed or implied, about its quality, reliability, or any other
  # characteristic. We would appreciate acknowledgement if the software is used.
  #
  # THIS SOFTWARE IS PROVIDED "AS IS."  With regard to this software, NIST MAKES NO EXPRESS
  # OR IMPLIED WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING MERCHANTABILITY,
  # OR FITNESS FOR A PARTICULAR PURPOSE.
  
  use strict;
  
  my $exe = "stmValidator-main.pl";
  
  my @modules = ();
  my @file = ();
  
  open EXE,"<$exe" || die "Failed to open executable $exe";
  
  while (<EXE>)
  {
      if ($_ =~ /my \$Installed = 0;/)
      {
  		push @file, "my \$Installed = 1;
  ";
      } 
      elsif ($_ =~ /\#\#\# Begin Local Modules/)
      {
  		do
  		{
  	    	push(@modules, $1) if($_ =~ /use\s+(\S+)\s*;/);
  	    	$_ = <EXE>;
  		}
  		while ($_ !~ /\#\#\# End Local Modules/);
  		my $modExp = "use\\s+(".join("|",@modules).")";
  
  		### Insert the modules 
  		foreach my $mod(@modules)
  		{
  			open (MOD, "<$mod.pm") || die "Failed to open $mod.pm";
  			
  			while (<MOD>)
  			{
  				push(@file, $_) if ($_ !~ /$modExp/);
  			}
  			
  			close MOD;
  		}
  		
  		### Reset the package
  		push @file, "package main;
  "
  	} 
  	else
  	{
  		push(@file, $_);
      }
  }
  
  print @file;