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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
#!/usr/bin/perl
#*************************************************************************
#*
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
#************************************************************************/
$debug = "";
$ctrue = 1;
$cfalse = 0;
# reads a block
# Parameter: FileHandle
# list of Regular Expressions which terminate the block.
# for '#ifdef' block would then be ("^#else\$", "^#endif\$")
sub read_block {
local($file) = @_;
print "reading block '$file' ",scalar(@_),"\n" if $debug;
while ( <$file> ) {
chop;
s/\s*$//; # remove trailing whitespaces
s/^\s*//; # remove leading whitespaces
print "Input : \"$_\"\n" if $debug;
s/\/\/.*//; # Remove line comment
s/\/\*.*?\*\///g; # remove comments within one line
s/\s+/ /g; # Change all whitespace into a single blank
s/ *$//; # Remove whitespace at end
s/^# /#/; # Change # <command> to #<command>
@line = split(/ /,$_,3);
$_ = $line[0];
if ( $_ && /^#/ ) { # Line starts with '#' -> preprocessor command
print "proccessing line: @line\n" if $debug;
if (/#define/)
{
if ( $line[1] =~ /^$namefilter/ )
{
$mykey = $line[1];
$mykey =~ s/^$namefilter//;
$count += 1;
print OUT "$mykey ", $line[2], "\n";
print OUT2 "\t{ \"$mykey\", ", $line[2] ," },\n";
}
}
}
}
print "Leaving read_block at the end\n" if $debug;
}
# Read a file.
# first parameter ist the filename
sub read_file {
local ($filename,$file) = @_;
$file++; # String increment
local $TempFileName = $basename."/".$filename;
print "reading file $TempFileName as $file\n" if $debug;
open($file, $TempFileName) || die "error: Could not open file $TempFileName. ";
&read_block($file); # read data
close($file);
print "done reading $filename\n" if $debug;
}
# main starts here
$basename = ".";
$basename = $ARGV[0] if defined($ARGV[0]);
$filename = "app.hrc";
$filename = $ARGV[1] if defined($ARGV[1]);
$outfilebase = $filename;
$outfilebase =~ s/\.[^.]+$//; # cut off suffix
$outfilebase = $ARGV[2] if defined($ARGV[2]);
$namefilter = $ARGV[3] if defined($ARGV[3]);
print "Generating $outfilebase:\n";
$count = 0;
open(OUT,">$outfilebase");
open(OUT2,">$outfilebase.hxx");
print OUT2 "\{\n";
&read_file ($filename,"f00");
print OUT2 "\t{ \"\" ,0 }\n\};\n";
close(OUT);
close(OUT2);
if ( $count == 0 )
{
die "Error: No Entries Found generating \"$outfilebase.hxx\". Testtool will not work!"
}
|