Project

General

Profile

1 2580 stephane
#!/usr/bin/perl
2
3
%subst = ( );
4
$quiet   = 0;
5
6
if (open(F,"search.cfg"))
7
{
8
  $_=<F> ; s/[ \t\n]*$//g ; $subst{"_doc"} = $_;
9
  $_=<F> ; s/[ \t\n]*$//g ; $subst{"_cgi"} = $_;
10
}
11
12
while ( @ARGV ) {
13
  $_ = shift @ARGV;
14
  if ( s/^-// ) {
15
    if ( /^l(.*)/ ) {
16
      $v = ($1 eq "") ? shift @ARGV : $1;
17
      ($v =~ /\/$/) || ($v .= "/");
18
      $_ = $v;
19
      if ( /(.+)\@(.+)/ ) {
20
        if ( exists $subst{$1} ) {
21
          $subst{$1} = $2;
22
        } else {
23
          print STDERR "Unknown tag file $1 given with option -l\n";
24
          &usage();
25
        }
26
      } else {
27
        print STDERR "Argument $_ is invalid for option -l\n";
28
        &usage();
29
      }
30
    }
31
    elsif ( /^q/ ) {
32
      $quiet = 1;
33
    }
34
    elsif ( /^\?|^h/ ) {
35
      &usage();
36
    }
37
    else {
38
      print STDERR "Illegal option -$_\n";
39
      &usage();
40
    }
41
  }
42
  else {
43
    push (@files, $_ );
44
  }
45
}
46
47
foreach $sub (keys %subst)
48
{
49
  if ( $subst{$sub} eq "" )
50
  {
51
    print STDERR "No substitute given for tag file `$sub'\n";
52
    &usage();
53
  }
54
  elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" )
55
  {
56
    print "Substituting $subst{$sub} for each occurence of tag file $sub\n";
57
  }
58
}
59
60
if ( ! @files ) {
61
  if (opendir(D,".")) {
62
    foreach $file ( readdir(D) ) {
63
      $match = ".html";
64
      next if ( $file =~ /^\.\.?$/ );
65
      ($file =~ /$match/) && (push @files, $file);
66
      ($file =~ "tree.js") && (push @files, $file);
67
    }
68
    closedir(D);
69
  }
70
}
71
72
if ( ! @files ) {
73
  print STDERR "Warning: No input files given and none found!\n";
74
}
75
76
foreach $f (@files)
77
{
78
  if ( ! $quiet ) {
79
    print "Editing: $f...\n";
80
  }
81
  $oldf = $f;
82
  $f   .= ".bak";
83
  unless (rename $oldf,$f) {
84
    print STDERR "Error: cannot rename file $oldf\n";
85
    exit 1;
86
  }
87
  if (open(F,"<$f")) {
88
    unless (open(G,">$oldf")) {
89
      print STDERR "Error: opening file $oldf for writing\n";
90
      exit 1;
91
    }
92
    if ($oldf ne "tree.js") {
93
      while (<F>) {
94
        s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g;
95
        print G "$_";
96
      }
97
    }
98
    else {
99
      while (<F>) {
100
        s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g;
101
        print G "$_";
102
      }
103
    }
104
  }
105
  else {
106
    print STDERR "Warning file $f does not exist\n";
107
  }
108
  unlink $f;
109
}
110
111
sub usage {
112
  print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n";
113
  print STDERR "Options:\n";
114
  print STDERR "     -l tagfile\@linkName   tag file + URL or directory \n";
115
  print STDERR "     -q                    Quiet mode\n\n";
116
  exit 1;
117
}