solenv/bin: remove unreferenced obsoleted scripts
And move striplanguagetags.sh to bin/ - possibly it's used. Change-Id: I68e23ef543f4e26f617d9860681273234ec9174c Reviewed-on: https://gerrit.libreoffice.org/4239 Reviewed-by: Mathias M <matm@gmx.fr> Reviewed-by: David Tardon <dtardon@redhat.com> Tested-by: David Tardon <dtardon@redhat.com>
This commit is contained in:
parent
cb1ec05a72
commit
dbb0703272
26 changed files with 0 additions and 2822 deletions
|
@ -1,28 +0,0 @@
|
|||
#!/bin/sh -e
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
if [ -z "$1" ]; then
|
||||
exit 1;
|
||||
fi
|
||||
mkdir -p "$1"/bin
|
||||
mkdir -p "$1"/inc
|
||||
mkdir -p "$1"/lib
|
||||
mkdir -p "$1"/misc
|
||||
mkdir -p "$1"/obj
|
||||
mkdir -p "$1"/slb
|
||||
mkdir -p "$1"/slo
|
|
@ -1,52 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
|
||||
# This script is needed in the process of generating exported
|
||||
# symbols list out of map files on MinGW
|
||||
# The magic generating the regular expression from the temporary
|
||||
# mapfile containing only star and question mark symbols
|
||||
#
|
||||
# The script has to be called as follows:
|
||||
# nm -gx <file>.o | addsym-mingw.sh <file-with-wildcard-symbols> <temporary-file-where-to-write-the-search-expression-to>
|
||||
# See tg_shl.mk for an example of how to use the script
|
||||
#
|
||||
# Replace every * with .* and every ? with . to get awk expression
|
||||
# Remove whitespaces and comments in expression
|
||||
# Put ^ at the beginning of every expression
|
||||
# Put $ at the beginning of every expression
|
||||
# Connect them all on one line, separated by |
|
||||
# Remove | at the end of this regular expression because the last end
|
||||
# of line was also replaced by |
|
||||
|
||||
if [ -s $1 ]
|
||||
then
|
||||
cat $1 | sed 's#*#.*#g
|
||||
s#?#.#g
|
||||
s#;.*##g
|
||||
s# ##g
|
||||
s# ##g
|
||||
s#^#^#
|
||||
s#$#$#' | tr '\n' '|' | sed "s#|\$##" >$2
|
||||
|
||||
# Please note that the awk expression expects to get the output of 'nm -gP'!
|
||||
awk -v SYMBOLSREGEXP="`cat $2`" '
|
||||
match (substr ($1,2) ,SYMBOLSREGEXP) > 0 { print substr ($1,2) ";" }'
|
||||
fi
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
s/\(\.\.\/\)\{2,4\}/..\//g
|
||||
s/\(\.\.\\\)\{2,4\}/..\\/g
|
|
@ -1,36 +0,0 @@
|
|||
:
|
||||
eval 'exec perl -wS $0 ${1+"$@"}'
|
||||
if 0;
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
|
||||
while (<>)
|
||||
{
|
||||
next if /^Only in/ ;
|
||||
next if /^diff -rc / ;
|
||||
next if /^diff -ru / ;
|
||||
next if /^Common sub/ ;
|
||||
|
||||
if ( /^---/ || /^\*\*\*/ || /^\+\+\+/ )
|
||||
{
|
||||
s/\\/\//g;
|
||||
}
|
||||
|
||||
print ;
|
||||
}
|
||||
|
|
@ -1,89 +0,0 @@
|
|||
#! /usr/bin/env perl
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
|
||||
# reads a list of dependency files from a file, opens and
|
||||
# concatenates them, while eliding duplicate nop rules.
|
||||
use File::Spec;
|
||||
|
||||
sub read_depfiles($)
|
||||
{
|
||||
my $name = shift;
|
||||
my $depfh;
|
||||
my @files;
|
||||
open ($depfh, $name) || die "Can't open list of dependencies: $name: $!";
|
||||
while (<$depfh>) {
|
||||
push @files, split(/\s+/, $_);
|
||||
}
|
||||
close ($depfh);
|
||||
|
||||
# print STDERR "dep files: " . join ("'", @files) . "\n";
|
||||
return @files;
|
||||
}
|
||||
|
||||
my @depfiles = read_depfiles (shift @ARGV);
|
||||
|
||||
my %rules;
|
||||
print "# concatenated, reduced dependencies generated by solenv/bin/concat-deps.pl\n";
|
||||
print "# generated with \$(SRCDIR) = $ENV{SRCDIR}\n";
|
||||
print "# generated with \$(OUTDIR) = $ENV{OUTDIR}\n";
|
||||
|
||||
my $boost_path = $ENV{OUTDIR} . '/inc/boost/';
|
||||
|
||||
for my $fname (@depfiles) {
|
||||
my $fileh;
|
||||
|
||||
next if ($fname eq '');
|
||||
open ($fileh, $fname) || die "Can't open $fname: $!\n";
|
||||
|
||||
my $last = '';
|
||||
my $rule_count = 0;
|
||||
my $with_boost_count = 0;
|
||||
while (<$fileh>) {
|
||||
# canonicalise path
|
||||
m/^(\s*)([^\s\n:]*)(.*\n?)$/;
|
||||
my $pre = $1;
|
||||
my $path = $2;
|
||||
my $post = $3;
|
||||
$rule_count++ if ($post =~ m/:/);
|
||||
if (length($path) > 0 && index($path,$ENV{SRCDIR}) == 0) {
|
||||
$path = File::Spec->rel2abs($2);
|
||||
if (index($path,$ENV{OUTDIR}) == 0) {
|
||||
my $solverpath = substr($path, length($ENV{OUTDIR}));
|
||||
if ($solverpath =~ m|/inc/boost/|) {
|
||||
if ($with_boost_count != $rule_count || !($post =~ m/\\/)) {
|
||||
$path = '$(OUTDIR)/inc/boost/deliver.log';
|
||||
$with_boost_count = $rule_count;
|
||||
} else { # elide it
|
||||
$path = ''; $pre = ''; $post = '';
|
||||
}
|
||||
} else {
|
||||
$path = "\$(OUTDIR)" . $solverpath;
|
||||
}
|
||||
} else {
|
||||
$path = "\$(SRCDIR)" . substr($path, length($ENV{SRCDIR}));
|
||||
}
|
||||
}
|
||||
$line = "$pre$path$post";
|
||||
|
||||
if ($line eq "\n") {
|
||||
if ($last =~ /^(.*):\s*$/) {
|
||||
if (defined $rules{$1}) {
|
||||
$last = '';
|
||||
next;
|
||||
}
|
||||
$rules{$1} = 1;
|
||||
}
|
||||
}
|
||||
print $last;
|
||||
$last = $line;
|
||||
}
|
||||
print "$last\n"; # in case of missing newline
|
||||
|
||||
close ($fileh);
|
||||
}
|
|
@ -1,138 +0,0 @@
|
|||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
|
||||
#
|
||||
# convertlinks - a perl script to make hrefs to
|
||||
# http://api.openoffice.org/common/ref relativ.
|
||||
#
|
||||
|
||||
use File::Find;
|
||||
|
||||
# for the convenience of &wanted calls, including -eval statements:
|
||||
use vars qw/*name *dir/;
|
||||
*name = *File::Find::name;
|
||||
*dir = *File::Find::dir;
|
||||
@files = ();
|
||||
|
||||
if($#ARGV == 1)
|
||||
{
|
||||
$pattern = "www";
|
||||
} else
|
||||
{
|
||||
$pattern = $ARGV[2];
|
||||
}
|
||||
|
||||
find(\&wanted, "$ARGV[0]");
|
||||
|
||||
$return = 1;
|
||||
|
||||
foreach $i (@files)
|
||||
{
|
||||
next if( $i->{directory} =~ /.*common((\/|\\)ref(.*))/ ||
|
||||
$i->{directory} =~ /.*cpp((\/|\\)ref(.*))/ ||
|
||||
$i->{directory} =~ /.*java((\/|\\)ref(.*))/ );
|
||||
|
||||
open ( FILEIN, $i->{filename} ) || die "could not open $i->{filename} for reading";
|
||||
|
||||
$relPath = ".";
|
||||
$relToSource = ".";
|
||||
if( $i->{directory} =~ /.*$pattern((\/|\\)(.*))/ )
|
||||
{
|
||||
$relPath = $3;
|
||||
$relPath =~ s#\w+#\.\.#go;
|
||||
if($pattern eq "examples")
|
||||
{
|
||||
$relPath = "\.\.\/$relPath";
|
||||
}
|
||||
if($pattern eq "www")
|
||||
{
|
||||
$relToSource = "\.\.\/$relPath";
|
||||
} else
|
||||
{
|
||||
$relToSource = $relPath;
|
||||
}
|
||||
} else
|
||||
{
|
||||
if($pattern eq "examples")
|
||||
{
|
||||
$relPath = "\.\.";
|
||||
}
|
||||
if($pattern eq "www")
|
||||
{
|
||||
$relToSource = "\.\.";
|
||||
} else
|
||||
{
|
||||
$relToSource = $relPath;
|
||||
}
|
||||
}
|
||||
|
||||
@lines = <FILEIN>;
|
||||
close( FILEIN );
|
||||
open( FILEOUT, ">$i->{filename}.tmp" ) || die "could not open $i->{filename} for writing";
|
||||
foreach $_ (@lines)
|
||||
{
|
||||
# change the refenreces to the index in dependency of UDK or ODK
|
||||
if("$ARGV[1]" eq "udk_" | "$ARGV[1]" eq "odk_")
|
||||
{
|
||||
s#((\")(index.html\"))#$2$ARGV[1]$3#go;
|
||||
s#((\/|\")(faq.html\"))#$2$ARGV[1]$3#go;
|
||||
s#((\/|\")(bylaws.html\"))#$2$ARGV[1]$3#go;
|
||||
}
|
||||
|
||||
s#((http:\/\/api\.openoffice\.org\/)(common\/ref[^\"]+))#$relPath\/$3#go;
|
||||
s#((http:\/\/api\.openoffice\.org\/unbranded-source\/)(.*)(examples\/examples.html))#$relToSource\/$4#go;
|
||||
|
||||
if($pattern eq "examples")
|
||||
{
|
||||
# change the links for the C++/Java examples in the ODK
|
||||
s#((http:\/\/api\.openoffice\.org\/source\/browse\/api\/odk\/examples\/)(java\/*))#$3#go;
|
||||
s#((http:\/\/api\.openoffice\.org\/source\/browse\/api\/odk\/examples\/)(cpp\/*))#$3#go;
|
||||
s#((http:\/\/api\.openoffice\.org\/source\/browse\/api\/odk\/examples\/)(basic\/*))#$3#go;
|
||||
s#((http:\/\/api\.openoffice\.org\/source\/browse\/api\/odk\/examples\/)(OLE\/*))#$3#go;
|
||||
|
||||
# change link api specific stuff
|
||||
s#((http:\/\/api\.openoffice\.org\/)(design_guide.html))#$relPath\/www\/$3#go;
|
||||
s#(http:\/\/api\.openoffice\.org\/index.html)#$relPath\/www\/odk_index.html#go;
|
||||
|
||||
# change the links for the C++ examples in the UDK
|
||||
s#((http:\/\/udk\.openoffice\.org\/source\/browse\/udk\/product\/examples\/)(cpp\/*))#$3#go;
|
||||
|
||||
# change the links to udk.openoffice.org to relativ links
|
||||
s#(http:\/\/udk\.openoffice\.org\/index.html)#$relPath\/www\/udk_index.html#go;
|
||||
s#((http:\/\/udk\.openoffice\.org)(\/*))#$relPath\/www$3#go;
|
||||
|
||||
# change the link to tutorial
|
||||
s#((http:\/\/api\.openoffice\.org\/)(basic\/man\/tutorial\/tutorial.pdf))#$relPath\/www\/$3#go;
|
||||
}
|
||||
print FILEOUT $_;
|
||||
}
|
||||
close FILEOUT;
|
||||
chmod 0666, $i->{filename};
|
||||
rename "$i->{filename}.tmp", $i->{filename} || die "could not rename $i->{filename}.tmp to $i->{filename}";
|
||||
$return = 0;
|
||||
}
|
||||
|
||||
exit $return;
|
||||
|
||||
sub wanted {
|
||||
%file = (
|
||||
directory => $dir,
|
||||
filename => $name
|
||||
);
|
||||
push @files, {%file} if /^.*\.html\z/s;
|
||||
}
|
|
@ -1,186 +0,0 @@
|
|||
:
|
||||
eval 'exec perl -wS $0 ${1+"$@"}'
|
||||
if 0;
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
#
|
||||
# pushids - push HID.LST and *.win files for userexperience feedback
|
||||
#
|
||||
|
||||
use lib ("$ENV{SOLARENV}/bin/modules", "$ENV{COMMON_ENV_TOOLS}/modules");
|
||||
|
||||
use Carp;
|
||||
|
||||
sub parse_info($$);
|
||||
|
||||
if ( @ARGV != 3 )
|
||||
{
|
||||
print "usage: $ARGV[0] <path tp hid.lst> <path to *.win files> <output file>\n";
|
||||
print "example: $ARGV[0] ./hid.lst global/win common/misc/UserFeedbackNames.csv\n\n";
|
||||
die "invalid params";
|
||||
}
|
||||
|
||||
my ($hid, $winpath, $outfile) = @ARGV;
|
||||
|
||||
my @names;
|
||||
|
||||
open HID, "<$hid" or die "can't open file $filename $! $^E";
|
||||
for (<HID>) {
|
||||
chop;
|
||||
my ($longname, $ID) = split " +";
|
||||
next if ( ! $ID );
|
||||
$upperlongname = $longname;
|
||||
$upperlongname =~ tr/a-z/A-Z/;
|
||||
$undeclared_hids{$upperlongname} = $longname;
|
||||
|
||||
if ( exists $hids{$upperlongname} && ( $hids{$upperlongname} != $ID ) )
|
||||
{
|
||||
print STDERR "warn: unclear definition of longname: $longname = $hids{$upperlongname} or $ID\n";
|
||||
}
|
||||
$hids{$upperlongname} = $ID;
|
||||
|
||||
if ( exists $revhids{ $ID } && ( $revhids{ $ID } ne $upperlongname ) )
|
||||
{
|
||||
print STDERR "warn: two longnames have the same ID: $longname and $revhids{$ID} share ID $ID\n";
|
||||
}
|
||||
$revhids{$ID} = $upperlongname;
|
||||
}
|
||||
|
||||
close HID;
|
||||
|
||||
undef @revhids;
|
||||
|
||||
#Add Active
|
||||
$hids{"ACTIVE"} = 0;
|
||||
|
||||
my %dialogs = ();
|
||||
|
||||
foreach ( glob("$winpath/*win") ) {
|
||||
$filename = $_;
|
||||
open WIN, "< $filename" or die "can't open file $filename $! $^E";
|
||||
my $parentinfo = "";
|
||||
my @dialog = ();
|
||||
my $parentshortname = "";
|
||||
|
||||
for ( <WIN> ) {
|
||||
chop;
|
||||
|
||||
s/^ +//;
|
||||
s/ +/ /g;
|
||||
|
||||
next if /^ *'/;
|
||||
next if /^ *$/;
|
||||
|
||||
my $ID = "";
|
||||
my $iteminfo;
|
||||
my ($shortname, $longname) = split " +";
|
||||
|
||||
$shortname = "" if ( !$shortname );
|
||||
$longname = "" if ( !$longname );
|
||||
|
||||
# fake a correct entry if only *active is given and overwrite the attempt to declare it differently
|
||||
if ( $shortname =~ /\*active/i )
|
||||
{
|
||||
$longname = "Active";
|
||||
}
|
||||
|
||||
|
||||
# find UNO Names
|
||||
if ( $longname =~ /^(.uno:|http|private:factory|service:|macro:|.HelpId:)/i || $longname =~ s/^sym://i )
|
||||
{
|
||||
$ID = $longname;
|
||||
$longname = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
my $upperlongname = $longname;
|
||||
$upperlongname =~ tr/a-z/A-Z/;
|
||||
if ( $shortname !~ /^[\+\*]/ && !exists $hids{$upperlongname} )
|
||||
{
|
||||
print STDERR "warn: Longname not in hid.lst: $filename $longname\n";
|
||||
}
|
||||
if ( exists $hids{$upperlongname} )
|
||||
{
|
||||
$ID = $hids{$upperlongname};
|
||||
}
|
||||
delete $undeclared_hids{$upperlongname};
|
||||
}
|
||||
|
||||
$iteminfo = "$shortname $longname $ID";
|
||||
$iteminfo =~ s/^\*//;
|
||||
$iteminfo =~ s/^\+//;
|
||||
|
||||
# find start of deklaration
|
||||
if ( $shortname =~ s/^\+// )
|
||||
{
|
||||
# copy existing dialog
|
||||
if ( exists $dialogs{ $longname } )
|
||||
{
|
||||
my @old = @{$dialogs{ $longname }};
|
||||
my ($oldshort, $oldlong, $oldID ) = split ( " ", shift @old );
|
||||
$iteminfo = "$shortname $oldlong $oldID";
|
||||
|
||||
$parentinfo = $iteminfo;
|
||||
$parentshortname = $shortname;
|
||||
$dialogs{ $parentshortname } = \@dialog;
|
||||
@dialog = (); # break the link
|
||||
push ( @{$dialogs{ $parentshortname }}, $iteminfo );
|
||||
push @names, " $parentinfo";
|
||||
|
||||
for ( @old )
|
||||
{
|
||||
push @names, "$parentinfo $_";
|
||||
}
|
||||
}
|
||||
else
|
||||
{ # fake new dialog instead
|
||||
$shortname = "*".$shortname;
|
||||
}
|
||||
}
|
||||
if ( $shortname =~ s/^\*// )
|
||||
{
|
||||
$parentinfo = $iteminfo;
|
||||
$parentshortname = $shortname;
|
||||
$dialogs{ $parentshortname } = \@dialog;
|
||||
@dialog = (); # break the link
|
||||
push ( @{$dialogs{ $parentshortname }}, $iteminfo );
|
||||
push @names, " $parentinfo";
|
||||
}
|
||||
else
|
||||
{
|
||||
push ( @{$dialogs{ $parentshortname }}, $iteminfo );
|
||||
push @names, "$parentinfo $iteminfo";
|
||||
}
|
||||
|
||||
}
|
||||
close WIN;
|
||||
}
|
||||
|
||||
for ( keys %undeclared_hids ) {
|
||||
$iteminfo = "$undeclared_hids{$_} $undeclared_hids{$_} $hids{$_}";
|
||||
push @names, " $iteminfo";
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# write to files
|
||||
|
||||
open HIDS, ">$outfile" or die "can't open file $filename $! $^E";
|
||||
print HIDS join "\n", @names;
|
||||
print HIDS "\n";
|
||||
close HIDS;
|
||||
|
|
@ -1 +0,0 @@
|
|||
less $2
|
|
@ -1,25 +0,0 @@
|
|||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
|
||||
BEGIN { global_found = "false" }
|
||||
/[ \t]*#/ { sub("#.*", "") }
|
||||
/[ \t]*local:/ { global_found = "false" }
|
||||
/[ \t]*}/ { global_found = "false" }
|
||||
/^[ \t]*$/ { next }
|
||||
global_found == "true" { print $0 }
|
||||
/[ \t]*global:/ { global_found = "true" }
|
|
@ -1,142 +0,0 @@
|
|||
#!/usr/bin/perl -w
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
# langwrap - language wrapper for building resources
|
||||
#
|
||||
|
||||
use Getopt::Std;
|
||||
|
||||
###### globals ######
|
||||
|
||||
$is_debug = 0;
|
||||
$nfield = 0;
|
||||
@LoL = ();
|
||||
@command = ();
|
||||
|
||||
###### main ######
|
||||
|
||||
# Version
|
||||
print "langwrap -- Version: 1.2\n";
|
||||
|
||||
# Options
|
||||
&check_options();
|
||||
|
||||
# parse command file
|
||||
&parse_commandfile($opt_c);
|
||||
|
||||
# create list with command lines
|
||||
&create_commands();
|
||||
|
||||
# finally execute commands
|
||||
foreach $cmd (@command) {
|
||||
if ($is_debug) {
|
||||
print $cmd . "\n";
|
||||
} else {
|
||||
system($cmd);
|
||||
$res = $? >> 8;
|
||||
if ($res) {
|
||||
print "langwrap: command execution failed with exitcode $res.\n";
|
||||
exit($res);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
exit(0);
|
||||
|
||||
###### routines ######
|
||||
|
||||
### parse_commandfile()
|
||||
sub parse_commandfile {
|
||||
my($file) = shift;
|
||||
my(@field);
|
||||
|
||||
open(COMMAND, "<$file") or die "can´t open $file";
|
||||
|
||||
while (<COMMAND>) {
|
||||
$line = $_;
|
||||
chomp($line);
|
||||
if ( ($line =~ //) || ($line =~ /^\r/) || ($line =~ /^#/) ) {
|
||||
next;
|
||||
}
|
||||
|
||||
@field = split " ", $line;
|
||||
push @LoL, [@field];
|
||||
if (!$nfield) {
|
||||
$nfield = $#field + 1;
|
||||
} else {
|
||||
if ( $nfield != ($#field + 1) ) {
|
||||
print "langwrap: error in <cmdfile>: every row must ";
|
||||
print "have the same # of columns.\n";
|
||||
exit(3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
close(COMMAND);
|
||||
}
|
||||
|
||||
### create_command()
|
||||
sub create_commands() {
|
||||
my($cmd, $cmdline, $arg_string, $ntempl);
|
||||
|
||||
$cmd = shift @ARGV;
|
||||
$arg_string = join(" ", @ARGV);
|
||||
# just count the number of templates
|
||||
$ntempl = ($arg_string =~ s/@\d+@/$&/eg);
|
||||
if ( $ntempl >= $nfield ) {
|
||||
print "lnagwrap: # of templates > # of fields in <cmdfile>.\n";
|
||||
exit(4);
|
||||
}
|
||||
|
||||
# create command lines
|
||||
for $i (0..$#LoL) {
|
||||
$cmdline = $arg_string;
|
||||
$cmdline =~ s/@(\d+)@/$LoL[$i][$1]/eg;
|
||||
push @command, $cmd . " " . $cmdline;
|
||||
}
|
||||
}
|
||||
|
||||
### check_options()
|
||||
sub check_options {
|
||||
|
||||
if ( !getopts('c:') ) {
|
||||
&usage();
|
||||
}
|
||||
|
||||
if ( !$opt_c ) {
|
||||
&usage();
|
||||
}
|
||||
|
||||
if ( ! -r $opt_c ) {
|
||||
print "langwrap: $opt_c is not a readable file.\n";
|
||||
exit(2);
|
||||
}
|
||||
|
||||
if ( $#ARGV < 1 ) {
|
||||
print "langwrap: empty <template_string>.\n";
|
||||
&usage();
|
||||
}
|
||||
}
|
||||
|
||||
### usage()
|
||||
sub usage {
|
||||
print "Usage: langwrap -c cmdfile tool <template_string>\n";
|
||||
print "<template_string> is of form: ...\@1\@ .... \@2\@...\n";
|
||||
print "with \@<n>\@ template #n\n";
|
||||
exit(1);
|
||||
}
|
|
@ -1,82 +0,0 @@
|
|||
:
|
||||
eval 'exec perl -wS $0 ${1+"$@"}'
|
||||
if 0;
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
my $target_format = "";
|
||||
my @filelist;
|
||||
#my $debug=1;
|
||||
my $debug=0;
|
||||
|
||||
parameter_parse(@ARGV);
|
||||
print "@filelist\n" if ( $debug );
|
||||
foreach my $onefile ( @filelist ) {
|
||||
convert_file( $onefile );
|
||||
}
|
||||
|
||||
|
||||
sub convert_file
|
||||
{
|
||||
my $filename = shift;
|
||||
if ( $target_format eq "dos" ) {
|
||||
$lineend = "\r\n";
|
||||
} else {
|
||||
$lineend = "\n";
|
||||
}
|
||||
open INFILE, "$filename"or die "ERROR: Couldn\'t open $filename for reading.\n";
|
||||
my @lines = <INFILE>;
|
||||
close INFILE;
|
||||
|
||||
foreach my $oneline ( @lines ) {
|
||||
$oneline =~ s/\r*\n*$/$lineend/;
|
||||
}
|
||||
|
||||
open OUTFILE, ">$filename" or die "ERROR: Couldn\'t open $filename for writing.\n";
|
||||
syswrite OUTFILE, join "", @lines;
|
||||
close OUTFILE;
|
||||
|
||||
}
|
||||
|
||||
sub parameter_parse
|
||||
{
|
||||
if ( $target_format eq "" ) {
|
||||
$target_format = shift ;
|
||||
usage() if ( $target_format ne "unix" && $target_format ne "dos" );
|
||||
usage() if ( $#_ == -1 );
|
||||
}
|
||||
foreach my $param ( @_ ) {
|
||||
if ( $param =~ "^@" ) {
|
||||
my $filename = $param;
|
||||
$filename =~ s/^@//;
|
||||
open CMDFILE, "$filename" or die "ERROR: Couldn\'t open $filename for reading.\n";
|
||||
my @filelist = <CMDFILE>;
|
||||
close CMDFILE;
|
||||
parameter_parse( @filelist );
|
||||
} else {
|
||||
push @filelist, $param;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub usage
|
||||
{
|
||||
print "Convert text files to the desired lineend convention:\n";
|
||||
print "$0 <unix|dos> <FILE|\@filelist> [more files/lists]\n";
|
||||
exit 1;
|
||||
}
|
||||
|
|
@ -1,129 +0,0 @@
|
|||
:
|
||||
eval 'exec perl -wS $0 ${1+"$@"}'
|
||||
if 0;
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
|
||||
#
|
||||
# licinserter.pl - create license entries in extension description.xml
|
||||
#
|
||||
|
||||
use File::Basename;
|
||||
|
||||
my $langswitch;
|
||||
|
||||
sub usage()
|
||||
{
|
||||
print STDERR "\nCreate extension descriptions with license-text entries\n";
|
||||
print STDERR "matching the language activated.\n";
|
||||
print STDERR "\nUsage:\n";
|
||||
print STDERR "\t$0 [--langsplit] infile \"naming pattern\" destination\n\n";
|
||||
print STDERR "\nExample:\n\n";
|
||||
print STDERR "$0 description.xml dir/license_xxx.txt outdir/description.xml\n\n";
|
||||
print STDERR "Creates \"someoutdir/description.xml\" with the license file entries like\n\"dir/license_en.US.txt\" ";
|
||||
print STDERR "for all languages found in the WITH_LANG environment\nvariable\n\n\n";
|
||||
print STDERR "Example2:\n\n";
|
||||
print STDERR "$0 --langsplit description.xml dir/license_xxx.txt someoutdir\n\n";
|
||||
print STDERR "Creates \"someoutdir/<language>/description.xml\" with one license file entry\n\"somedir/license_<language>.txt\" ";
|
||||
print STDERR "for all languages found in the WITH_LANG\nenvironment variable.\n\nNOTE: when using --langsplit \"destination\" needs to be a directory\n";
|
||||
}
|
||||
|
||||
if ( $ARGV[0] =~ /^-/ ) {
|
||||
$langswitch = shift @ARGV;
|
||||
if ( $langswitch ne "--langsplit" ) {
|
||||
usage();
|
||||
exit 1;
|
||||
}
|
||||
if ( ! -d $ARGV[2] ) {
|
||||
print STDERR "\nERROR - $ARGV[2] is not directory\n";
|
||||
usage();
|
||||
exit 2;
|
||||
}
|
||||
}
|
||||
|
||||
if ( $#ARGV != 2 ) {
|
||||
print "zzz\n";
|
||||
usage();
|
||||
exit 1;
|
||||
}
|
||||
|
||||
open INFILE,$ARGV[0] or die "oops - no such file $ARGV[0]!\n";
|
||||
|
||||
my @inlines = <INFILE>;
|
||||
close INFILE;
|
||||
|
||||
chomp @inlines;
|
||||
|
||||
# Empty or unset WITH_LANG environment variable is set to default en-US.
|
||||
# When WITH_LANG is set but does not contain en-US then that is prepended.
|
||||
my $WithLang = $ENV{WITH_LANG};
|
||||
if ( ! defined $WithLang || $WithLang eq "")
|
||||
{
|
||||
$WithLang = "en-US";
|
||||
}
|
||||
elsif ($WithLang !~ /\ben-US\b/)
|
||||
{
|
||||
$WithLang = "en-US " . $WithLang;
|
||||
}
|
||||
|
||||
|
||||
if ( $langswitch eq "" ) {
|
||||
my @outlines;
|
||||
foreach my $i (@inlines) {
|
||||
if ( $i =~ /license-text/ ) {
|
||||
my $ii;
|
||||
my $name;
|
||||
foreach my $code ( split(/\s+/,$WithLang) ) {
|
||||
$ii = $i;
|
||||
$name = $ARGV[1];
|
||||
$name =~ s/xxx/$code/;
|
||||
$ii =~ s/isocode/$code/g;
|
||||
$ii =~ s?licensefile?$name?g;
|
||||
push @outlines, "$ii\n";
|
||||
}
|
||||
} else {
|
||||
push @outlines, "$i\n";
|
||||
}
|
||||
}
|
||||
open OUTFILE, ">$ARGV[2]" or die "ooops - can't open $ARGV[2] for writing\n";
|
||||
print OUTFILE @outlines;
|
||||
close OUTFILE or die "ooops - can't write to $ARGV[2]\n";
|
||||
} else {
|
||||
my @outlines;
|
||||
my $outname = basename($ARGV[0],());
|
||||
foreach my $code ( split(/\s+/,$ENV{WITH_LANG}) ) {
|
||||
@outlines=();
|
||||
foreach my $i (@inlines) {
|
||||
if ( $i =~ /license-text/ ) {
|
||||
my $name;
|
||||
my $ii = $i;
|
||||
$name = $ARGV[1];
|
||||
$name =~ s/xxx/$code/;
|
||||
$ii =~ s/isocode/$code/g;
|
||||
$ii =~ s?licensefile?$name?g;
|
||||
push @outlines, "$ii\n";
|
||||
} else {
|
||||
push @outlines, "$i\n";
|
||||
}
|
||||
}
|
||||
mkdir "$ARGV[2]/$code";
|
||||
open OUTFILE, ">$ARGV[2]/$code/$outname" or die "ooops - can't open $ARGV[2]/$code/$outname for writing\n";
|
||||
print OUTFILE @outlines;
|
||||
close OUTFILE or die "ooops - can't write to $ARGV[2]/$code/$outname\n";
|
||||
}
|
||||
}
|
|
@ -1,604 +0,0 @@
|
|||
:
|
||||
eval 'exec perl -wS $0 ${1+"$@"}'
|
||||
if 0;
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
|
||||
#here the definition for d would be written into dependencies. The reason is that when the event handler
|
||||
#for the element is called, we can only find out the namespace but not the prefix. So we cannot
|
||||
#distinguish if the namespace is used because the element was prefixed or because it uses the default
|
||||
#namespace.
|
||||
use warnings;
|
||||
use strict;
|
||||
|
||||
use XML::Parser;
|
||||
use Getopt::Long;
|
||||
use Carp;
|
||||
|
||||
sub getUpdateInfoFileName($);
|
||||
sub writeUpdateInformationData($);
|
||||
sub findAttribute($$);
|
||||
sub getNotDefPrefs($$$);
|
||||
sub collectPrefixes($$$$);
|
||||
sub determineNsDefinitions($$$);
|
||||
sub determineNsDefinitionForItem($$$);
|
||||
|
||||
my $inDescription = 0;
|
||||
my $inDependencies = 0;
|
||||
my $inIdentifier = 0;
|
||||
my $inVersion = 0;
|
||||
my $descNS = "http://openoffice.org/extensions/description/2006";
|
||||
my $indent;
|
||||
my $identifier;
|
||||
my $version;
|
||||
|
||||
#contains prefixes and the corresponding namespaces which are used in the <dependencies>
|
||||
#element and all children of the description.xml
|
||||
my @usedNsInDependencies;
|
||||
|
||||
#Maps prefix to namespaces which are valid in <dependencies>. That is, they are
|
||||
#either defined in <dependencies> or in the hirarchy above <dependencies>
|
||||
my %validPrefsInDep;
|
||||
#Contains the prefixes which are defined in <dependencies>
|
||||
my @newPrefsInDep;
|
||||
#Contains the prefixes/namespaces which need to be defined in <dependencies> but which are currently
|
||||
#not. For example a prefix is defined in the parent and is used in a child of <dependencies>
|
||||
my %notDefInDep;
|
||||
|
||||
#prefix used in start and end element
|
||||
my $prefix;
|
||||
|
||||
#The default namespace valid in <dependencies>
|
||||
my $defNsInDep;
|
||||
#The prefix which we use for the default namespace used in <dependencies>
|
||||
my $generatedPrefix;
|
||||
|
||||
my $helptext =
|
||||
"make_ext_update_info.pl produces an update information file for an extension. ".
|
||||
"It will use a dummy URL as URL for the extension update unless a URL has been ".
|
||||
"provided with the --update_url option. The name of the update ".
|
||||
"information file, which must be provided with the --out switch, should be formed ".
|
||||
"according to this scheme: \n\n".
|
||||
"extension_identifier.update.xml\n\n".
|
||||
"extension_identifier should correspond to the extension identifier. In some cases ".
|
||||
"this may not be possible because the identifier may contain characters which are not ".
|
||||
"allowd in file names.\n\n".
|
||||
"usage:\n".
|
||||
"perl make_ext_update_info.pl [--help][--update_url url] --out update_information_file description.xml \n\n".
|
||||
"Options: \n".
|
||||
"--help - prints the help message and exits \n".
|
||||
"--out file - the update information file to be written including the path \n".
|
||||
"--update-url url - inserts the url under the <update-download> element. It may be necessary to enclose the urls in quotes in case they contain characters such as \"?\". ".
|
||||
"It can be used multiple times\n\n";
|
||||
|
||||
#handling of arguments
|
||||
my $help = 0;
|
||||
my $out;
|
||||
my @update_urls;
|
||||
if (!GetOptions('help|?' => \$help,
|
||||
'out=s' => \$out,
|
||||
'update-url=s'=> \@update_urls))
|
||||
{
|
||||
print $helptext;
|
||||
exit -1;
|
||||
}
|
||||
my $cArgs = scalar @ARGV;
|
||||
die "You need to provide a description.xml\n\n$helptext" if $cArgs ==0;
|
||||
die "You need to provide the name of the update information file ".
|
||||
"with the --out switch.\n" unless ($out);
|
||||
die "Too many arguments. \n\n$helptext" if $cArgs > 1;
|
||||
print $helptext if $help;
|
||||
|
||||
|
||||
#open the update information file for writing
|
||||
my $FH;
|
||||
open $FH, "> $out" or die $!;
|
||||
|
||||
#write the xml header and root element
|
||||
print $FH '<?xml version="1.0" encoding="UTF-8"?>', "\n";
|
||||
print $FH '<description xmlns="http://openoffice.org/extensions/update/2006"', "\n";
|
||||
print $FH ' xmlns:xlink="http://www.w3.org/1999/xlink">', "\n";
|
||||
|
||||
#obtain from description.xml the data for the update information
|
||||
writeUpdateInformationData($ARGV[0]);
|
||||
#We will die if there is no <version> or <identifier> in the description.xml
|
||||
die "Error: The description.xml does not contain a <identifier> element.\n" unless $identifier;
|
||||
die "Error: The description.xml does not contain a <version> element. \n" unless $version;
|
||||
|
||||
#write the write the update-download element and the children.
|
||||
#the indention of <update-download> corresponds to that of <version>
|
||||
print $FH ' 'x$indent, '<update-download>', "\n";
|
||||
#check if update-urls have been provided through --update-url option
|
||||
if (scalar @update_urls)
|
||||
{
|
||||
my $urlIndent = $indent > 8 ? 8 : 2 * $indent;
|
||||
#use provided urls
|
||||
for (@update_urls)
|
||||
{
|
||||
print $FH ' 'x$urlIndent, '<src xlink:href="'.$_.'" />', "\n";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#use dummy update url
|
||||
print $FH ' 'x8, '<src xlink:href="http://extensions.openoffice.org/testarea/dummy.oxt" />', "\n";
|
||||
}
|
||||
print $FH ' 'x$indent, '</update-download>', "\n";
|
||||
|
||||
print $FH '</description>', "\n";
|
||||
close $FH;
|
||||
|
||||
exit 0;
|
||||
|
||||
|
||||
|
||||
sub start_handler
|
||||
{
|
||||
my $parser = shift;
|
||||
my $name = shift;
|
||||
|
||||
if ($name eq "description"
|
||||
&& $descNS eq $parser->namespace($name))
|
||||
{
|
||||
$inDescription = 1;
|
||||
}
|
||||
elsif ($inDescription
|
||||
&& $name eq "version"
|
||||
&& $descNS eq $parser->namespace($name))
|
||||
{
|
||||
$inVersion = 1;
|
||||
$version = 1;
|
||||
$indent = $parser->current_column();
|
||||
print $FH " "x$indent, $parser->original_string();
|
||||
}
|
||||
elsif ($inDescription
|
||||
&& $name eq "identifier"
|
||||
&& $descNS eq $parser->namespace($name))
|
||||
{
|
||||
$inIdentifier = 1;
|
||||
$identifier = 1;
|
||||
print $FH " "x$parser->current_column(), $parser->original_string();
|
||||
}
|
||||
elsif ($inDescription
|
||||
&& $name eq "dependencies"
|
||||
&& $descNS eq $parser->namespace($name))
|
||||
{
|
||||
$inDependencies = 1;
|
||||
my $dep = $parser->original_string();
|
||||
#add the additional namespace definitions, which we have discovered during the first
|
||||
#parsing
|
||||
#cut of the closing > or /> from the start element, so we can append the namespace definitions
|
||||
$dep =~ /(\s*<.*) ((\s*\/>)|(\s*>))/x;
|
||||
my $dep1 = $1;
|
||||
$dep1.= " xmlns:".$_.'="'.$notDefInDep{$_}.'"' for (keys %notDefInDep);
|
||||
$dep1.= $2;
|
||||
print $FH " "x$parser->current_column(), $dep1;
|
||||
}
|
||||
elsif ($inDependencies)
|
||||
{
|
||||
#$prefix is global because we need to use it in the end element as well.
|
||||
$prefix = "";
|
||||
my $fullString;
|
||||
my $orig = $parser->original_string();
|
||||
#Split up the string so we can insert the prefix for the element.
|
||||
# <OpenOffice.org-minimal-version>
|
||||
# <d:OpenOffice.org-minimal-version>
|
||||
$orig=~/(\s*<)(.*?)\s/x;
|
||||
#in $2 is the element name, look for the prefix
|
||||
if ($2 !~/(.*?):/ && $parser->namespace($name)) {
|
||||
#no prefix, that is element uses default namespace.
|
||||
#Now check if the default namespace in <dependencies> is the same as the one in this
|
||||
#element. If not, then the default ns was defined "after" <dependencies>. Because all
|
||||
#children of <dependencies> are copied into the update information, so will this default
|
||||
#namespace definition. Hence this element will have the same default namespace in the
|
||||
#update information.
|
||||
my $defNsDep = $validPrefsInDep{"#default"};
|
||||
#we must have #default, see the if statement above
|
||||
my $defNsCur = $parser->expand_ns_prefix("#default");
|
||||
|
||||
if ($defNsDep eq $defNsCur) {
|
||||
#Determine if there is in <dependency> a prefix defined (only valid there and need not
|
||||
#directly defined in this element). If there is no prefix defined then we will
|
||||
#add a new definition to <dependencies>.
|
||||
for (keys %validPrefsInDep) {
|
||||
if (($validPrefsInDep{$_} eq $defNsDep) && $_ ne "#default") {
|
||||
$prefix = $_; last;
|
||||
}
|
||||
}
|
||||
if (! $prefix) {
|
||||
#If there was no prefix, we will add new prefix definition to <dependency>
|
||||
#Which prefix this is has been determined during the first parsing.
|
||||
for (keys %notDefInDep) {
|
||||
if (($notDefInDep{$_} eq $defNsCur) && $_ ne "#default") {
|
||||
$prefix = $_; last;
|
||||
}
|
||||
}
|
||||
}
|
||||
#die if we have no prefix
|
||||
confess "No prefix defined for default namespace " unless $prefix;
|
||||
#get the full part after <
|
||||
$orig=~/(\s*<)(.*)/x;
|
||||
$fullString= $1.$prefix.":".$2;
|
||||
}
|
||||
|
||||
}
|
||||
$fullString = $orig unless $fullString;
|
||||
|
||||
# We record anything within <dependencies> </dependencies>.
|
||||
print $FH $fullString;
|
||||
}
|
||||
}
|
||||
|
||||
sub end_handler
|
||||
{
|
||||
my $parser = shift;
|
||||
my $name = shift;
|
||||
|
||||
if ($name eq "description"
|
||||
&& $descNS eq $parser->namespace($name))
|
||||
{
|
||||
$inDescription = 0;
|
||||
}
|
||||
elsif ($inDescription
|
||||
&& $name eq "version"
|
||||
&& $descNS eq $parser->namespace($name))
|
||||
{
|
||||
$inVersion = 0;
|
||||
print $FH $parser->original_string(), "\n";
|
||||
}
|
||||
elsif ($inDescription
|
||||
&& $name eq "identifier"
|
||||
&& $descNS eq $parser->namespace($name))
|
||||
{
|
||||
$inIdentifier = 0;
|
||||
print $FH $parser->original_string(), "\n";
|
||||
}
|
||||
elsif($inDescription
|
||||
&& $name eq "dependencies"
|
||||
&& $descNS eq $parser->namespace($name))
|
||||
{
|
||||
$inDependencies = 0;
|
||||
print $FH $parser->original_string(), "\n";
|
||||
}
|
||||
elsif ($inDependencies)
|
||||
{
|
||||
my $orig = $parser->original_string();
|
||||
#$orig is empty if we have tags like this: <name />
|
||||
if ($orig && $prefix) {
|
||||
$orig=~/(\s*<\/)(.*)/x;
|
||||
$orig= $1.$prefix.":".$2;
|
||||
}
|
||||
print $FH $orig;
|
||||
}
|
||||
}
|
||||
|
||||
#We write the complete content between start and end tags of
|
||||
# <identifier>, <version>, <dependencies>
|
||||
sub default_handler
|
||||
{
|
||||
my $parser = shift;
|
||||
my $name = shift;
|
||||
if ($inIdentifier || $inVersion) {
|
||||
print $FH $parser->original_string();
|
||||
} elsif ($inDependencies) {
|
||||
print $FH $parser->original_string();
|
||||
}
|
||||
|
||||
} # End of default_handler
|
||||
|
||||
#sax handler used for the first parsing to recognize the used prefixes in <dependencies > and its
|
||||
#children and to find out if we need to define a new prefix for the current default namespace.
|
||||
sub start_handler_infos
|
||||
{
|
||||
my $parser = shift;
|
||||
my $name = shift;
|
||||
if ($name eq "description"
|
||||
&& $descNS eq $parser->namespace($name)) {
|
||||
$inDescription = 1;
|
||||
}
|
||||
elsif ($inDescription
|
||||
&& $name eq "dependencies"
|
||||
&& $descNS eq $parser->namespace($name)) {
|
||||
$inDependencies = 1;
|
||||
#build the map of prefix/namespace which are valid in <dependencies>
|
||||
my @cur = $parser->current_ns_prefixes();
|
||||
for (@cur) {
|
||||
$validPrefsInDep{$_} = $parser->expand_ns_prefix($_);
|
||||
}
|
||||
#remember the prefixes defined in <dependencies>
|
||||
@newPrefsInDep = $parser->new_ns_prefixes();
|
||||
|
||||
collectPrefixes($parser, $name, \@_, \@usedNsInDependencies);
|
||||
return if $generatedPrefix;
|
||||
|
||||
#determine if need to create a new prefix for the current element if it uses a default ns.
|
||||
#Split up the string so we can see if there is a prefix used
|
||||
# <OpenOffice.org-minimal-version>
|
||||
# <d:OpenOffice.org-minimal-version>
|
||||
my $orig = $parser->original_string();
|
||||
$orig=~/(\s*<)(.*?)\s/x;
|
||||
#in $2 is the element name, look for the prefix
|
||||
if ($2 !~/(.*?):/ && $parser->namespace($name)) {
|
||||
#no prefix, that is element uses default namespace.
|
||||
#Now check if the default namespace in <dependencies> is the same as the one in this
|
||||
#element. If not, then the default ns was defined "after" <dependencies>. Because all
|
||||
#children of <dependencies> are copied into the update information, so will this default
|
||||
#namespace definition. Hence this element will have the same default namespace in the
|
||||
#update information.
|
||||
my $defNsDep = $validPrefsInDep{"#default"};
|
||||
#we must have #default, see the if statement above
|
||||
my $defNsCur = $parser->expand_ns_prefix("#default");
|
||||
|
||||
if ($defNsDep eq $defNsCur) {
|
||||
#Determine if there is in <dependency> a prefix defined (only valid there and need not
|
||||
#directly defined in this element). If there is no prefix defined then we will
|
||||
#add a new definition to <dependencies>.
|
||||
for (keys %validPrefsInDep) {
|
||||
if (($validPrefsInDep{$_} eq $defNsDep) && $_ ne "#default") {
|
||||
$prefix = $_; last;
|
||||
}
|
||||
}
|
||||
|
||||
if (! $prefix) {
|
||||
|
||||
#define a new prefix
|
||||
#actually there can be only onle prefix, which is the case when the element
|
||||
#uses the same default namespace as <dependencies> otherwise, the default
|
||||
#namespace was redefined by the children of <dependencies>. These are completely
|
||||
#copied and still valid in the update information file
|
||||
$generatedPrefix = "a";
|
||||
$defNsInDep = $defNsDep;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
elsif ($inDependencies) {
|
||||
determineNsDefinitions($parser, $name, \@_);
|
||||
collectPrefixes($parser, $name, \@_, \@usedNsInDependencies);
|
||||
}
|
||||
}
|
||||
#sax handler used for the first parsing to recognize the used prefixes in <dependencies > and its
|
||||
#children
|
||||
sub end_handler_infos
|
||||
{
|
||||
my $parser = shift;
|
||||
my $name = shift;
|
||||
|
||||
if ($name eq "description"
|
||||
&& $descNS eq $parser->namespace($name)) {
|
||||
$inDescription = 0;
|
||||
}
|
||||
elsif($inDescription
|
||||
&& $name eq "dependencies"
|
||||
&& $descNS eq $parser->namespace($name)) {
|
||||
$inDependencies = 0;
|
||||
}
|
||||
}
|
||||
|
||||
sub writeUpdateInformationData($)
|
||||
{
|
||||
my $desc = shift;
|
||||
{
|
||||
#parse description xml to collect information about all used
|
||||
#prefixes and names within <dependencies>
|
||||
|
||||
my $parser = new XML::Parser(ErrorContext => 2,
|
||||
Namespaces => 1);
|
||||
$parser->setHandlers(Start => \&start_handler_infos,
|
||||
End => \&end_handler_infos);
|
||||
|
||||
$parser->parsefile($desc);
|
||||
|
||||
|
||||
}
|
||||
#remove duplicates in the array containing the prefixes
|
||||
if ($generatedPrefix) {
|
||||
my %hashtmp;
|
||||
@usedNsInDependencies = grep(!$hashtmp{$_}++, @usedNsInDependencies);
|
||||
|
||||
#check that the prefix for the default namespace in <dependencies> does not clash
|
||||
#with any other prefixes
|
||||
my $clash;
|
||||
do {
|
||||
$clash = 0;
|
||||
for (@usedNsInDependencies) {
|
||||
if ($_ eq $generatedPrefix) {
|
||||
$generatedPrefix++;
|
||||
$clash = 1; last;
|
||||
}
|
||||
}
|
||||
} while ($clash);
|
||||
$notDefInDep{$generatedPrefix} = $defNsInDep;
|
||||
}
|
||||
#if $notDefInDep contains the prefix #default then we need to add the generated prefix as well
|
||||
|
||||
#add the special prefix for the default namespace into the map of prefixes that will be
|
||||
#added to the <dependencies> element in the update information file
|
||||
|
||||
|
||||
($inDependencies, $inDescription) = (0,0);
|
||||
{
|
||||
my $parser = new XML::Parser(ErrorContext => 2,
|
||||
Namespaces => 1);
|
||||
$parser->setHandlers(
|
||||
Start => \&start_handler,
|
||||
End => \&end_handler,
|
||||
Default => \&default_handler);
|
||||
$parser->parsefile($desc);
|
||||
}
|
||||
}
|
||||
|
||||
# param 1: name of the attribute we look for
|
||||
# param 2: array of name value pairs, the first subscript is the attribute and the second
|
||||
# is the value.
|
||||
sub findAttribute($$)
|
||||
{
|
||||
my ($name, $args_r) = @_;
|
||||
my @args = @{$args_r};
|
||||
my $value;
|
||||
while (my $attr = shift(@args))
|
||||
{
|
||||
if ($attr eq $name) {
|
||||
$value = shift(@args);
|
||||
die "href attribut has no valid URL" unless $value;
|
||||
last;
|
||||
} else { # shift away the following value for the attribute
|
||||
shift(@args);
|
||||
}
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
#collect the prefixes used in an xml element
|
||||
#param 1: parser,
|
||||
#param 2: element name,
|
||||
#param 3: array of name and values of attributes
|
||||
#param 4: out parameter, the array containing the prefixes
|
||||
sub collectPrefixes($$$$)
|
||||
{
|
||||
my $parser = shift;
|
||||
my $name = shift;
|
||||
my $attr_r = shift;
|
||||
my $out_r = shift;
|
||||
#get the prefixes which are currently valid
|
||||
my @cur = $parser->current_ns_prefixes();
|
||||
my %map_ns;
|
||||
#get the namespaces for the prefixes
|
||||
for (@cur) {
|
||||
if ($_ eq '#default') {
|
||||
next;
|
||||
}
|
||||
my $ns = $parser->expand_ns_prefix($_);
|
||||
$map_ns{$ns} = $_;
|
||||
}
|
||||
#investigat ns of element
|
||||
my $pref = $map_ns{$parser->namespace($name)};
|
||||
push(@{$out_r}, $pref) if $pref;
|
||||
#now go over the attributes
|
||||
|
||||
while (my $attr = shift(@{$attr_r})) {
|
||||
my $ns = $parser->namespace($attr);
|
||||
if (! $ns) {
|
||||
shift(@{$attr_r});
|
||||
next;
|
||||
}
|
||||
$pref = $map_ns{$ns};
|
||||
push( @{$out_r}, $pref) if $pref;
|
||||
shift(@{$attr_r});
|
||||
}
|
||||
#also add newly defined prefixes
|
||||
my @newNs = $parser->new_ns_prefixes();
|
||||
for (@newNs) {
|
||||
if ($_ eq '#default') {
|
||||
next;
|
||||
}
|
||||
push (@{$out_r}, $_);
|
||||
}
|
||||
}
|
||||
|
||||
#The function is called for each child element of dependencies. It finds out the prefixes
|
||||
#which are used by the children and which are defined by the parents of <dependencies>. These
|
||||
#would be lost when copying the children of <dependencies> into the update information file.
|
||||
#Therefore these definitions are collected so that they then can be written in the <dependencies>
|
||||
#element of the update information file.
|
||||
#param 1: parser
|
||||
#param 2: namsepace
|
||||
#param 3: the @_ received in the start handler
|
||||
sub determineNsDefinitions($$$)
|
||||
{
|
||||
my ($parser, $name, $attr_r) = @_;
|
||||
my @attr = @{$attr_r};
|
||||
|
||||
determineNsDefinitionForItem($parser, $name, 1);
|
||||
|
||||
while (my $attr = shift(@attr)) {
|
||||
determineNsDefinitionForItem($parser, $attr, 0);
|
||||
shift @attr;
|
||||
}
|
||||
}
|
||||
|
||||
#do not call this function for the element that does not use a prefix
|
||||
#param 1: parser
|
||||
#param 2: name of the element or attribute
|
||||
#param 3: 1 if called for an elment name and 0 when called for attribue
|
||||
sub determineNsDefinitionForItem($$$)
|
||||
{
|
||||
my ($parser, $name) = @_;
|
||||
my $ns = $parser->namespace($name);
|
||||
if (! $ns) {
|
||||
return;
|
||||
}
|
||||
#If the namespace was not kwown in <dependencies> then it was defined in one of its children
|
||||
#or in this element. Then we are done since this namespace definition is copied into the
|
||||
#update information.
|
||||
my $bNsKnownInDep;
|
||||
for ( keys %validPrefsInDep) {
|
||||
if ( $validPrefsInDep{$_} eq $ns) {
|
||||
$bNsKnownInDep = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
#If the namespace of the current element is known in <dependencies> then check if the same
|
||||
#prefix is used. If not, then the prefix was defined in one of the children of <dependencies>
|
||||
#and was assigned the same namespace. Because we copy of children into the update information,
|
||||
#this definition is also copied.
|
||||
if ($bNsKnownInDep) {
|
||||
#create a map of currently valid prefix/namespace
|
||||
my %curPrefToNs;
|
||||
my @curNs = $parser->current_ns_prefixes();
|
||||
for (@curNs) {
|
||||
$curPrefToNs{$_} = $parser->expand_ns_prefix($_);
|
||||
}
|
||||
#find the prefix used in <dependencies> to define the namespace of the current element
|
||||
my $validDepPref;
|
||||
for (keys %validPrefsInDep) {
|
||||
if ($validPrefsInDep{$_} eq $ns) {
|
||||
#ignore #default
|
||||
next if $_ eq "#default";
|
||||
$validDepPref = $_;
|
||||
last;
|
||||
}
|
||||
}
|
||||
#find the prefix defined in the current element used for the namespace of the element
|
||||
my $curPref;
|
||||
for (keys %curPrefToNs) {
|
||||
if ($curPrefToNs{$_} eq $ns) {
|
||||
#ignore #default
|
||||
next if $_ eq "#default";
|
||||
$curPref = $_;
|
||||
last;
|
||||
}
|
||||
}
|
||||
if ($curPref && $validDepPref && ($curPref eq $validDepPref)) {
|
||||
#If the prefixes and ns are the same, then the prefix definition of <dependencies> or its
|
||||
#parent can be used. However, we need to find out which prefixed are NOT defined in
|
||||
#<dependencies> so we can add them to it when we write the update information.
|
||||
my $bDefined = 0;
|
||||
for (@newPrefsInDep) {
|
||||
if ($curPref eq $_) {
|
||||
$bDefined = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
if (! $bDefined) {
|
||||
$notDefInDep{$curPref} = $ns;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
#!/bin/sh -e
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
if [ -z "$1" ]; then
|
||||
exit 1;
|
||||
fi
|
||||
infile=`echo "$1" | sed 's/^@//'`
|
||||
for i in `cat "$infile"`; do
|
||||
i=`echo "$i" | fgrep -- "-O:" | awk -F: '{print $2}'`
|
||||
if [ ! -z "$i" ]; then
|
||||
echo "#" > "$i"
|
||||
exit 0;
|
||||
fi;
|
||||
done
|
||||
exit 1
|
|
@ -1,95 +0,0 @@
|
|||
#! /usr/bin/perl -w
|
||||
eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
|
||||
if 0; #$running_under_some_shell
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
|
||||
use strict;
|
||||
use File::Find ();
|
||||
use Cwd qw (cwd);
|
||||
|
||||
my @findlist;
|
||||
|
||||
# Set the variable $File::Find::dont_use_nlink if you're using AFS,
|
||||
# since AFS cheats.
|
||||
|
||||
# for the convenience of &wanted calls, including -eval statements:
|
||||
use vars qw/*name *dir *prune/;
|
||||
*name = *File::Find::name;
|
||||
*dir = *File::Find::dir;
|
||||
*prune = *File::Find::prune;
|
||||
|
||||
sub wanted;
|
||||
|
||||
|
||||
|
||||
sub wanted {
|
||||
/^.*\.xc(s|u)\z/s
|
||||
&& ( push @findlist, $name );
|
||||
}
|
||||
|
||||
sub usage
|
||||
{
|
||||
print STDERR "\n$0 - append *.xcu file entries to .oxt manifest.xml\n\n";
|
||||
print STDERR "usage: $0 <static_part> <start dir> <search dir> <destination dir>\n\n";
|
||||
print STDERR " static part - file containig all other content for mainfest.xml\n";
|
||||
print STDERR " start dir - directory to change to before starting search\n";
|
||||
print STDERR " out dir - destination directory to write manifes.xml to\n\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
if ( $#ARGV != 3 ) { usage(); };
|
||||
|
||||
my $manifest_head = $ARGV[0];
|
||||
my $start_dir = $ARGV[1];
|
||||
my $dynamic_dir = $ARGV[2];
|
||||
my $out_dir = $ARGV[3];
|
||||
|
||||
# Traverse desired filesystems
|
||||
my $work_dir = cwd();
|
||||
chdir $start_dir or die "$0: ERROR - cannot change directory to \"$start_dir\"\n";
|
||||
File::Find::find({wanted => \&wanted}, $dynamic_dir);
|
||||
chdir $work_dir or die "$0: ERROR - oops... cannot change dir to where i came from!\n";
|
||||
|
||||
open (HEAD, "$manifest_head") or die "$0: ERROR - Cannot open $manifest_head\n";
|
||||
my @headlines = <HEAD>;
|
||||
close HEAD;
|
||||
chomp @headlines;
|
||||
chomp @findlist;
|
||||
|
||||
my @bodylines;
|
||||
my @taillines = ("</manifest:manifest>");
|
||||
|
||||
foreach my $i (@findlist) {
|
||||
if ($i =~ m/^.*\.xcu\z/s) {
|
||||
push @bodylines, " <manifest:file-entry manifest:media-type=\"application/vnd.sun.star.configuration-data\"";
|
||||
} else {
|
||||
push @bodylines, " <manifest:file-entry manifest:media-type=\"application/vnd.sun.star.configuration-schema\"";
|
||||
}
|
||||
push @bodylines, " manifest:full-path=\"$i\"/>";
|
||||
}
|
||||
|
||||
open (MANIOUT,">$out_dir/manifest.xml") or die "$0: ERROR - cannot open \"$out_dir/manifest.xml\" for writing.\n";
|
||||
binmode MANIOUT;
|
||||
|
||||
foreach my $j (@headlines, @bodylines, @taillines) {
|
||||
print MANIOUT "$j\n";
|
||||
}
|
||||
|
||||
close MANIOUT;
|
||||
|
|
@ -1,196 +0,0 @@
|
|||
:
|
||||
eval 'exec perl -wS $0 ${1+"$@"}'
|
||||
if 0;
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
|
||||
#
|
||||
# mapgen - generate a map file for Unix libraries
|
||||
#
|
||||
|
||||
#use File::Path;
|
||||
#use File::Copy;
|
||||
|
||||
#### script id #####
|
||||
|
||||
( $script_name = $0 ) =~ s/^.*\b(\w+)\.pl$/$1/;
|
||||
print "$script_name -- version: 1.6\n";
|
||||
print "Multi Platform Enabled Edition\n";
|
||||
|
||||
#########################
|
||||
# #
|
||||
# Globale Variablen #
|
||||
# #
|
||||
#########################
|
||||
|
||||
$dump_file = '';
|
||||
$flt_file = '';
|
||||
$map_file = '';
|
||||
$first_string = '';
|
||||
$tab = ' ';
|
||||
|
||||
#### main ####
|
||||
|
||||
&get_options;
|
||||
if (!(open (DUMP_FILE, $dump_file))) {
|
||||
&print_error("Unable open $dump_file");
|
||||
};
|
||||
if (!(open (FLT_FILE, $flt_file))) {
|
||||
close DUMP_FILE;
|
||||
&print_error("Unable open $flt_file");
|
||||
};
|
||||
unlink $map_file;
|
||||
if (!(open (MAP_FILE, ">>$map_file"))) {
|
||||
close DUMP_FILE;
|
||||
close FLT_FILE;
|
||||
&print_error("Unable open $map_file");
|
||||
};
|
||||
|
||||
if ($ENV{OS} eq 'SOLARIS') {
|
||||
&gen_sol;
|
||||
} elsif ($ENV{OS} eq 'LINUX') {
|
||||
&gen_lnx;
|
||||
} else {
|
||||
&print_error ('Environment not set!!');
|
||||
};
|
||||
|
||||
close DUMP_FILE;
|
||||
close FLT_FILE;
|
||||
close MAP_FILE;
|
||||
|
||||
#### end of main procedure ####
|
||||
|
||||
#########################
|
||||
# #
|
||||
# Procedures #
|
||||
# #
|
||||
#########################
|
||||
|
||||
#
|
||||
# Generate a map file for solaris
|
||||
#
|
||||
sub gen_sol {
|
||||
my %symbols = ();
|
||||
foreach (<DUMP_FILE>) {
|
||||
next if (!(/\s*(\S+)\s*\|\s*(\S+)\s*\|\s*(\S+)\s*\|\s*(\S+)\s*\|\s*(\S+)\s*\|\s*(\S+)\s*\|\s*(\S+)\s*\|\s*(\S+)\s*/));
|
||||
next if (($7 =~ /UNDEF/) || ($7 =~ /ABS/));
|
||||
next if ($5 eq 'LOCL');
|
||||
$symbols{$8}++;
|
||||
};
|
||||
&filter_symbols(\%symbols);
|
||||
};
|
||||
|
||||
#
|
||||
# Generate a map file for linux
|
||||
#
|
||||
sub gen_lnx {
|
||||
my %symbols = ();
|
||||
foreach (<DUMP_FILE>) {
|
||||
next if (!(/^\S+ [A|B|C|D|G|I|N|R|S|T|U|V|W|-|\?|-] (\S+)/));
|
||||
$symbols{$1}++;
|
||||
};
|
||||
&filter_symbols(\%symbols);
|
||||
}
|
||||
|
||||
#
|
||||
# Filter symbols with filters from $flt_file
|
||||
#
|
||||
sub filter_symbols {
|
||||
my $symbols = shift;
|
||||
my $env_section = '';
|
||||
my @filters = ();
|
||||
my @filtered_symbols = ();
|
||||
while (<FLT_FILE>) {
|
||||
s/\r//;
|
||||
s/\n//;
|
||||
$env_section = '1' and next if ((/^# SOLARIS #$/) && ($ENV{OS} eq 'SOLARIS'));
|
||||
$env_section = '1' and next if ((/^# LINUX #$/) && ($ENV{OS} eq 'LINUX'));
|
||||
$env_section = '1' and next if ((/^# FREEBSD #$/) && ($ENV{OS} eq 'FREEBSD'));
|
||||
$env_section = '1' and next if ((/^# NETBSD #$/) && ($ENV{OS} eq 'NETBSD'));
|
||||
$env_section = '1' and next if ((/^# OPENBSD #$/) && ($ENV{OS} eq 'OPENBSD'));
|
||||
$env_section = '1' and next if ((/^# DRAGONFLY #$/) && ($ENV{OS} eq 'DRAGONFLY'));
|
||||
last if ($env_section && ((/^# SOLARIS #$/) || (/^# FREEBSD #$/) || (/^# LINUX #$/) || (/^# NETBSD #$/) || (/^# OPENBSD #$/) (/^# DRAGONFLY #$/)));
|
||||
next if (!$_ || /^#/);
|
||||
push(@filters, $_);
|
||||
};
|
||||
foreach my $symbol (keys %$symbols) {
|
||||
my $export = '-';
|
||||
foreach my $filter_str (@filters) {
|
||||
my $add = substr ($filter_str, 0, 1);
|
||||
my $filter = substr($filter_str, 1);
|
||||
if ($symbol =~ /$filter/) {
|
||||
$export = $add;
|
||||
};
|
||||
};
|
||||
if ($export eq '+') {
|
||||
push(@filtered_symbols, $symbol);
|
||||
};
|
||||
};
|
||||
&write_mapfile(\@filtered_symbols);
|
||||
};
|
||||
|
||||
#
|
||||
# Write a map file
|
||||
#
|
||||
sub write_mapfile {
|
||||
my $symbols = shift;
|
||||
print MAP_FILE $first_string . " {\n$tab" . "global:\n";
|
||||
foreach (@$symbols) {
|
||||
print MAP_FILE "$tab$tab$_\;\n";
|
||||
};
|
||||
print MAP_FILE "$tab" . "local:\n$tab\*\;\n}\;";
|
||||
};
|
||||
|
||||
#
|
||||
# Get all options passed
|
||||
#
|
||||
sub get_options {
|
||||
|
||||
$dump_file = '';
|
||||
$flt_file = '';
|
||||
$map_file = '';
|
||||
my ($arg);
|
||||
&usage() && exit(0) if ($#ARGV == -1);
|
||||
while ($arg = shift @ARGV) {
|
||||
$arg =~ /^-d$/ and $dump_file = shift @ARGV and next;
|
||||
$arg =~ /^-f$/ and $flt_file = shift @ARGV and next;
|
||||
$arg =~ /^-m$/ and $map_file = shift @ARGV and next;
|
||||
$arg =~ /^-h$/ and &usage and exit(0);
|
||||
$arg =~ /^--help$/ and &usage and exit(0);
|
||||
$arg =~ /^-s$/ and $first_string = shift @ARGV and next;
|
||||
};
|
||||
if (!$dump_file ||
|
||||
!$flt_file ||
|
||||
!$first_string ||
|
||||
!$map_file) {
|
||||
&usage;
|
||||
exit(1);
|
||||
};
|
||||
};
|
||||
|
||||
sub print_error {
|
||||
my $message = shift;
|
||||
print STDERR "\nERROR: $message\n";
|
||||
exit(1)
|
||||
};
|
||||
|
||||
sub usage {
|
||||
print STDERR "\nmapgen:\n";
|
||||
print STDERR "Syntax: mapgen -d dump_file -s first_string -f filter_file -m map_file [-h|--help]\n";
|
||||
};
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
: # -*- perl -*-
|
||||
eval 'exec perl -wS $0 ${1+"$@"}'
|
||||
if 0;
|
||||
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
#
|
||||
# mkdir - a perl script to substitute mkdir -p
|
||||
# accepts "/", ":", and "\" as delimiters of subdirectories
|
||||
# options -p (for compatibility)
|
||||
# -mode mode
|
||||
#
|
||||
|
||||
use Cwd;
|
||||
|
||||
$currdir = cwd;
|
||||
|
||||
$MODE = 00777 ;
|
||||
|
||||
while ( $#ARGV >= 0 ) {
|
||||
if ( $ARGV[0] eq "-mode" ) {
|
||||
$MODE = oct $ARGV[1] ;
|
||||
shift @ARGV ;
|
||||
shift @ARGV ;
|
||||
}
|
||||
elsif ( $ARGV[0] eq "-p" ) {
|
||||
shift @ARGV ;
|
||||
# -p does not do anything, it's supported just for compatibility
|
||||
}
|
||||
else {
|
||||
|
||||
$ARGV[0] =~ s?\\|:?/?g ;
|
||||
@SUBDIRS = split "/", $ARGV[0] ;
|
||||
|
||||
# absolute path UNIX
|
||||
if ( $SUBDIRS[0] eq "" ) {
|
||||
chdir '/' ;
|
||||
shift @SUBDIRS ;
|
||||
}
|
||||
# absolute path WINDOWS
|
||||
if ( $#SUBDIRS > 1 ) {
|
||||
if ( $SUBDIRS[1] eq "" ) {
|
||||
if ( $SUBDIRS[0] =~ /\w/ ) {
|
||||
chdir "$SUBDIRS[0]:\\" ;
|
||||
shift @SUBDIRS ;
|
||||
shift @SUBDIRS ;
|
||||
} ;
|
||||
} ;
|
||||
}
|
||||
|
||||
while (@SUBDIRS) {
|
||||
if ( -e $SUBDIRS[0] ) {
|
||||
if ( ! -d $SUBDIRS[0] ) {
|
||||
die "file exists\n"
|
||||
}
|
||||
}
|
||||
else {
|
||||
mkdir $SUBDIRS[0], $MODE or die "Can't create directory $SUBDIRS[0]"
|
||||
}
|
||||
chdir $SUBDIRS[0] or die "Can't cd to $SUBDIRS[0]" ;
|
||||
shift @SUBDIRS ;
|
||||
} ;
|
||||
|
||||
shift @ARGV ;
|
||||
} ;
|
||||
chdir $currdir;
|
||||
}
|
|
@ -1,147 +0,0 @@
|
|||
:
|
||||
eval 'exec perl -wS $0 ${1+"$@"}'
|
||||
if 0;
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
|
||||
#
|
||||
# mkout.pl - create output tree
|
||||
#
|
||||
|
||||
use Cwd;
|
||||
use Getopt::Std;
|
||||
use File::Path;
|
||||
|
||||
#### script id #####
|
||||
|
||||
( $script_name = $0 ) =~ s/^.*\b(\w+)\.pl$/$1/;
|
||||
|
||||
#### globals ####
|
||||
|
||||
$is_debug = 0;
|
||||
|
||||
$base_dir = 0; # path to module base directory
|
||||
$dir_mode = 0755; # default directory creation mode
|
||||
|
||||
$envpath = 0; # platform/product combination
|
||||
$opt_r = 0; # create 'remote' subdirs
|
||||
|
||||
%sub_dirs = (
|
||||
# dirname remote(yes/no)
|
||||
'bin' => 1,
|
||||
'class' => 0,
|
||||
'inc' => 0,
|
||||
'lib' => 1,
|
||||
'misc/logs' => 1,
|
||||
'obj' => 1,
|
||||
'res' => 1,
|
||||
'slb' => 1,
|
||||
'slo' => 1,
|
||||
'srs' => 1
|
||||
);
|
||||
|
||||
#### main ####
|
||||
|
||||
parse_options();
|
||||
init_globals();
|
||||
create_dirs();
|
||||
|
||||
exit(0);
|
||||
|
||||
#### subroutines #####
|
||||
|
||||
sub parse_options {
|
||||
my $rc;
|
||||
|
||||
$rc = getopts('r');
|
||||
|
||||
if ( !$rc || $#ARGV > 0 ) {
|
||||
usage();
|
||||
exit(1);
|
||||
}
|
||||
$envpath = $ARGV[0] if defined($ARGV[0]);
|
||||
}
|
||||
|
||||
sub init_globals {
|
||||
my $umask;
|
||||
$base_dir = get_base();
|
||||
print "Base_Diri=$base_dir\n" if $is_debug;
|
||||
|
||||
$umask = umask();
|
||||
if ( defined($umask) ) {
|
||||
$dir_mode = 0777 - $umask;
|
||||
}
|
||||
$envpath = $ENV{INPATH} unless $envpath;
|
||||
|
||||
if ( !$envpath ) {
|
||||
print_error("can't determine platform/environment");
|
||||
exit(3);
|
||||
}
|
||||
print "Platform/Environment: $envpath\n" if $is_debug;
|
||||
}
|
||||
|
||||
sub get_base {
|
||||
# a module base dir contains a subdir 'prj'
|
||||
# which in turn contains a file 'd.lst'
|
||||
my (@field, $base, $dlst);
|
||||
my $path = cwd();
|
||||
|
||||
@field = split(/\//, $path);
|
||||
|
||||
while ( $#field != -1 ) {
|
||||
$base = join('/', @field);
|
||||
$dlst = $base . '/prj/d.lst';
|
||||
last if -e $dlst;
|
||||
pop @field;
|
||||
}
|
||||
|
||||
if ( $#field == -1 ) {
|
||||
print_error("can't determine module");
|
||||
exit(2);
|
||||
}
|
||||
else {
|
||||
return $base;
|
||||
}
|
||||
}
|
||||
|
||||
sub create_dirs {
|
||||
foreach $dir ( keys %sub_dirs ) {
|
||||
$path = $base_dir . '/' . $envpath . '/' . $dir;
|
||||
if ( $opt_r && $sub_dirs{$dir} ) {
|
||||
$path .= "/remote";
|
||||
}
|
||||
eval { mkpath($path, 0, $dir_mode) };
|
||||
if ( $@ ) {
|
||||
print_error( "$@" );
|
||||
}
|
||||
print "Create path: $path\n" if $is_debug;
|
||||
}
|
||||
}
|
||||
|
||||
sub print_error {
|
||||
my $message = shift;
|
||||
|
||||
print STDERR "$script_name: ERROR: $message\n";
|
||||
}
|
||||
|
||||
sub usage {
|
||||
print STDERR "Usage:\n$script_name [-r] [platform/environment]\n";
|
||||
print STDERR "Options:\n -r create 'remote' directories\n";
|
||||
}
|
||||
|
||||
# vim: set ts=4 shiftwidth=4 expandtab syntax=perl:
|
|
@ -1,117 +0,0 @@
|
|||
:
|
||||
eval 'exec perl -wS $0 ${1+"$@"}'
|
||||
if 0;
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
|
||||
use utf8;
|
||||
use warnings;
|
||||
use strict;
|
||||
|
||||
# command line arguments
|
||||
my $oldpatchfile = shift;
|
||||
my $newpatchfile = shift;
|
||||
my $sortedfile = shift;
|
||||
|
||||
show_help() unless defined $oldpatchfile and defined $newpatchfile and defined $sortedfile;
|
||||
|
||||
my %oldpatchfile = parse_patch($oldpatchfile);
|
||||
my %newpatchfile = parse_patch($newpatchfile);
|
||||
|
||||
open SORTEDPATCH, "> $sortedfile";
|
||||
|
||||
foreach my $file (sort (keys %newpatchfile)) {
|
||||
print SORTEDPATCH $file."\t";
|
||||
if (defined($oldpatchfile{$file})) {
|
||||
if ( (join '', @{$oldpatchfile{$file}{'data'}}) eq (join '', @{$newpatchfile{$file}{'data'}}) ) {
|
||||
# patch data for the file hasn't been modified, use the header from
|
||||
# the old patch, to reduce noise (keep the old timestamps)
|
||||
print SORTEDPATCH $oldpatchfile{$file}{'origtimestamp'}."\n";
|
||||
print SORTEDPATCH $oldpatchfile{$file}{'patchedfilename'}."\t";
|
||||
print SORTEDPATCH $oldpatchfile{$file}{'patchedtimestamp'}."\n";
|
||||
print SORTEDPATCH @{$oldpatchfile{$file}{'data'}};
|
||||
next;
|
||||
}
|
||||
}
|
||||
# either file wasn't patched before, or the patchset changed, so use the new
|
||||
# values for it..
|
||||
print SORTEDPATCH $newpatchfile{$file}{'origtimestamp'}."\n";
|
||||
print SORTEDPATCH $newpatchfile{$file}{'patchedfilename'}."\t";
|
||||
print SORTEDPATCH $newpatchfile{$file}{'patchedtimestamp'}."\n";
|
||||
print SORTEDPATCH @{$newpatchfile{$file}{'data'}};
|
||||
}
|
||||
close SORTEDPATCH;
|
||||
|
||||
###############
|
||||
# Helper subs
|
||||
###############
|
||||
sub show_help {
|
||||
print "Usage: $0 oldpatch newpatch outputfilename\n";
|
||||
print "oldpatch and newpatch can be the very same file\n";
|
||||
print "will output a sanitized form of newpatch to outputfilename\n";
|
||||
print "if outputfilename is '-', the patch will be printed to stdout\n";
|
||||
print "sanitized means: It will avoid all unnecessary changes\n";
|
||||
exit 1;
|
||||
}
|
||||
sub parse_patch {
|
||||
my $patchfile = shift;
|
||||
my $patchtype;
|
||||
my $pfirst;
|
||||
my $psecond;
|
||||
|
||||
my %hunks = ();
|
||||
my $origfilename;
|
||||
open PATCHFILE, "< $patchfile" or die "Cannot open file $patchfile $!";
|
||||
my @patchfile = <PATCHFILE>;
|
||||
close PATCHFILE;
|
||||
return %hunks if ( $#patchfile == -1 );
|
||||
if ( $patchfile[0] =~ /^---/ ) {
|
||||
$patchtype = "unified";
|
||||
$pfirst = '^--- [^\*]*$';
|
||||
$psecond = '^\+\+\+ [^\*]*$';
|
||||
} elsif ( $patchfile[0] =~ /^\*\*\*/ ) {
|
||||
$patchtype = "content";
|
||||
$pfirst = '^\*\*\* [^\*]*$';
|
||||
$psecond = '^--- .*\t.*$';
|
||||
} else {
|
||||
die "unknown patch format\n";
|
||||
}
|
||||
|
||||
foreach (@patchfile) {
|
||||
if ( /$pfirst/ ) {
|
||||
my $timestamp;
|
||||
# extract the filename, to be able to compare the old
|
||||
# with the new file...
|
||||
($origfilename, $timestamp) = split(/\t/, $_, 2);
|
||||
chomp $timestamp;
|
||||
# ideally convert the timestamp to iso-format...
|
||||
$hunks{$origfilename}{'origtimestamp'} = $timestamp;
|
||||
next;
|
||||
} elsif ( $_ =~ /$psecond/ ) {
|
||||
my ($filename, $timestamp) = split(/\t/, $_, 2);
|
||||
chomp $timestamp;
|
||||
# ideally convert the timestamp to iso-format...
|
||||
$hunks{$origfilename}{'patchedfilename'} = $filename;
|
||||
$hunks{$origfilename}{'patchedtimestamp'} = $timestamp;
|
||||
next;
|
||||
}
|
||||
push (@{$hunks{$origfilename}{'data'}}, $_);
|
||||
|
||||
}
|
||||
return %hunks;
|
||||
}
|
|
@ -1,310 +0,0 @@
|
|||
#!/usr/bin/perl -w /* -*- indent-tabs-mode: nil -*- */
|
||||
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
|
||||
# Change MSVC mangled C++ names from 32-bit form to the corresponding
|
||||
# 64-bit form. Each line of input can contain at most one mangled
|
||||
# name.
|
||||
|
||||
# Based on experimentation with MSVC2008 and the following web pages:
|
||||
|
||||
# http://www.geoffchappell.com/viewer.htm?doc=studies/msvc/language/decoration/index.htm
|
||||
# Thorough but incomplete. Still, describes details the below sources
|
||||
# don't mention.
|
||||
|
||||
# http://cvs.winehq.com/cvsweb/wine/dlls/msvcrt/undname.c
|
||||
# Wine's __unDname function, presumably the most complete, although
|
||||
# not really written to act as "documentation"
|
||||
|
||||
# http://mearie.org/documents/mscmangle/
|
||||
# Relatively complete but a bit badly structured and terse.
|
||||
|
||||
# http://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B_Name_Mangling
|
||||
# seems to be mostly a ripoff on the mearie.org page
|
||||
|
||||
# Example transformation:
|
||||
# ??0ORealDynamicLoader@salhelper@@IAE@PAPAV01@ABVOUString@rtl@@1PAX2@Z =>
|
||||
# ??0ORealDynamicLoader@salhelper@@IEAA@PEAPEAV01@AEBVOUString@rtl@@1PEAX2@Z
|
||||
|
||||
# It should be relatively easy to remove the modification parts of the
|
||||
# below code and use the regex for some other task on MSVC mangled
|
||||
# names.
|
||||
|
||||
# The regular expression below accepts also nonsensical mangled names,
|
||||
# so it should not be used to verify correctness of mangled names.
|
||||
|
||||
use strict;
|
||||
|
||||
my @opstack = ();
|
||||
|
||||
sub parse_number($)
|
||||
{
|
||||
my ($num) = @_;
|
||||
|
||||
return $num + 1 if ($num eq '0' || ($num ge '1' && $num le '9'));
|
||||
|
||||
$num =~ tr/ABCDEFGHIJKLMNOP@/0123456789ABCDEF /;
|
||||
hex($num);
|
||||
}
|
||||
|
||||
sub format_number($)
|
||||
{
|
||||
my ($num) = @_;
|
||||
|
||||
return $num - 1 if ($num <= 10);
|
||||
|
||||
$num = sprintf("%X", $num);
|
||||
$num =~ tr/0123456789ABCDEF/ABCDEFGHIJKLMNOP/;
|
||||
$num.'@';
|
||||
}
|
||||
|
||||
sub double_thunk($$)
|
||||
{
|
||||
my ($number, $position) = @_;
|
||||
|
||||
my $bytes = parse_number($number);
|
||||
$bytes *= 2;
|
||||
push(@opstack, 'r '.($position - length($number)).' '.length($number).' '.format_number($bytes));
|
||||
}
|
||||
|
||||
while (<>)
|
||||
{
|
||||
m/
|
||||
# Named subpattern definitions. I use names of the form
|
||||
# __CamelCase__ for the named subpatters so that they are easier
|
||||
# to see.
|
||||
(?(DEFINE)
|
||||
(?<__Number__>
|
||||
\?? ([0-9] | [A-P]+@)
|
||||
)
|
||||
(?<__32BitChecksum__>
|
||||
[A-P]{8}@
|
||||
)
|
||||
(?<__CallingConvention__>
|
||||
(?:
|
||||
[AB]
|
||||
|
|
||||
[C-L]
|
||||
(?{ push(@opstack, 'r '.(pos()-1).' 1 A cdecl'); })
|
||||
)
|
||||
)
|
||||
(?<__StringLiteralText__>
|
||||
(?:
|
||||
[_a-zA-Z0-9]
|
||||
|
|
||||
\?\$[A-P][A-P]
|
||||
|
|
||||
\?[0-9A-Za-z]
|
||||
){1,20}
|
||||
)
|
||||
(?<__Identifier__>
|
||||
[_a-zA-Z\$][_a-zA-Z0-9\$]*@
|
||||
)
|
||||
(?<__ArgsZTerminated__>
|
||||
(?&__DataTypeInArgs__)+ @? Z
|
||||
)
|
||||
(?<__ArgsNonZTerminated__>
|
||||
(?&__DataTypeInArgs__)+ @?
|
||||
)
|
||||
(?<__TemplateName__>
|
||||
(?&__Identifier__) (?&__ArgsNonZTerminated__)
|
||||
)
|
||||
(?<__Class__>
|
||||
(?:
|
||||
[0-9]
|
||||
|
|
||||
\?\$ (?&__TemplateName__)
|
||||
|
|
||||
(?&__Identifier__)
|
||||
)+@
|
||||
)
|
||||
(?<__DataTypeCommon__>
|
||||
(?:
|
||||
# extended types like _int64, bool and wchar_t
|
||||
_[D-NW]
|
||||
|
|
||||
# simple types
|
||||
[C-KMNOXZ]
|
||||
|
|
||||
# class, struct, union, cointerface
|
||||
[TUVY] (?&__Class__)
|
||||
|
|
||||
# references
|
||||
[AB]
|
||||
(?{ push(@opstack, 'i '.pos().' E reference'); })
|
||||
(?&__ModifiedType__)
|
||||
|
|
||||
# pointers
|
||||
[QRS]
|
||||
(?{ push(@opstack, 'i '.pos().' E pointer'); })
|
||||
(?&__ModifiedType__)
|
||||
|
|
||||
P
|
||||
(?:
|
||||
# function pointer
|
||||
6 (?&__CallingConvention__) (?&__DataTypeNotInArgs__) (?&__ArgsZTerminated__)
|
||||
|
|
||||
# other pointer
|
||||
(?{ push(@opstack, 'i '.pos().' E pointer'); })
|
||||
(?&__ModifiedType__)
|
||||
)
|
||||
|
|
||||
W 4 (?&__Class__)
|
||||
|
|
||||
[0-9]
|
||||
|
|
||||
\$ (?:
|
||||
[0DQ] (?&__Number__)
|
||||
|
|
||||
F (?&__Number__){2}
|
||||
|
|
||||
G (?&__Number__){3}
|
||||
|
|
||||
\$ [ABCD] (?&__DataTypeNotInArgs__)
|
||||
)
|
||||
)
|
||||
)
|
||||
(?<__ModifiedType__>
|
||||
[ABCD]
|
||||
(?:
|
||||
# multidimensional array
|
||||
Y (?&__Number__)+
|
||||
)?
|
||||
(?&__DataTypeNotInArgs__)
|
||||
)
|
||||
(?<__DataTypeInArgs__>
|
||||
(?:
|
||||
(?&__DataTypeCommon__)
|
||||
|
|
||||
# template parameter
|
||||
\? (?&__Number__)
|
||||
)
|
||||
)
|
||||
(?<__DataTypeNotInArgs__>
|
||||
(?:
|
||||
(?&__DataTypeCommon__)
|
||||
|
|
||||
\? (?&__ModifiedType__)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
# All mangled names start with a question mark
|
||||
\?
|
||||
(?:
|
||||
# Ctors, dtors, operators etc have separate a priori defined
|
||||
# special mangled names like the very simple ?0 for constructor
|
||||
# and ?_R16789 for "RTTI Base Class Descriptor at (6,7,8,9)"
|
||||
# whatever that might mean.
|
||||
(
|
||||
\?
|
||||
([0-9A-Z]
|
||||
|
|
||||
_(?:
|
||||
# C is for string literals, see below
|
||||
# R is RTTI, see immediately below
|
||||
[0-9ABD-QS-Z]
|
||||
|
|
||||
R0(?&__DataTypeNotInArgs__)
|
||||
|
|
||||
R1(?&__Number__){4}
|
||||
|
|
||||
R[234]
|
||||
|
|
||||
_(?:
|
||||
E
|
||||
)
|
||||
)
|
||||
)
|
||||
)?
|
||||
(?&__Class__)
|
||||
|
||||
(?:
|
||||
# Static members and normal variables
|
||||
[0-5]
|
||||
(?&__DataTypeNotInArgs__)
|
||||
[ABCD]
|
||||
|
|
||||
# Compiler-generated static
|
||||
[67]
|
||||
[ABCD]
|
||||
(?:
|
||||
@
|
||||
|
|
||||
(?&__Class__)
|
||||
)
|
||||
|
|
||||
# Non-static Methods, implicit 'this'
|
||||
[ABEFIJMNQRUV]
|
||||
[AB]
|
||||
(?{ push(@opstack, 'i '.(pos()-1).' E this'); })
|
||||
(?&__CallingConvention__)
|
||||
(?:
|
||||
@
|
||||
|
|
||||
(?&__DataTypeNotInArgs__)
|
||||
)
|
||||
(?&__ArgsZTerminated__)
|
||||
|
|
||||
# Static methods
|
||||
[CDKLST]
|
||||
(?&__CallingConvention__)
|
||||
(?:
|
||||
@
|
||||
|
|
||||
(?&__DataTypeNotInArgs__)
|
||||
)
|
||||
(?&__ArgsZTerminated__)
|
||||
|
|
||||
# Thunks
|
||||
[GHOPWX]
|
||||
((?&__Number__))
|
||||
(?{ double_thunk($^N, pos()); })
|
||||
[AB]
|
||||
(?{ push(@opstack, 'i '.(pos()-1).' E this'); })
|
||||
(?&__CallingConvention__)
|
||||
(?:
|
||||
@
|
||||
|
|
||||
(?&__DataTypeNotInArgs__)
|
||||
)
|
||||
(?&__ArgsZTerminated__)
|
||||
|
|
||||
# Functions
|
||||
[YZ]
|
||||
(?&__CallingConvention__)
|
||||
(?:
|
||||
@
|
||||
|
|
||||
(?&__DataTypeNotInArgs__)
|
||||
)
|
||||
(?&__ArgsZTerminated__)
|
||||
|
|
||||
# Template
|
||||
\$ (?&__Identifier__) (?&__ArgsNonZTerminated__)
|
||||
)
|
||||
|
|
||||
# pooled string literals
|
||||
\?_C\@_[01](?&__Number__)(?&__32BitChecksum__)(?&__StringLiteralText__)@
|
||||
)
|
||||
/x;
|
||||
|
||||
while (my $op = pop(@opstack))
|
||||
{
|
||||
# print STDERR "op=$op\n";
|
||||
my @a = split (' ', $op);
|
||||
if ($a[0] eq 'i') {
|
||||
substr($_,$a[1],0) = $a[2];
|
||||
} elsif ($a[0] eq 'r') {
|
||||
substr($_,$a[1],$a[2]) = $a[3];
|
||||
}
|
||||
}
|
||||
|
||||
print;
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
:
|
||||
eval 'exec perl -wS $0 ${1+"$@"}'
|
||||
if 0;
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
|
||||
my $r_code=0;
|
||||
if ( ! defined $ARGV[0] || "$ARGV[0]" eq "" ) {
|
||||
print STDERR "Nothing to delete\n";
|
||||
exit 1;
|
||||
}
|
||||
while ( defined $ARGV[0] ) {
|
||||
if ( rmdir $ARGV[0] ) {
|
||||
# exit 0;
|
||||
} else {
|
||||
print STDERR "ERROR removing $ARGV[0]: $!\n";
|
||||
$r_code = 1;
|
||||
}
|
||||
shift @ARGV;
|
||||
}
|
||||
exit $r_code;
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
|
||||
# At least on v20z-so3, when /so/env/bt_linux_libc2.11/DEV300/bin/rpm is called
|
||||
# and internally looks for a ld-linux.so.2, it picks up
|
||||
# /lib/tls/i686/cmov/ld-linux.so.2 and SIGSEGVs. This is prevented by
|
||||
# adding /so/env/bt_linux_libc2.11/DEV300/lib to the LD_LIBRARY_PATH, thus
|
||||
# picking up the ld-linux.so.2 from there:
|
||||
|
||||
set -e
|
||||
if [ "$OUTPATH" = "unxlngi6" ]
|
||||
then
|
||||
LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}${LIBRARY_PATH?} \
|
||||
${BUILD_TOOLS?}/rpmbuild "$@"
|
||||
else
|
||||
if [ "$OUTPATH" = "unxlngx6" ]
|
||||
then
|
||||
LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}${LIBRARY_PATH?} \
|
||||
${BUILD_TOOLS?}/rpmbuild "$@"
|
||||
else
|
||||
LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}${COMPATH?}/lib \
|
||||
${BUILD_TOOLS?}/rpm "$@"
|
||||
fi
|
||||
fi
|
|
@ -1,167 +0,0 @@
|
|||
:
|
||||
eval 'exec perl -wS $0 ${1+"$@"}'
|
||||
if 0;
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
# Description: Wrapper script to change '/' to '\' in command-line
|
||||
# arguments.
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# external modules
|
||||
use Text::ParseWords;
|
||||
|
||||
# global vars
|
||||
@params = ();
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# procedures
|
||||
|
||||
|
||||
#----------------------------------------------------------
|
||||
# Function name: WinFormat
|
||||
# Description: Format variables to Windows Format.
|
||||
# Arguments: 1. Variable (string) with one token
|
||||
# Return value: Reformatted String
|
||||
#----------------------------------------------------------
|
||||
sub WinFormat {
|
||||
my $variable = shift @_;
|
||||
|
||||
$variable =~ s!(.)/!$1\\!g; # Replace all but the leading slashes with backslashes
|
||||
|
||||
if ( defined $debug ) {
|
||||
print(STDERR "WinFormat:\nresult:$variable\n");
|
||||
}
|
||||
|
||||
return $variable;
|
||||
}
|
||||
|
||||
#----------------------------------------------------------
|
||||
# Function name: replace_cyg
|
||||
# Description: Process all arguments and change them to Windows Format.
|
||||
# Arguments: Reference to array with arguments
|
||||
# Return value: -
|
||||
#----------------------------------------------------------
|
||||
sub replace_cyg {
|
||||
my $args = shift;
|
||||
my( @cmd_file, @cmd_temp );
|
||||
my $atchars;
|
||||
foreach my $para ( @$args ) {
|
||||
if ( $para =~ "^@" ) {
|
||||
# it's a command file
|
||||
if ( defined $debug ) {
|
||||
print(STDERR "----------------------------\n");
|
||||
}
|
||||
;
|
||||
# Workaround, iz28717, keep number of @'s.
|
||||
$para =~ s/(^\@+)//;
|
||||
$atchars = $1;
|
||||
$filename = $para;
|
||||
if ( defined $debug ) {
|
||||
print(STDERR "filename = $filename \n");
|
||||
}
|
||||
;
|
||||
# open this command file for reading
|
||||
open(CMD, "$filename");
|
||||
while ( <CMD> ) {
|
||||
# Remove DOS lineendings. Bug in Cygwin / Perl?
|
||||
$_ =~ s/\r//g;
|
||||
# Remove lineendings and trailing spaces. ( Needed by &parse_line )
|
||||
$_ =~ s/\n$//g;
|
||||
$_ =~ s/\s+$//g;
|
||||
# Fill all tokens into array
|
||||
@cmd_temp = &parse_line('\s+', 1, $_ );
|
||||
if ( $#cmd_temp > -1 ) {
|
||||
push( @cmd_file, @cmd_temp);
|
||||
}
|
||||
}
|
||||
close(CMD);
|
||||
# reformat all tokens
|
||||
replace_cyg(\@cmd_file);
|
||||
if ( defined $debug ) {
|
||||
print(STDERR "Tokens processed:\n");
|
||||
}
|
||||
;
|
||||
foreach $i (@cmd_file) {
|
||||
if ( defined $debug ) {
|
||||
print(STDERR "!".$i."!\n");
|
||||
}
|
||||
;
|
||||
}
|
||||
# open this filename for writing (truncate) Textmode?
|
||||
open(CMD, '>', $filename);
|
||||
# write all tokens back into this file
|
||||
print(CMD join(' ', @cmd_file));
|
||||
close(CMD);
|
||||
# convert '@filename' to dos style
|
||||
$para = WinFormat( $para );
|
||||
if ( defined $debug ) {
|
||||
print(STDERR "----------------------------\n");
|
||||
}
|
||||
;
|
||||
if ( (defined $debug_light) or (defined $debug) ) {
|
||||
print(STDERR "\nParameter in File:".join(' ', @cmd_file).":\n");
|
||||
}
|
||||
$para = $atchars.$para;
|
||||
} else {
|
||||
# it's just a parameter
|
||||
if ( defined $debug ) {
|
||||
print(STDERR "\nParameter:---${para}---\n");
|
||||
}
|
||||
;
|
||||
# If $tmp1 is empty then $para is a parameter.
|
||||
my $is_no_para = 1;
|
||||
# remove .exe and convert to lower case
|
||||
$shortcommand = lc $command ;
|
||||
$shortcommand =~ s/\.exe$//;
|
||||
$shortcommand =~ /([^\/]+$)/;
|
||||
$shortcommand = $1;
|
||||
if ( $is_no_para ) {
|
||||
$para = WinFormat($para);
|
||||
}
|
||||
if ( defined $debug ) {
|
||||
print(STDERR "Converted line:${para}:\n" );
|
||||
}
|
||||
} # else
|
||||
} # foreach loop
|
||||
}
|
||||
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# main
|
||||
@params = @ARGV;
|
||||
|
||||
$command = shift(@params);
|
||||
|
||||
while ( $command =~ /^-/ )
|
||||
{
|
||||
if ( $command eq "-dbg" ) {
|
||||
$debug="true";
|
||||
}
|
||||
elsif ( $command eq "-ldbg" ) {
|
||||
$debug_light="true";
|
||||
}
|
||||
|
||||
$command = shift(@params);
|
||||
}
|
||||
|
||||
if ( (defined $debug_light) or (defined $debug) ) { print( STDERR "Command: $command\n" ); }
|
||||
|
||||
replace_cyg(\@params);
|
||||
if ( (defined $debug_light) or (defined $debug) ) { print(STDERR "\n---------------------\nExecute: $command @params\n----------------\n");};
|
||||
exec( "$command", @params) or die( "\nError: slfl.pl: executing $command failed!\n" );
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
:
|
||||
eval 'exec perl -wS $0 ${1+"$@"}'
|
||||
if 0;
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
#
|
||||
# workaround for broken 4nt
|
||||
# internal touch command
|
||||
#
|
||||
|
||||
foreach my $filename (@ARGV) {
|
||||
open KKK, ">>$filename" or die "ERROR: cannot open $filename!\n";
|
||||
$size=(stat($filename))[7];
|
||||
print KKK "x";
|
||||
truncate KKK, $size;
|
||||
close KKK;
|
||||
}
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# This file incorporates work covered by the following license notice:
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed
|
||||
# with this work for additional information regarding copyright
|
||||
# ownership. The ASF licenses this file to you under the Apache
|
||||
# License, Version 2.0 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
#
|
||||
|
||||
# Generate an exported symbols list out of a map file (as use on Linux/Solaris) in order to
|
||||
# build shared libraries on Mac OS X
|
||||
#
|
||||
# The below code fails may fail with 'perverted' mapfiles (using a strange line layout etc.)
|
||||
|
||||
# Skip 'SECTION_NAME {' lines
|
||||
/^[\t ]*.*[\t ]*\{/ { next }
|
||||
|
||||
# Skip 'global:' or 'local:' lines
|
||||
/global:/ || /local:/ { next }
|
||||
|
||||
# Skip '*;' lines
|
||||
/^[\t ]*\*;[\t ]*/ { next }
|
||||
|
||||
# Skip section end '}?;' lines
|
||||
/^[\t ]*\}[\t ]*.*[;]*/ { next }
|
||||
|
||||
# Skip comment or empty lines
|
||||
/^[\t ]*#.*/ || /^[\t ]*$/ || /^$/ { next }
|
||||
|
||||
# Echo all lines containing symbol names and prefix them with '_'
|
||||
# because symbols on Mac OS X start always with '__'
|
||||
{
|
||||
# There may appear multiple symbols in one line
|
||||
# e.g. "sym1; sym2; # and finally a comment"
|
||||
# take this into account
|
||||
for (i = 1; i <= NF ; i++) {
|
||||
if ($i !~ /^[\t ]*#.*/) { # as long as the current field doesn't start with '#'
|
||||
gsub(/[\t ;]/, "", $i) # Remove leading spaces and trailing ';'
|
||||
printf("_%s\n",$i)
|
||||
}
|
||||
else { # ignore everything after a '#' (comment) sign
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue