summaryrefslogtreecommitdiff
path: root/embedserv/Library_emser.mk
blob: c6c5b9aa6e629fc2ee7bfa94783a15eb8cce1b6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
#
# 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/.
#

$(eval $(call gb_Library_Library,emser))

$(eval $(call gb_Library_set_componentfile,emser,embedserv/util/emser))

$(eval $(call gb_Library_set_include,emser,\
	-I$(SRCDIR)/embedserv/source/inc \
	-I$(ATL_INCLUDE) \
	$$(INCLUDE) \
))

$(eval $(call gb_Library_add_defs,emser,\
	-UNOMINMAX \
))

$(eval $(call gb_Library_use_external,emser,boost_headers))

$(eval $(call gb_Library_use_sdk_api,emser))

$(eval $(call gb_Library_use_libraries,emser,\
	comphelper \
	cppu \
	cppuhelper \
	sal \
	$(gb_UWINAPI) \
))

$(eval $(call gb_Library_use_system_win32_libs,emser,\
	gdi32 \
	ole32 \
	oleaut32 \
	uuid \
))

$(eval $(call gb_Library_add_libs,emser,\
	$(ATL_LIB)/atls.lib \
))

$(eval $(call gb_Library_add_ldflags,emser,\
	-LIBPATH:$(ATL_LIB) \
))

$(eval $(call gb_Library_add_exception_objects,emser,\
	embedserv/source/embed/docholder \
	embedserv/source/embed/ed_idataobj \
	embedserv/source/embed/ed_iinplace \
	embedserv/source/embed/ed_ioleobject \
	embedserv/source/embed/ed_ipersiststr \
	embedserv/source/embed/esdll \
	embedserv/source/embed/guid \
	embedserv/source/embed/iipaobj \
	embedserv/source/embed/intercept \
	embedserv/source/embed/register \
	embedserv/source/embed/servprov \
	embedserv/source/embed/syswinwrapper \
	embedserv/source/embed/tracker \
))

# vim: set noet sw=4 ts=4:
0.0%;'/> -rw-r--r--soldep/bootstrp/prodmap.cxx519
-rw-r--r--soldep/inc/appdef.hxx164
-rw-r--r--soldep/inc/dtsodcmp.hrc99
-rw-r--r--soldep/inc/minormk.hxx80
-rw-r--r--soldep/inc/prodmap.hxx86
-rw-r--r--soldep/inc/soldep/connctr.hxx87
-rw-r--r--soldep/inc/soldep/depper.hxx211
-rw-r--r--soldep/inc/soldep/depwin.hxx76
-rw-r--r--soldep/inc/soldep/graphwin.hxx56
-rw-r--r--soldep/inc/soldep/hashobj.hxx47
-rw-r--r--soldep/inc/soldep/hashtbl.hxx207
-rw-r--r--soldep/inc/soldep/objwin.hxx160
-rw-r--r--soldep/inc/soldep/prj.hxx476
-rw-r--r--soldep/inc/soldep/sdtresid.hxx54
-rw-r--r--soldep/inc/soldep/soldep.hxx119
-rw-r--r--soldep/inc/soldep/soldlg.hrc79
-rw-r--r--soldep/inc/soldep/soldlg.hxx163
-rw-r--r--soldep/inc/soldep/tbox.hxx105
-rw-r--r--soldep/prj/build.lst5
-rw-r--r--soldep/prj/d.lst38
-rw-r--r--soldep/source/connctr.cxx275
-rw-r--r--soldep/source/depapp.cxx150
-rw-r--r--soldep/source/depapp.hxx111
-rw-r--r--soldep/source/depper.cxx689
-rw-r--r--soldep/source/depwin.cxx167
-rw-r--r--soldep/source/graphwin.cxx80
-rw-r--r--soldep/source/hashobj.cxx40
-rw-r--r--soldep/source/makefile.mk144
-rw-r--r--soldep/source/objwin.cxx823
-rw-r--r--soldep/source/sdtresid.cxx51
-rw-r--r--soldep/source/soldep.cxx1722
-rw-r--r--soldep/source/soldep.icobin10134 -> 0 bytes-rw-r--r--soldep/source/soldlg.cxx269
-rw-r--r--soldep/source/soldlg.src374
-rw-r--r--soldep/source/tbox.cxx598
-rw-r--r--soldep/util/perl.mk71
42 files changed, 0 insertions, 12957 deletions
diff --git a/soldep/bootstrp/appdef.cxx b/soldep/bootstrp/appdef.cxx
deleted file mode 100644
index 2fca0ace26d8..000000000000
--- a/soldep/bootstrp/appdef.cxx
+++ /dev/null
@@ -1,168 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <appdef.hxx>
-
-const char* GetDefStandList()
-{
- char* pRet;
- char* pEnv = getenv("STAR_STANDLST");
- if ( pEnv )
- {
- int nLen = strlen( pEnv );
- pRet = ( char *) malloc( nLen + 1 );
- (void) strcpy( pRet, pEnv );
- }
- else
- {
- int nLen = strlen( _DEF_STAND_LIST );
- pRet = ( char *) malloc( nLen + 1 );
- (void) strcpy( pRet, _DEF_STAND_LIST );
- }
- return pRet;
-}
-
-
-const char* GetIniRoot()
-{
- char* pRet;
- char* pEnv = getenv("STAR_INIROOT");
- if ( pEnv )
- {
- int nLen = strlen( pEnv );
- pRet = ( char *) malloc( nLen + 1 );
- (void) strcpy( pRet, pEnv );
- }
- else
- {
- int nLen = strlen( _INIROOT );
- pRet = ( char *) malloc( nLen + 1 );
- (void) strcpy( pRet, _INIROOT );
- }
- return pRet;
-}
-
-const char* GetIniRootOld()
-{
- char* pRet;
- char* pEnv = getenv("STAR_INIROOTOLD");
- if ( pEnv )
- {
- int nLen = strlen( pEnv );
- pRet = ( char *) malloc( nLen + 1 );
- (void) strcpy( pRet, pEnv );
- }
- else
- {
- int nLen = strlen( _INIROOT_OLD );
- pRet = ( char *) malloc( nLen + 1 );
- (void) strcpy( pRet, _INIROOT_OLD );
- }
- return pRet;
-}
-
-const char* GetSSolarIni()
-{
- char* pRet;
- char* pEnv = getenv("STAR_SSOLARINI");
- if ( pEnv )
- {
- int nLen = strlen( pEnv );
- pRet = ( char *) malloc( nLen + 1 );
- (void) strcpy( pRet, pEnv );
- }
- else
- {
- int nLen = strlen( _DEF_SSOLARINI );
- pRet = ( char *) malloc( nLen + 1 );
- (void) strcpy( pRet, _DEF_SSOLARINI );
- }
- return pRet;
-}
-
-
-const char* GetSSCommon()
-{
- char* pRet;
- char* pEnv = getenv("STAR_SSCOMMON");
- if ( pEnv )
- {
- int nLen = strlen( pEnv );
- pRet = ( char *) malloc( nLen + 1 );
- (void) strcpy( pRet, pEnv );
- }
- else
- {
- int nLen = strlen( _DEF_SSCOMMON );
- pRet = ( char *) malloc( nLen + 1 );
- (void) strcpy( pRet, _DEF_SSCOMMON );
- }
- return pRet;
-}
-
-
-const char* GetBServerRoot()
-{
- char* pRet;
- char* pEnv = getenv("STAR_BSERVERROOT");
- if ( pEnv )
- {
- int nLen = strlen( pEnv );
- pRet = ( char *) malloc( nLen + 1 );
- (void) strcpy( pRet, pEnv );
- }
- else
- {
- int nLen = strlen( B_SERVER_ROOT );
- pRet = ( char *) malloc( nLen + 1 );
- (void) strcpy( pRet, B_SERVER_ROOT );
- }
- return pRet;
-}
-
-const char* GetEnv( const char *pVar )
-{
- char *pRet = getenv( pVar );
- if ( !pRet )
- pRet = "";
- return pRet;
-}
-
-const char* GetEnv( const char *pVar, const char *pDefault )
-{
- char *pRet = getenv( pVar );
- if ( !pRet )
- return pDefault;
- return pRet;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/soldep/bootstrp/build_list_converter.pl b/soldep/bootstrp/build_list_converter.pl
deleted file mode 100644
index 3887eca03a12..000000000000
--- a/soldep/bootstrp/build_list_converter.pl
+++ /dev/null
@@ -1,892 +0,0 @@
-:
-eval 'exec perl -wS $0 ${1+"$@"}'
- if 0;
-
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-
-#*****************************************************************************************
-# ASCII parser for the changeover of the current build.lst files to XML files *
-# programmer: Pascal Junck, Sun Microsystems GmbH *
-#*****************************************************************************************
-
-# this is the first step for the changeover of the current 'build.lst' files to the new
-# 'build.xlist'(XML) files
-# before we create the new ones we have to parse all important informations from the old files
-# important parameters are:
-# 1. 'module name'
-# 2. 'module dependency names'
-# 3. 'dependency type'
-# 4. 'job dir'
-# 5. 'depending directories'
-# 6. 'job platform'(only: 'w', 'u', 'm' and 'all')
-# 7. 'job'(only: 'nmake' means 'make')
-# 8. 'build requirements'(here called: 'restrictions')
-
-
-################################# begin of main #######################################
-
-use strict;
-use lib ("/home/vg119683/work/modules");
-
-use XMLBuildListParser;
-
-# get and work with each argument(build.lst files) of the commando line
-# e.g. if the user wants to parse the build.lst file(s):
-# user input (on unix) for all modules : 'perl -w ascii_parser.pl /so/ws/SRC680/src.m42/*/prj/build.lst'
-# user input (on windows) for one module : 'perl -w ascii_parser.pl O:/SRC680/src.m42/[module]/prj/build.lst'
-# get all arguments (build.lst files) of the commando line in this global variable '@buildlist_files'
-my @buildlist_files = @ARGV;
-# global variable for each file name that we want to parse in ASCII
-my $parse_file = "";
-# set the global variable '$debug' (= 1) to see all results on the terminal,
-# else (= 0) it shows nothing of the working output!
-my $debug = 0;
-
-# open the filehandle 'ERROR_LOG' for all errors
-open (ERROR_LOG, ">>ascii_parse.log")
- or die "Error. Open the file <ascii_parse.log> wasn't successful!\n\n";
-
-# reference of the instance of a new object
-my $XMLTree;
-
-foreach (@buildlist_files)
-{
- # get each element (= module) in '$parse_file'
- $parse_file = $_;
-
- # open the filehandle 'PARSE_ASCII' for each module/file that we want to parse
- open (PARSE_ASCII, $parse_file)
- or die "Error. Open the module <$parse_file> wasn't successful!\n\n";
-
- # create a new object
- $XMLTree = XMLBuildListParser->new();
-
- # invoking of the main subroutine
- reading_file();
-
- # is the file name 'build.lst' in the path on the command line?
- # if not, we can not parse and create the new 'build.xlist' file
- if ($parse_file =~ /build(\w+)?\.lst\S*$/)
- {
- my $path = $parse_file;
-
- $path =~ s/build(\w+)?\.lst\S*$/build\.xlist/;
-
- $XMLTree->saveXMLFile($path);
- }
- else
- {
- add_errorlog_no_buildlst_file_found_statement($parse_file);
- }
-
- # close the current $parse_file
- close(PARSE_ASCII);
-
-}
-# after all files were read close the errorlog file
-close(ERROR_LOG);
-
-
-########################### begin of subroutines #####################################
-#
-# global used variable: $parse_file
-#
-########################################################################################
-
-
-########################################################################################
-# sub: reading_file
-# gets: $_ (current file)
-# returns: -
-########################################################################################
-sub reading_file
-{
- # variable for the name of the current module
- my $module_name = "";
-
- # hashes for the infos beginning at the second line of the build.lst files
- my %dir_of_job_platform = ();
- my %dir_of_alias = ();
-
- # control variable for the module dependency line of the file
- # like line 1 of module 'sal' (dependencies means the colon(s)) (SRC680/src.m42)
- # "sa sal : xml2cmp NULL"
- my $module_dependency_line_exists = 0;
- my $module_dependency_line_was_read = 0;
-
- # this line variables are for checking that all lines will be read
- # counts each line
- my $line_number = 0;
- # for the sum of the informative lines (='module dependency line' and 'nmake' lines of the file)
- my $info_line_sum = 0;
- # for the sum of the no-info lines, like:
- # job lines: 'usr1', 'get', ... and comment lines: '# ...' or empty lines
- my $no_info_line_sum = 0;
-
- # read all lines of the file to resolve the first alias
- # with the matching dir to know all aliases and directories
- # at the later second file reading
- while (<PARSE_ASCII>)
- {
- # the variable for each line of a file
- my $line = $_;
-
- # count each line for more exact error descriptions in the log file
- $line_number += 1;
-
- # remember it, if this line exists
- if ( (is_module_dependency_line($line)) && ($module_dependency_line_exists == 0) )
- {
- $module_dependency_line_exists = 1;
-
- # get the name of the current module
- $module_name = get_module_name($line);
- }
-
- # skip all lines, that hasn't the job 'nmake'
- next if (!(is_nmake_line($line)));
-
- # check that the infos (job directory, job platform and alias) exist
- if (my ($job_dir, $job_platform, $alias) = get_alias_resolving_infos($line))
- {
- # prove that it's a valid job_platform
- # and that each first alias and matching job platform exists only once
- check_alias_and_job_platform($job_dir, $job_platform, $alias, \%dir_of_job_platform,
- \%dir_of_alias, $module_name, $line_number);
- }
- else
- {
- chomp;
- add_errorlog_unknown_format_statement($line, $module_name, $line_number);
- next;
- }
- }
- # reset the $line_number, because we count it again
- $line_number = 0;
-
- # read the same file again
- seek (PARSE_ASCII,0,0);
-
- # read each line of the file for all other informations
- # e.g. line 8 of module 'sal'
- # "sa sal\systools\win32\guistdio nmake - n sa_guistdio sa_uwinapi.n NULL"
- # $job_dir $job $job_platform 1.$alias 2.$alias + alias platform
- while (<PARSE_ASCII>)
- {
- # the variable for each line of a file
- my $line = $_;
-
- # count each line to check at the end of the file that all lines were read
- # and for more exact error descriptions in the log file
- $line_number += 1;
-
- # is it a 'nmake' or a 'module dependency' line?
- # if not: print this line to STDOUT,
- # count one to the no-info lines,
- # try to get the information about the module name from this line
- # and skip the line
- if ( (!(is_nmake_line($line))) && (!(is_module_dependency_line($line))) )
- {
- my $no_info_line = show_no_info_line($line, $line_number);
-
- $no_info_line_sum += $no_info_line;
-
- # if no module dependency line exists get the name of the current module from another line
- $module_name = get_module_name($line) if (!($module_name));
-
- # skip the no-info line
- next;
- }
-
- # only if the module dependency line exists and it wasn't read get the infos about it
- if ( ($module_dependency_line_exists) && (!($module_dependency_line_was_read)) )
- {
- ($module_dependency_line_was_read, $info_line_sum) = get_module_dependency_line_infos
- ($line, $module_name, $line_number);
- }
-
- # get all 'nmake' line infos
- my $info_line = get_nmake_line_infos($line, \%dir_of_alias, \%dir_of_job_platform,
- $module_name, $line_number);
-
- # count the info lines;
- $info_line_sum += $info_line;
- }
-
- if ($debug == 1)
- {
- # show the sums of the info and no-info lines
- lines_sums_output($module_name, $line_number, $info_line_sum, $no_info_line_sum);
- }
-}
-
-########################################################################################
-# sub: is_module_dependency_line
-# gets: $line
-# returns: 1 (true) or 0 (false)
-########################################################################################
-sub is_module_dependency_line
-{
- my $line = shift;
-
- # if the module dpendency line exists return 1, otherwise 0
- ($line =~ /^\w+\s+\S+\s+:+\s+/)
- ? return 1
- : return 0;
-}
-
-########################################################################################
-# sub: is_nmake_line
-# gets: $line
-# returns: '1' (true) or '0' (false)
-########################################################################################
-sub is_nmake_line
-{
- my $line = shift;
-
- # these lines are NO nmake lines:
- # 1. a empty line
- # 2. a comment line (perhaps with the job 'nmake')
- # like line 20 of module 'bridges' (SRC680/src.m42)
- # "#br bridges\source\cli_uno nmake - w,vc7 br_cli_uno br_unotypes NULL========= "
- # 3. the module dependency line
- # like line 1 of module 'sal' (dependencies means the colon(s)) (SRC680/src.m42)
- # "sa sal : xml2cmp N ULL"
- # 4. a 'p' job platform line (for OS2)
- # 5. a line with a job, which is not 'nmake'
- ($line =~ (/^[^\s+\#]/) && (!(/\s+:+\s+/)) && (!(/\s+p\s+/)) && (/\bnmake\b/) )
- ? return 1
- : return 0;
-}
-
-########################################################################################
-# sub: get_alias_resolving_infos
-# gets: $line
-# returns: $job_dir, $job_platform, $alias
-########################################################################################
-sub get_alias_resolving_infos
-{
- my $line = shift;
-
- if ($line =~ /^\w+\s+(\S+)\s+\w+\s+\-\s+(\w+)\,?(\w+)?\s+(\S+)\s+/)
- {
- # get the current work directory
- my $temp_job_dir = $1;
-
- my $job_dir = change_job_directory($temp_job_dir);
-
- # get the job platform of the current job
- # if it is a 'n' job platform transform it to 'w'
- # because 'n' can be used now as 'w' (both means windows)
- my $job_platform = $2;
- $job_platform = "w" if($job_platform eq "n");
-
- # get the first alias in each line
- my $alias = $4;
-
- return ($job_dir, $job_platform, $alias);
- }
- return (undef, undef, undef);
-}
-
-########################################################################################
-# sub: change_job_directory
-# gets: $job_dir
-# returns: $changed_job_dir
-########################################################################################
-# we don't need the module name and the first '\' in the current directory
-sub change_job_directory
-{
- my $changed_job_dir = shift;
-
- # ignore the module name
- $changed_job_dir =~ s/^\w+//;
- # change all other '\' against the '/' of the current dir
- $changed_job_dir =~ s/\\/\//g;
-
- # get only a "/" if we are in the root directory
- $changed_job_dir = "/" if ($changed_job_dir eq "");
-
- return $changed_job_dir;
-}
-
-########################################################################################
-# sub: check_alias_and_job_platform
-# gets: $job_dir, $job_platform, $alias, $dir_of_job_platform_ref,
-# $dir_of_alias_ref, $module_name, $line_number
-# returns: -
-########################################################################################
-# get it in the hash only if it is a valid job platform,
-# like 'w', 'u', 'm' and 'n'
-# 'all' is also valid but it doesn't exist in an alias platform(!)
-sub check_alias_and_job_platform
-{
- my ($job_dir, $job_platform, $alias, $dir_of_job_platform_ref,
- $dir_of_alias_ref, $module_name, $line_number) = @_;
-
- # is it a valid job_platform?
- if ($job_platform =~ /(w|u|m|n|all)/)
- {
- # get only the 'w', 'u', 'm' and 'n' based job platforms
- if ($job_platform =~ /[wumn]/)
- {
- # doesn't the key already exist?
- (!(exists $$dir_of_job_platform_ref{$job_platform.$alias}))
- # get the first alias with the matching job platform in the hash
- ? get_alias_and_job_platform($job_platform, $alias, $dir_of_job_platform_ref)
- # this is a line with a redundant alias and job platform
- : add_errorlog_alias_redundancy_statement($module_name, $alias, $job_platform, $line_number);
- }
- if (!(exists $$dir_of_alias_ref{$alias}))
- {
- # get each first alias with the matching job platform
- get_alias_and_matching_directory($dir_of_alias_ref, $alias, $job_dir);
- }
- }
- # it's not a valid job platform
- else
- {
- add_errorlog_invalid_platform_statement($module_name, $job_platform, $line_number);
- }
-}
-
-########################################################################################
-# sub: get_alias_and_job_platform
-# gets: $job_platform, $alias, $dir_of_job_platform_ref
-# returns: -
-########################################################################################
-# get the the job platform and the first alias as a unique key
-# and the job platform as value of the hash
-# it's for checking later that the alias platform is equal to the job platform
-# e.g.: line 6 + 7 of the module 'gtk' (SRC680/src.m42)
-# "gt gtk\pkgconfig nmake - u gt_pkg NULL"
-# "gt gtk\glib nmake - u gt_glib gt_pkg.u NULL"
-# the alias 'gt_pkg' has the directory 'gtk\pkgconfig' (we need only 'pkgconfig')
-# and it has the job platform 'u' - compare it with the alias platform 'gt_pkg.u'
-sub get_alias_and_job_platform
-{
- my ($job_platform, $alias, $dir_of_job_platform_ref) = @_;
-
- # key = 'job platform' and 'first alias' => value = 'job platform'
- $$dir_of_job_platform_ref{$job_platform.$alias} = $job_platform;
-}
-
-########################################################################################
-# sub: get_alias_and_matching_directory
-# gets: $dir_of_alias_ref, $alias, $job_dir
-# returns: -
-########################################################################################
-# fill the hash with the first alias and the matching directory
-# e.g. line 14 of module 'setup2' (SRC680/src.m42)
-# "se setup2\win\source\unloader nmake - w se_wulo se_unotypes NULL"
-# key = 'se_wulo' => value = 'win/source/unloader'
-sub get_alias_and_matching_directory
-{
- my ($dir_of_alias_ref, $alias, $job_dir) = @_;
-
- # key = 'first alias' => value = 'job directory'
- $$dir_of_alias_ref{$alias} = $job_dir;
-}
-
-########################################################################################
-# sub: show_no_info_line
-# gets: $line, $line_number
-# returns: $no_info_line
-########################################################################################
-sub show_no_info_line
-{
- my ($line, $line_number) = @_;
- my $no_info_line += 1;
-
- chomp($line);
-
- print"Ignore line <$line_number>:\n\"$line\"\n\n" if ($debug);
-
- return $no_info_line;
-}
-
-########################################################################################
-# sub: get_module_name
-# gets: $line
-# returns: $module_name
-########################################################################################
-sub get_module_name
-{
- my $line = shift;
- my $module_name = "";
-
- if ($line =~ /^\w+\s+([\w\.\-]+)\\?/)
- {
- $module_name = $1;
- }
-
- # set the 'module name' in the data structure tree
- $XMLTree->setModuleName($module_name);
-
- return $module_name;
-}
-
-########################################################################################
-# sub: get_module_dependency_line_infos
-# gets: $line, $module_name, $line_number
-# returns: $module_dependency_line_was_read, $info_line_sum
-########################################################################################
-# get the informations about the module dependency line
-# like line 1 of module 'sal' (SRC680/src.m42)
-# "sa sal : xml2cmp NULL"
-# $module_name $module_dependency @module_dependency_names
-sub get_module_dependency_line_infos
-{
- my ($line, $module_name, $line_number) = @_;
- my $module_dependency = "";
- my @module_dependency_names = ();
- my %dep_modules_and_products = ();
- my $product = "";
-
- my $module_dependency_line_was_read = 1;
- my $info_line_sum = 1;
-
- if ($debug)
- {
- print"\nline number : <$line_number>\n";
- print"module-name : <$module_name>\n";
- }
-
- # get the dependencies
- if ($line =~ /\s+(:+)\s+/)
- {
- $module_dependency = $1;
- print"module-dependency : <$module_dependency>\n" if ($debug);
-
- # transform the dependency type to the corresponding tag name
- if ($module_dependency eq ":")
- {
- $module_dependency = "md-simple";
- }
- elsif ($module_dependency eq "::")
- {
- $module_dependency = "md-always";
- }
- elsif ($module_dependency eq ":::")
- {
- $module_dependency = "md-force";
- }
- }
-
- # get a list of all depending module names
- if ($line =~ /:+\s+([\S\s]+)\s+NULL/)
- {
- @module_dependency_names = split(/\s+/, $1);
-
- foreach my $module (@module_dependency_names)
- {
- # check whether that there is another product (as "all") of a module
- if ($module =~ /(\S+):+(\S+)/)
- {
- $dep_modules_and_products{$2} = $1;
- }
- else
- {
- $dep_modules_and_products{$module} = "all";
- }
- }
- }
-
- # add the dependency module names, the module dependency type and the product to the data structure
- foreach my $module (sort keys %dep_modules_and_products)
- {
- print"module-dependency-name(s) : key <$module> value <".$dep_modules_and_products{$module}.">\n" if ($debug);
-
- $XMLTree->addModuleDependencies($module, $module_dependency, $dep_modules_and_products{$module});
- }
-
- return ($module_dependency_line_was_read, $info_line_sum);
-}
-
-########################################################################################
-# sub: get_nmake_line_infos
-# gets: $line, \%dir_of_alias, \%dir_of_job_platform, $module_name, $line_number
-# returns: $info_line
-########################################################################################
-# get all infos about the 'nmake' lines
-# e.g. line 8 of module 'sal'
-# "sa sal\systools\win32\guistdio nmake - n sa_guistdio sa_uwinapi.n NULL"
-# $job_dir $job $job_platform 1.$alias 2.$alias + alias platform
-sub get_nmake_line_infos
-{
- my ($line, $dir_of_alias_ref, $dir_of_job_platform_ref, $module_name, $line_number) = @_;
- my $directories_ref = "";
- my $info_line = 0;
-
- # get the infos about the 'nmake' lines
- if ($line =~ /^\w+\s+(\S+)\s+(\w+)\s+\-\s+(\w+)\,?(\S+)?/)
- {
- # get the current working directory
- my $temp_job_dir = $1;
- my $job_dir = change_job_directory($temp_job_dir);
-
- # get the job
- my $job = $2;
- $job = "make" if ($job eq "nmake");
-
- # get the job platform of the current job
- # if it is a 'n' job platform transform it to 'wnt'
- # available values are: 'wnt', 'unx', 'mac' or 'all'
- my $job_platform = $3;
- $job_platform = change_job_platform_name($job_platform);
-
- # get the first alias in each line
- my $restriction = $4;
- my %build_req = ( "$restriction" => "$job_platform") if ($restriction && $job_platform);
-
-
- # get all aliases (but not the first) in an array
- my $aliases_ref = get_aliases($line);
-
- # filter the list of aliases, which has a 'p' job platform
- # and transform a 'n' ending alias platform to a 'w' ending alias platform
- filter_aliases($aliases_ref);
-
- # resolve all aliases (alias[.job platform] => matching directory)
- $directories_ref = resolve_aliases($aliases_ref, $dir_of_alias_ref,
- $dir_of_job_platform_ref, $module_name, $line_number);
-
- # count the informative lines
- $info_line = 1;
-
- $XMLTree->addJob($job_dir, $job, $job_platform, $directories_ref, \%build_req);
-
- # show the infos, that we know about each line
- if ($debug == 1)
- {
- show_line_infos($line_number, $job_dir, $job, $job_platform, $restriction, $aliases_ref, $directories_ref);
- }
- }
- return $info_line;
-}
-
-########################################################################################
-# sub: change_job_platform_name
-# gets: $job_platform
-# returns: $job_platform
-########################################################################################
-sub change_job_platform_name
-{
- my $job_platform = shift;
-
- $job_platform = "wnt" if($job_platform eq "n" || $job_platform eq "w");
- $job_platform = "unx" if($job_platform eq "u");
- $job_platform = "mac" if($job_platform eq "m");
-
- return $job_platform;
-}
-
-########################################################################################
-# sub: get_aliases
-# gets: $_ (current line)
-# returns: \@aliases
-########################################################################################
-# get all aliases of the line in an array
-sub get_aliases
-{
- my $line = shift;
- my @aliases = ();
-
- # get all aliases in an array (but cut out the first alias)
- if ($line =~ /\-\s+[\w+\,]+\s+([\S\s]+)\s+NULL$/)
- {
- print"\nall job aliases : <$1>\n" if ($debug);
-
- @aliases = split /\s+/, $1;
-
- # we don't need the first alias (it stands for the current job directory)
- shift @aliases;
- }
- return \@aliases;
-}
-
-########################################################################################
-# sub: filter_aliases
-# gets: $aliases_ref
-# returns: -
-########################################################################################
-# filter all aliases, because we only need the 'w', 'u' and 'm' job platform based aliases
-sub filter_aliases
-{
- my $aliases_ref = shift;
-
- # get the highest index of the array (number of elements of the array - 1)
- # also works: my $index = scalar(@$aliases_ref)-1;
- my $index = $#{@{$aliases_ref}};
-
- for (; $index >= 0; $index--)
- {
- # filter the 'p' job platform based aliases from '@aliases'
- splice(@$aliases_ref, $index, 1) if ($$aliases_ref[$index] =~ /\.p$/);
-
- # transform a '.n' ending alias platform to '.w' ending alias platform
- if ($$aliases_ref[$index] =~ /\.n$/)
- {
- $$aliases_ref[$index] =~ s/\.n$/\.w/;
- splice(@$aliases_ref, $index, 1, $$aliases_ref[$index]);
- }
- }
-}
-
-########################################################################################
-# sub: resolve_aliases
-# gets: $aliases_ref, $dir_of_alias_ref, $dir_of_job_platform_ref,
-# $module_name, $line_number
-# returns: \@directories
-########################################################################################
-# here we get each alias with the matching job directory
-sub resolve_aliases
-{
- my ($aliases_ref, $dir_of_alias_ref, $dir_of_job_platform_ref, $module_name, $line_number) = @_;
-
- my @directories = ();
- my ($alias_platform, $alias, $temp_alias) = "";
-
- # resolving all directory aliases
- foreach $temp_alias (@$aliases_ref)
- {
- ($alias, $alias_platform) = compare_job_platform_with_alias_platform
- ($temp_alias, $dir_of_job_platform_ref, $module_name, $line_number);
-
- # does the alias exist?
- if (exists $$dir_of_alias_ref{$alias})
- {
- # then get the matching directory in the array
- push (@directories, $$dir_of_alias_ref{$alias});
- }
- else
- {
- add_errorlog_no_directory_of_alias_statement($module_name, $alias, $line_number);
- }
- }
- return \@directories;
-}
-
-########################################################################################
-# sub: compare_job_platform_with_alias_platform
-# gets: $alias, $dir_of_job_platform_ref, $module_name, $line_number
-# returns: $alias
-########################################################################################
-sub compare_job_platform_with_alias_platform
-{
- my ($alias, $dir_of_job_platform_ref, $module_name, $line_number) = @_;
-
- my $alias_platform = "";
-
- # compare the alias platform (with a dot and an ending letter, like "al_alib.u")
- # with the job platform of the line in which this alias was resolved
- if ($alias =~ /\.([wum])$/)
- {
- $alias_platform = $1;
-
- # don't memorize the ending dot and letter
- $alias =~ s/\.\w$//;
-
- # if the value(= job platform) of the hash or the alias platform has no value
- # set it to "no valid value"
- if (!(exists $$dir_of_job_platform_ref{$alias_platform.$alias}))
- {
- $$dir_of_job_platform_ref{$alias_platform.$alias} = "no valid value";
- }
- $alias_platform = "no valid value" if (!($alias_platform));
-
- # are the job platform and the alias platform equal?
- if ($$dir_of_job_platform_ref{$alias_platform.$alias} ne $alias_platform)
- {
- add_errorlog_not_equal_platforms_statement
- ($module_name, $alias, $alias_platform, $dir_of_job_platform_ref, $line_number);
- }
- }
- return ($alias, $alias_platform);
-}
-
-########################################################################################
-# sub: show_line_infos
-# gets: $line_number, $job_dir, $job, $job_platform, $restriction,
-# $aliases_ref, $directories_ref
-# returns: -
-########################################################################################
-# print the infos about each line
-sub show_line_infos
-{
- my ($line_number, $job_dir, $job, $job_platform, $restriction, $aliases_ref, $directories_ref) = @_;
-
- print"line number : <$line_number>\n";
- print"job directory : <$job_dir>\n";
- print"job : <$job>\n";
- print"job platform : <$job_platform>\n" if ($job_platform =~ /(w|u|m|all)/);
- print"restriction : <$restriction>\n" if ($restriction);
- print"alias dependencies : <@$aliases_ref>\n";
- print"directory dependencies : <@$directories_ref>\n\n";
-}
-
-########################################################################################
-# sub: lines_sums_output
-# gets: $module_name, $line_number, $info_line_sum, $no_info_line_sum
-# returns: -
-########################################################################################
-sub lines_sums_output
-{
- # this line variables are for checking that all lines will be read:
- my ($module_name, $line_number, $info_line_sum, $no_info_line_sum) = @_;
- my $lines_sum = 0;
-
- add_errorlog_no_module_name_statement() if (!($module_name));
-
- # were all lines read? and is the checksum okay?
- $lines_sum = $info_line_sum + $no_info_line_sum;
- if ($lines_sum == $line_number)
- {
- print"All $line_number line(s) of module <$module_name> were read and checked!\n\n";
- }
- else
- {
- add_errorlog_different_lines_sums_statement($module_name);
- }
-
- print"module: <$module_name>\n".
- "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n".
- " info line(s) sum = $info_line_sum\n".
- "no-info line(s) sum = $no_info_line_sum\n".
- "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n".
- " total line(s) sum = $line_number\n\n\n";
-}
-
-
-############################ ERROR_LOG subroutines #####################################
-
-
-########################################################################################
-# sub: add_errorlog_invalid_job_platform_statement
-# gets: $module_name, $platform, $line_number
-# returns: -
-########################################################################################
-sub add_errorlog_invalid_job_platform_statement
-{
- my ($module_name, $job_platform, $line_number) = @_;
-
- print ERROR_LOG "Error in module <$module_name> of dir/file <$parse_file> line <$line_number>.\n".
- "The job platform <$job_platform> is not valid.\n\n";
-}
-
-########################################################################################
-# sub: add_errorlog_not_equal_platforms_statement
-# gets: $module_name, $alias, $alias_platform, $dir_of_job_platform_ref, $line_number
-# returns: -
-########################################################################################
-sub add_errorlog_not_equal_platforms_statement
-{
- my ($module_name, $alias, $alias_platform, $dir_of_job_platform_ref, $line_number) = @_;
-
- print ERROR_LOG "Error in module <$module_name> of dir/file <$parse_file> line <$line_number>.\n".
- "The alias platform <$alias.$alias_platform> is not equal ".
- "with the job platform <$$dir_of_job_platform_ref{$alias_platform.$alias}>.\n\n";
-}
-
-########################################################################################
-# sub: add_errorlog_no_directory_of_alias_statement
-# gets: $module_name, $alias, $line_number
-# returns: -
-########################################################################################
-sub add_errorlog_no_directory_of_alias_statement
-{
- my ($module_name, $alias, $line_number) = @_;
-
- print ERROR_LOG "Error in module <$module_name> of dir/file <$parse_file> line <$line_number>.\n".
- "The directory of the alias <$alias> doesn't exist!\n\n";
-}
-
-########################################################################################
-# sub: add_errorlog_no_module_name_statement
-# gets: -
-# returns: -
-########################################################################################
-sub add_errorlog_no_module_name_statement
-{
- print ERROR_LOG "Error. No module name found in dir/file <$parse_file>.\n\n";
-}
-
-########################################################################################
-# sub: add_errorlog_alias_redundancy_statement
-# gets: $module_name, $alias, $job_platform, $line_number
-# returns: -
-########################################################################################
-sub add_errorlog_alias_redundancy_statement
-{
- my ($module_name, $alias, $job_platform, $line_number)= @_;
-
- print ERROR_LOG "Error in module <$module_name> of dir/file <$parse_file> line <$line_number>.\n".
- "The alias <$alias> with the job platform <$job_platform> is redundant.\n\n";
-}
-
-########################################################################################
-# sub: add_errorlog_unknown_format_statement
-# gets: $module_name, $line_number
-# returns: -
-########################################################################################
-sub add_errorlog_unknown_format_statement
-{
- my ($line, $module_name, $line_number) = @_;
-
- print ERROR_LOG "Error in module <$module_name> of dir/file <$parse_file> line <$line_number>.".
- "\nUnknown format:\n\"$line\"\n\n";
-}
-
-########################################################################################
-# sub: add_errorlog_different_lines_sums_statement
-# gets: $module_name
-# returns: -
-########################################################################################
-sub add_errorlog_different_lines_sums_statement
-{
- my $module_name = shift;
-
- print ERROR_LOG "Error in module <$module_name> of dir/file <$parse_file>.\n".
- "The sums of all info and no-info lines are not correct!\n\n";
-}
-
-########################################################################################
-# sub: add_errorlog_no_buildlst_file_found_statement
-# gets: $parse_file
-# returns: -
-########################################################################################
-sub add_errorlog_no_buildlst_file_found_statement
-{
- my $parse_file = shift;
-
- print ERROR_LOG "Error in command line argument <$parse_file>.\n".
- "File 'build.lst' not found!\n";
-}
-
-############################# end of the subroutines ###################################
diff --git a/soldep/bootstrp/hashtbl.cxx b/soldep/bootstrp/hashtbl.cxx
deleted file mode 100644
index 0b329ba28910..000000000000
--- a/soldep/bootstrp/hashtbl.cxx
+++ /dev/null
@@ -1,514 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include <tools/gen.hxx>
-#include <tools/debug.hxx>
-#include <soldep/hashtbl.hxx>
-
-// -------------------------------------------------------------
-// class HashItem
-//
-class HashItem
-{
- enum ETag { TAG_EMPTY, TAG_USED, TAG_DELETED };
-
- void* m_pObject;
- ETag m_Tag;
- ByteString m_Key;
-
-public:
- HashItem() { m_Tag = TAG_EMPTY; m_pObject = NULL; }
-
- BOOL IsDeleted() const
- { return m_Tag == TAG_DELETED; }
-
- BOOL IsEmpty() const
- { return m_Tag == TAG_DELETED || m_Tag == TAG_EMPTY; }
-
- BOOL IsFree() const
- { return m_Tag == TAG_EMPTY; }
-
- BOOL IsUsed() const
- { return m_Tag == TAG_USED; }
-
- void Delete()
- { m_Tag = TAG_DELETED; m_Key = ""; m_pObject = NULL; }
-
- ByteString const& GetKey() const
- { return m_Key; }
-
- void* GetObject() const
- { return m_pObject; }
-
- void SetObject(ByteString const Key, void *pObject)
- { m_Tag = TAG_USED; m_Key = Key; m_pObject = pObject; }
-};
-
-#define MIN(a,b) (a)<(b)?(a):(b)
-#define MAX(a,b) (a)>(b)?(a):(b)
-
-// -------------------------------------------------------------
-// class HashTable
-//
-
-/*static*/ double HashTable::m_defMaxLoadFactor = 0.8;
-/*static*/ double HashTable::m_defDefGrowFactor = 2.0;
-
-HashTable::HashTable(ULONG lSize, BOOL bOwner, double dMaxLoadFactor, double dGrowFactor)
-{
- m_lSize = lSize;
- m_bOwner = bOwner;
- m_lElem = 0;
- m_dMaxLoadFactor = MAX(0.5,MIN(1.0,dMaxLoadFactor)); // 0.5 ... 1.0
- m_dGrowFactor = MAX(1.3,MIN(5.0,dGrowFactor)); // 1.3 ... 5.0
- m_pData = new HashItem [lSize];
-
-// Statistik
-#ifdef DBG_UTIL
- m_aStatistic.m_lSingleHash = 0;
- m_aStatistic.m_lDoubleHash = 0;
- m_aStatistic.m_lProbe = 0;
-#endif
-}
-
-HashTable::~HashTable()
-{
- // Wenn die HashTable der Owner der Objecte ist,
- // mssen die Destruktoren separat gerufen werden.
- // Dies geschieht ber die virtuelle Methode OnDeleteObject()
- //
- // Problem: Virtuelle Funktionen sind im Destructor nicht virtuell!!
- // Der Code mu deshalb ins Macro
-
- /*
- if (m_bOwner)
- {
- for (ULONG i=0; i<GetSize(); i++)
- {
- void *pObject = GetObjectAt(i);
-
- if (pObject != NULL)
- OnDeleteObject(pObject());
- }
- }
- */
-
- // Speicher fr HashItems freigeben
- delete [] m_pData;
-}
-
-void* HashTable::GetObjectAt(ULONG lPos) const
-// Gibt Objekt zurck, wenn es eines gibt, sonst NULL;
-{
- DBG_ASSERT(lPos<m_lSize, "HashTable::GetObjectAt()");
-
- HashItem *pItem = &m_pData[lPos];
-
- return pItem->IsUsed() ? pItem->GetObject() : NULL;
-}
-
-void HashTable::OnDeleteObject(void*)
-{
- DBG_ERROR("HashTable::OnDeleteObject(void*) nicht berladen");
-}
-
-ULONG HashTable::Hash(ByteString const& Key) const
-{
- /*
- ULONG lHash = 0;
- ULONG i,n;
-
- for (i=0,n=Key.Len(); i<n; i++)
- {
- lHash *= 256L;
- lHash += (ULONG)(USHORT)Key.GetStr()[i];
- lHash %= m_lSize;
- }
- return lHash;
- */
-
- // Hashfunktion von P.J. Weinberger
- // aus dem "Drachenbuch" von Aho/Sethi/Ullman
- ULONG i,n;
- ULONG h = 0;
- ULONG g = 0;
-
- for (i=0,n=Key.Len(); i<n; i++)
- {
- h = (h<<4) + (ULONG)(USHORT)Key.GetBuffer()[i];
- g = h & 0xf0000000;
-
- if (g != 0)
- {
- h = h ^ (g >> 24);
- h = h ^ g;
- }
- }
-
- return h % m_lSize;
-}
-
-ULONG HashTable::DHash(ByteString const& Key, ULONG lOldHash) const
-{
- ULONG lHash = lOldHash;
- ULONG i,n;
-
- for (i=0,n=Key.Len(); i<n; i++)
- {
- lHash *= 256L;
- lHash += (ULONG)(USHORT)Key.GetBuffer()[i];
- lHash %= m_lSize;
- }
- return lHash;
-
-/* return
- (
- lHash
- + (char)Key.GetStr()[0] * 256
- + (char)Key.GetStr()[Key.Len()-1]
- + 1
- )
- % m_lSize;
-*/
-}
-
-ULONG HashTable::Probe(ULONG lPos) const
-// gibt den Folgewert von lPos zurck
-{
- lPos++; if (lPos==m_lSize) lPos=0;
- return lPos;
-}
-
-BOOL HashTable::IsFull() const
-{
- return m_lElem>=m_lSize;
-}
-
-BOOL HashTable::Insert(ByteString const& Key, void* pObject)
-// pre: Key ist nicht im Dictionary enthalten, sonst return FALSE
-// Dictionary ist nicht voll, sonst return FALSE
-// post: pObject ist unter Key im Dictionary; m_nElem wurde erhht
-{
- SmartGrow();
-
- if (IsFull())
- {
- DBG_ERROR("HashTable::Insert() is full");
- return FALSE;
- }
-
- if (FindPos(Key) != NULL )
- return FALSE;
-
- ULONG lPos = Hash(Key);
- HashItem *pItem = &m_pData[lPos];
-
- // first hashing
- //
- if (pItem->IsEmpty())
- {
- pItem->SetObject(Key, pObject);
- m_lElem++;
-
- #ifdef DBG_UTIL
- m_aStatistic.m_lSingleHash++;
- #endif
-
- return TRUE;
- }
-
- // double hashing
- //
- lPos = DHash(Key,lPos);
- pItem = &m_pData[lPos];
-
- if (pItem->IsEmpty())
- {
- pItem->SetObject(Key, pObject);
- m_lElem++;
-
- #ifdef DBG_UTIL
- m_aStatistic.m_lDoubleHash++;
- #endif
-
- return TRUE;
- }
-
- // linear probing
- //
- do
- {
- #ifdef DBG_UTIL
- m_aStatistic.m_lProbe++;
- #endif
-
- lPos = Probe(lPos);
- pItem = &m_pData[lPos];
- }
- while(!pItem->IsEmpty());
-
- pItem->SetObject(Key, pObject);
- m_lElem++;
- return TRUE;
-}
-
-HashItem* HashTable::FindPos(ByteString const& Key) const
-// sucht den Key; gibt Refrenz auf den Eintrag (gefunden)
-// oder NULL (nicht gefunden) zurck
-//
-// pre: -
-// post: -
-{
- // first hashing
- //
- ULONG lPos = Hash(Key);
- HashItem *pItem = &m_pData[lPos];
-
- if (pItem->IsUsed()
- && pItem->GetKey() == Key)
- {
- return pItem;
- }
-
- // double hashing
- //
- if (pItem->IsDeleted() || pItem->IsUsed())
- {
- lPos = DHash(Key,lPos);
- pItem = &m_pData[lPos];
-
- if (pItem->IsUsed()
- && pItem->GetKey() == Key)
- {
- return pItem;
- }
-
- // linear probing
- //
- if (pItem->IsDeleted() || pItem->IsUsed())
- {
- ULONG n = 0;
- BOOL bFound = FALSE;
- BOOL bEnd = FALSE;
-
- do
- {
- n++;
- lPos = Probe(lPos);
- pItem = &m_pData[lPos];
-
- bFound = pItem->IsUsed()
- && pItem->GetKey() == Key;
-
- bEnd = !(n<m_lSize || pItem->IsFree());
- }
- while(!bFound && !bEnd);
-
- return bFound ? pItem : NULL;
- }
- }
-
- // nicht gefunden
- //
- return NULL;
-}
-
-void* HashTable::Find(ByteString const& Key) const
-// Gibt Verweis des Objektes zurck, das unter Key abgespeichert ist,
-// oder NULL wenn nicht vorhanden.
-//
-// pre: -
-// post: -
-{
- HashItem *pItem = FindPos(Key);
-
- if (pItem != NULL
- && pItem->GetKey() == Key)
- return pItem->GetObject();
- else
- return NULL;
-}
-
-void* HashTable::Delete(ByteString const& Key)
-// Lscht Objekt, das unter Key abgespeichert ist und gibt Verweis
-// darauf zurck.
-// Gibt NULL zurck, wenn Key nicht vorhanden ist.
-//
-// pre: -
-// post: Objekt ist nicht mehr enthalten; m_lElem dekrementiert
-// Wenn die HashTable der Owner ist, wurde das Object gelscht
-{
- HashItem *pItem = FindPos(Key);
-
- if (pItem != NULL
- && pItem->GetKey() == Key)
- {
- void* pObject = pItem->GetObject();
-
- if (m_bOwner)
- OnDeleteObject(pObject);
-
- pItem->Delete();
- m_lElem--;
- return pObject;
- }
- else
- {
- return NULL;
- }
-}
-
-double HashTable::CalcLoadFactor() const
-// prozentuale Belegung der Hashtabelle berechnen
-{
- return double(m_lElem) / double(m_lSize);
-}
-
-void HashTable::SmartGrow()
-// Achtung: da die Objekte umkopiert werden, darf die OnDeleteObject-Methode
-// nicht gerufen werden
-{
- double dLoadFactor = CalcLoadFactor();
-
- if (dLoadFactor <= m_dMaxLoadFactor)
- return; // nothing to grow
-
- ULONG lOldSize = m_lSize; // alte Daten sichern
- HashItem* pOldData = m_pData;
-
- m_lSize = ULONG (m_dGrowFactor * m_lSize); // neue Gre
- m_pData = new HashItem[m_lSize]; // neue Daten holen
-
- // kein Speicher:
- // Zustand "Tabelle voll" wird in Insert abgefangen
- //
- if (m_pData == NULL)
- {
- m_lSize = lOldSize;
- m_pData = pOldData;
- return;
- }
-
- m_lElem = 0; // noch keine neuen Daten
-
- // Umkopieren der Daten
- //
- for (ULONG i=0; i<lOldSize; i++)
- {
- HashItem *pItem = &pOldData[i];
-
- if (pItem->IsUsed())
- Insert(pItem->GetKey(),pItem->GetObject());
- }
-
- delete [] pOldData;
-}
-
-// Iterator ---------------------------------------------------------
-//
-
-HashTableIterator::HashTableIterator(HashTable const& aTable)
-: m_aTable(aTable)
-{
- m_lAt = 0;
-}
-
-void* HashTableIterator::GetFirst()
-{
- m_lAt = 0;
- return FindValidObject(TRUE /* forward */);
-}
-
-void* HashTableIterator::GetLast()
-{
- m_lAt = m_aTable.GetSize() -1;
- return FindValidObject(FALSE /* backward */);
-}
-
-void* HashTableIterator::GetNext()
-{
- if (m_lAt+1 >= m_aTable.GetSize())
- return NULL;
-
- m_lAt++;
- return FindValidObject(TRUE /* forward */);
-}
-
-void* HashTableIterator::GetPrev()
-{
- if (m_lAt <= 0)
- return NULL;
-
- m_lAt--;
- return FindValidObject(FALSE /* backward */);
-}
-
-void* HashTableIterator::FindValidObject(BOOL bForward)
-// Sucht nach einem vorhandenen Objekt ab der aktuellen
-// Position.
-//
-// pre: ab inkl. m_lAt soll die Suche beginnen
-// post: if not found then
-// if bForward == TRUE then
-// m_lAt == m_aTable.GetSize() -1
-// else
-// m_lAt == 0
-// else
-// m_lAt ist die gefundene Position
-{
- void *pObject = m_aTable.GetObjectAt(m_lAt);
-
- if (pObject != NULL)
- return pObject;
-
- while (pObject == NULL
- && (bForward ? ((m_lAt+1) < m_aTable.GetSize())
- : m_lAt > 0))
- {
- if (bForward)
- m_lAt++;
- else
- m_lAt--;
-
- pObject = m_aTable.GetObjectAt(m_lAt);
- }
-
-#ifdef DBG_UTIL
-
- if (pObject == NULL)
- {
- DBG_ASSERT(bForward ? m_lAt == m_aTable.GetSize() -1 : m_lAt == 0,
- "HashTableIterator::FindValidObject()");
- }
-
-#endif
-
- return pObject;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/soldep/bootstrp/makefile.mk b/soldep/bootstrp/makefile.mk
deleted file mode 100644
index 60b22427d412..000000000000
--- a/soldep/bootstrp/makefile.mk
+++ /dev/null
@@ -1,82 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..
-
-PRJNAME=soldep
-TARGET=bootstrpdt
-ENABLE_EXCEPTIONS=true
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# fixme, code is not yet 64 bit clean
-.IF "$(OS)$(CPU)"=="LINUXX" || ("$(COM)"=="C52" && "$(CPU)"=="U")
-all:
- @echo nothing to do
-.ENDIF
-
-# --- Files --------------------------------------------------------
-
-EXCEPTIONSFILES= \
- $(SLO)$/prj.obj
-
-SLOFILES=\
- $(SLO)$/dep.obj \
- $(SLO)$/minormk.obj \
- $(SLO)$/prodmap.obj \
- $(SLO)$/appdef.obj \
- $(SLO)$/hashtbl.obj \
- $(SLO)$/prj.obj
-
-
-SHL1TARGET =$(TARGET)$(DLLPOSTFIX)
-SHL1IMPLIB =$(TARGET)
-SHL1LIBS =$(SLB)$/$(TARGET).lib
-SHL1DEF =$(MISC)$/$(SHL1TARGET).def
-SHL1DEPN =$(SHL1LIBS)
-SHL1STDLIBS=\
- $(TOOLSLIB) \
- $(BTSTRPLIB) \
- $(SALLIB)
-
-DEF1NAME =$(SHL1TARGET)
-DEF1DEPN =$(MISC)$/$(SHL1TARGET).flt
-DEFLIB1NAME =$(TARGET)
-
-# --- Targets ------------------------------------------------------
-
-.INCLUDE : target.mk
-
-$(MISC)$/$(SHL1TARGET).flt: makefile.mk
- @echo ------------------------------
- @echo Making: $@
- @echo WEP > $@
- @echo LIBMAIN >> $@
- @echo LibMain >> $@
- @echo __CT >> $@
diff --git a/soldep/bootstrp/minormk.cxx b/soldep/bootstrp/minormk.cxx
deleted file mode 100644
index 848545b080b0..000000000000
--- a/soldep/bootstrp/minormk.cxx
+++ /dev/null
@@ -1,189 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "minormk.hxx"
-#include "prodmap.hxx"
-#include <appdef.hxx>
-#include <tools/fsys.hxx>
-#include <tools/geninfo.hxx>
-
-//
-// class MinorMk
-//
-
-/*****************************************************************************/
-MinorMk::MinorMk(
- GenericInformationList *pList,
- const ByteString &rVersion,
- const ByteString &rWorkStamp,
- const ByteString &rEnvironment,
- const ByteString &rMinor
-)
-/*****************************************************************************/
-{
- String sRoot( ProductMapper::GetVersionRoot( pList, rVersion ));
- if ( sRoot.Len()) {
- ByteString sPath( sRoot, RTL_TEXTENCODING_ASCII_US );
- sPath += "/";
- sPath += rEnvironment;
- sPath += "/";
- sPath += "inc";
- if ( rMinor.Len()) {
- sPath += ".";
- sPath += rMinor;
- }
-#ifdef UNX
- sPath.SearchAndReplaceAll( "\\", "/" );
- while( sPath.SearchAndReplace( "//", "/" ) != STRING_NOTFOUND ) {};
-#else
- sPath.SearchAndReplaceAll( "/", "\\" );
- while( sPath.SearchAndReplace( "\\\\", "\\" ) != STRING_NOTFOUND ) {};
-#endif
- DirEntry aPath( String( sPath, RTL_TEXTENCODING_ASCII_US ));
-
- ByteString sFile( rWorkStamp );
- sFile += "minor.mk";
-
- DirEntry aFile( aPath );
- aFile += DirEntry( String( sFile, RTL_TEXTENCODING_ASCII_US ));
- if ( !aFile.Exists()) {
- sFile = sFile.Copy( 3 );
- aFile = aPath;
- aFile += DirEntry( String( sFile, RTL_TEXTENCODING_ASCII_US ));
- }
- ReadMinorMk( aFile.GetFull());
- }
-}
-
-/*****************************************************************************/
-MinorMk::MinorMk( GenericInformationList *pList, const ByteString rVersion )
-/*****************************************************************************/
-{
- String sRoot( ProductMapper::GetVersionRoot( pList, rVersion ));
- if ( sRoot.Len()) {
- ByteString sPath( sRoot, RTL_TEXTENCODING_ASCII_US );
- sPath += "/src/solenv/inc";
-#ifdef UNX
- sPath.SearchAndReplaceAll( "\\", "/" );
- while( sPath.SearchAndReplace( "//", "/" ) != STRING_NOTFOUND ) {};
-#else
- sPath.SearchAndReplaceAll( "/", "\\" );
- while( sPath.SearchAndReplace( "\\\\", "\\" ) != STRING_NOTFOUND ) {};
-#endif
- DirEntry aPath( String( sPath, RTL_TEXTENCODING_ASCII_US ));
-
- ByteString sFile( "minor.mk" );
-
- DirEntry aFile( aPath );
- aFile += DirEntry( String( sFile, RTL_TEXTENCODING_ASCII_US ));
-
- ReadMinorMk( aFile.GetFull());
- }
-}
-
-/*****************************************************************************/
-MinorMk::MinorMk( const ByteString &rMinor, const ByteString &rEnvironment )
-/*****************************************************************************/
- : bExists( FALSE )
-{
- ByteString sDelimiter( DirEntry::GetAccessDelimiter(), RTL_TEXTENCODING_ASCII_US );
-
-
- ByteString sSolver( GetEnv( "SOLARVERSION" ));
- BOOL bNewEnv = TRUE;
- if ( !sSolver.Len()) {
- sSolver = GetEnv( "SOLARVER" );
- bNewEnv = FALSE;
- }
- ByteString sUPD( GetEnv( "UPD" ));
-
- ByteString sMinorMk( sSolver );
- sMinorMk += sDelimiter;
- if ( !bNewEnv ) {
- sMinorMk += sUPD;
- sMinorMk += sDelimiter;
- }
-
- if ( rEnvironment.Len()) {
- sMinorMk += rEnvironment;
- sMinorMk += sDelimiter;
- sMinorMk += "inc";
- if( rMinor.Len()) {
- sMinorMk += ".";
- sMinorMk += rMinor;
- }
- sMinorMk += sDelimiter;
- }
-
- sMinorMk += sUPD;
- sMinorMk += "minor.mk";
-
- String sFile( sMinorMk, RTL_TEXTENCODING_ASCII_US );
-
- ReadMinorMk( sFile );
-}
-
-/*****************************************************************************/
-void MinorMk::ReadMinorMk( const String &rFileName )
-/*****************************************************************************/
-{
- if ( DirEntry( rFileName ).Exists()) {
- bExists = TRUE;
- SvFileStream aStream( rFileName, STREAM_STD_READ );
- while ( !aStream.IsOpen())
- aStream.Open( rFileName, STREAM_STD_READ );
-
- ByteString sLine;
- while ( !aStream.IsEof()) {
- aStream.ReadLine( sLine );
-
- if ( sLine.GetToken( 0, '=' ) == "RSCVERSION" )
- sRSCVERSION = sLine.GetToken( 1, '=' );
- else if ( sLine.GetToken( 0, '=' ) == "RSCREVISION" )
- sRSCREVISION = sLine.GetToken( 1, '=' );
- else if ( sLine.GetToken( 0, '=' ) == "BUILD" )
- sBUILD = sLine.GetToken( 1, '=' );
- else if ( sLine.GetToken( 0, '=' ) == "LAST_MINOR" )
- sLAST_MINOR = sLine.GetToken( 1, '=' );
- }
- aStream.Close();
-
- sRSCVERSION.EraseTrailingChars();
- sRSCREVISION.EraseTrailingChars();
- sBUILD.EraseTrailingChars();
- sLAST_MINOR.EraseTrailingChars();
- }
-}
-
-/*****************************************************************************/
-MinorMk::~MinorMk()
-/*****************************************************************************/
-{
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/soldep/bootstrp/prj.cxx b/soldep/bootstrp/prj.cxx
deleted file mode 100644
index ffd6f34c10b8..000000000000
--- a/soldep/bootstrp/prj.cxx
+++ /dev/null
@@ -1,2717 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include <stdlib.h>
-#include <stdio.h>
-#include <bootstrp/sstring.hxx>
-#include <osl/mutex.hxx>
-
-#define ENABLE_BYTESTRING_STREAM_OPERATORS
-#include <tools/stream.hxx>
-#include <tools/geninfo.hxx>
-#include <soldep/prj.hxx>
-#include <bootstrp/inimgr.hxx>
-
-#ifndef MACOSX
-#pragma hdrstop
-#endif
-
-#ifdef MAC
-#define putenv(x)
-#endif
-
-#if defined(DOS) || defined(WNT) || defined(OS2)
-#define LIST_DELIMETER ';'
-#else
-#ifdef UNX
-#define LIST_DELIMETER ':'
-#else
-#ifdef MAC
-#define LIST_DELIMETER ','
-#endif
-#endif
-#endif
-
-#if defined(DOS) || defined(WNT) || defined(OS2) || defined(WIN)
-#define PATH_DELIMETER '\\'
-#else
-#ifdef UNX
-#define PATH_DELIMETER '/'
-#else
-#ifdef MAC
-#define PATH_DELIMETER ':'
-#endif
-#endif
-#endif
-
-//
-// class SimpleConfig
-//
-
-/*****************************************************************************/
-SimpleConfig::SimpleConfig( String aSimpleConfigFileName )
-/*****************************************************************************/
-{
- nLine = 0;
- aFileName = aSimpleConfigFileName;
- aFileStream.Open ( aFileName, STREAM_READ );
-}
-
-/*****************************************************************************/
-SimpleConfig::SimpleConfig( DirEntry& rDirEntry )
-/*****************************************************************************/
-{
- nLine = 0;
- aFileName = rDirEntry.GetFull();
- aFileStream.Open ( aFileName, STREAM_READ );
-}
-
-/*****************************************************************************/
-SimpleConfig::~SimpleConfig()
-/*****************************************************************************/
-{
- aFileStream.Close ();
-}
-
-/*****************************************************************************/
-ByteString SimpleConfig::GetNext()
-/*****************************************************************************/
-{
- ByteString aString;
-
- if ( aStringBuffer =="" )
- while ((aStringBuffer = GetNextLine()) == "\t");
- if ( aStringBuffer =="" )
- return ByteString();
-
- aString = aStringBuffer.GetToken(0,'\t');
- aStringBuffer.Erase(0, aString.Len()+1);
-
- aStringBuffer.EraseLeadingChars( '\t' );
-
- return aString;
-}
-
-/*****************************************************************************/
-ByteString SimpleConfig::GetNextLine()
-/*****************************************************************************/
-{
- ByteString aSecStr;
- sal_Bool bStreamOk;
- nLine++;
-
- bStreamOk = aFileStream.ReadLine ( aTmpStr );
- if ( (aTmpStr.Search( "#" ) == 0) )
- return "\t";
- aTmpStr = aTmpStr.EraseLeadingChars();
- aTmpStr = aTmpStr.EraseTrailingChars();
- while ( aTmpStr.SearchAndReplace(ByteString(' '),ByteString('\t') ) != STRING_NOTFOUND );
- int nLength = aTmpStr.Len();
- if ( bStreamOk && (nLength == 0) )
- return "\t";
- BOOL bFound = FALSE;
- ByteString aEraseString;
- for ( USHORT i = 0; i<= nLength; i++)
- {
-#ifdef MAC
- if ( aTmpStr.GetChar( i ) == '"')
- {
- if ( bFound) bFound = FALSE;
- else bFound = TRUE;
- aTmpStr.SetChar( i, '\t' );
- }
-#endif
- if ( aTmpStr.GetChar( i ) == 0x20 && !bFound )
- aTmpStr.SetChar( i, 0x09 );
- }
- return aTmpStr;
-}
-
-/*****************************************************************************/
-ByteString SimpleConfig::GetCleanedNextLine( BOOL bReadComments )
-/*****************************************************************************/
-{
- sal_Bool bStreamOk;
- sal_Bool bReadNextLine = sal_True;
- while (bReadNextLine)
- {
- bStreamOk = aFileStream.ReadLine ( aTmpStr );
- if (!bStreamOk)
- return ByteString();
-
- ByteString sTab = "\t";
- ByteString sDoubleTab = "\t\t";
- ByteString sSpace = " ";
- xub_StrLen nIndex = 0;
-
- aTmpStr.SearchAndReplaceAll(sSpace, sTab);
- while ( (nIndex = aTmpStr.SearchAndReplace(sDoubleTab, sTab, nIndex )) != STRING_NOTFOUND );
-
- aTmpStr = aTmpStr.EraseLeadingAndTrailingChars('\t'); // remove tabs
-
- if ( aTmpStr.Search( "#" ) == 0 )
- {
- if (bReadComments )
- return aTmpStr;
- }
- else if (aTmpStr != ByteString::EmptyString())
- bReadNextLine = sal_False;
- }
-
- return aTmpStr;
-}
-
-
-//
-// class CommandData
-//
-
-/*****************************************************************************/
-CommandData::CommandData()
-/*****************************************************************************/
-{
- nOSType = 0;
- nCommand = 0;
- pDepList = 0;
- pCommandList = 0;
-}
-
-/*****************************************************************************/
-CommandData::~CommandData()
-/*****************************************************************************/
-{
- if ( pDepList )
- {
- ByteString *pString = pDepList->First();
- while ( pString )
- {
- delete pString;
- pString = pDepList->Next();
- }
- delete pDepList;
-
- pDepList = NULL;
- }
- if ( pCommandList )
- {
- ByteString *pString = pCommandList->First();
- while ( pString )
- {
- delete pString;
- pString = pCommandList->Next();
- }
- delete pCommandList;
-
- pCommandList = NULL;
- }
-}
-
-/*****************************************************************************/
-ByteString CommandData::GetOSTypeString()
-/*****************************************************************************/
-{
- ByteString aRetStr;
-
- switch (nOSType)
- {
- case OS_WIN16 | OS_WIN32 | OS_OS2 | OS_UNX | OS_MAC :
- aRetStr = "all";
- break;
- case OS_WIN32 | OS_WIN16 :
- aRetStr = "w";
- break;
- case OS_OS2 :
- aRetStr = "p";
- break;
- case OS_UNX :
- aRetStr = "u";
- break;
- case OS_WIN16 :
- aRetStr = "d";
- break;
- case OS_WIN32 :
- aRetStr = "n";
- break;
- case OS_MAC :
- aRetStr = "m";
- break;
- default :
- aRetStr = "none";
- }
-
- return aRetStr;
-}
-
-/*****************************************************************************/
-ByteString CommandData::GetCommandTypeString()
-/*****************************************************************************/
-{
- ByteString aRetStr;
-
- switch (nCommand)
- {
- case COMMAND_NMAKE :
- aRetStr = "nmake";
- break;
- case COMMAND_GET :
- aRetStr = "get";
- break;
- default :
- aRetStr = "usr";
- aRetStr += ByteString::CreateFromInt64( nCommand + 1 - COMMAND_USER_START );
-
- }
-
- return aRetStr;
-}
-
-/*****************************************************************************/
-void CommandData::AddCommand(ByteString* pCommand)
-/*****************************************************************************/
-{
- if (!pCommandList)
- pCommandList = new SByteStringList();
- pCommandList->Insert(pCommand, LIST_APPEND);
-}
-
-/*****************************************************************************/
-CommandData& CommandData::operator>> ( SvStream& rStream )
-/*****************************************************************************/
-{
- rStream << aPrj;
- rStream << aLogFileName;
- rStream << aInpath;
- rStream << aUpd;
- rStream << aUpdMinor;
- rStream << aProduct;
- rStream << aCommand;
- rStream << aPath;
- rStream << aPrePath;
- rStream << aPreFix;
- rStream << aCommandPara;
- rStream << aComment;
- rStream << sClientRestriction;
-
- rStream << nOSType;
- rStream << nCommand;
- rStream << nDepth;
-
- if (pDepList)
- {
- rStream << sal_True;
- *pDepList >> rStream;
- }
- else
- rStream << sal_False;
-
- if (pCommandList)
- {
- rStream << sal_True;
- *pCommandList >> rStream;
- }
- else
- rStream << sal_False;
-
- return *this;
-}
-
-/*****************************************************************************/
-CommandData& CommandData::operator<< ( SvStream& rStream )
-/*****************************************************************************/
-{
- rStream >> aPrj;
- rStream >> aLogFileName;
- rStream >> aInpath;
- rStream >> aUpd;
- rStream >> aUpdMinor;
- rStream >> aProduct;
- rStream >> aCommand;
- rStream >> aPath;
- rStream >> aPrePath;
- rStream >> aPreFix;
- rStream >> aCommandPara;
- rStream >> aComment;
- rStream >> sClientRestriction;
-
- rStream >> nOSType;
- rStream >> nCommand;
- rStream >> nDepth;
-
- BOOL bDepList;
- rStream >> bDepList;
- if (pDepList)
- pDepList->CleanUp();
- if (bDepList)
- {
- if (!pDepList)
- pDepList = new SByteStringList();
- *pDepList << rStream;
- }
- else
- {
- if (pDepList)
- DELETEZ (pDepList);
- }
-
- BOOL bCommandList;
- rStream >> bCommandList;
- if (pCommandList)
- pCommandList->CleanUp();
- if (bCommandList)
- {
- if (!pCommandList)
- pCommandList = new SByteStringList();
- *pCommandList << rStream;
- }
- else
- {
- if (pCommandList)
- DELETEZ (pCommandList);
- }
-
- return *this;
-}
-
-
-
-//
-// class DepInfo
-//
-
-/*****************************************************************************/
-DepInfo::~DepInfo()
-/*****************************************************************************/
-{
- RemoveProject();
-
- if ( pModeList )
- {
- ByteString *pString = pModeList->First();
- while ( pString )
- {
- delete pString;
- pString = pModeList->Next();
- }
- delete pModeList;
-
- pModeList = NULL;
- }
-}
-
-/*****************************************************************************/
-void DepInfo::SetProject (ByteString* pStr)
-/*****************************************************************************/
-{
- RemoveProject();
- pProject = pStr;
-}
-
-/*****************************************************************************/
-void DepInfo::RemoveProject ()
-/*****************************************************************************/
-{
- if (pProject)
- {
- delete pProject;
- pProject = NULL;
- }
-}
-
-/*****************************************************************************/
-DepInfo& DepInfo::operator<< ( SvStream& rStream )
-/*****************************************************************************/
-{
- RemoveProject();
- pProject = new ByteString();
- rStream >> *pProject;
-
- BOOL bModeList;
- rStream >> bModeList;
- if (pModeList)
- pModeList->CleanUp();
- if (bModeList)
- {
- if (!pModeList)
- pModeList = new SByteStringList();
- *pModeList << rStream;
- }
- else
- DELETEZ (pModeList);
-
- rStream >> bAllModes;
- return *this;
-}
-
-/*****************************************************************************/
-DepInfo& DepInfo::operator>> ( SvStream& rStream )
-/*****************************************************************************/
-{
- rStream << *pProject;
- if (pModeList)
- {
- rStream << sal_True;
- *pModeList >> rStream;
- }
- else
- rStream << sal_False;
- rStream << bAllModes;
-
- return *this;
-}
-
-//
-// class SDepInfoList
-//
-
-/*****************************************************************************/
-SDepInfoList::SDepInfoList()
-/*****************************************************************************/
- : pAllModeList(0)
-{
-}
-
-/*****************************************************************************/
-SDepInfoList::~SDepInfoList()
-/*****************************************************************************/
-{
- if (pAllModeList)
- delete pAllModeList;
-}
-
-/*****************************************************************************/
-ULONG SDepInfoList::IsString( ByteString* pStr )
-/*****************************************************************************/
-{
- ULONG nRet = NOT_THERE;
- if ( (nRet = GetPrevString( pStr )) != 0 )
- {
- ByteString* pString = GetObject( nRet )->GetProject();
- if ( *pString == *pStr )
- return nRet;
- else
- return NOT_THERE;
- }
- else
- {
- ByteString* pString = GetObject( 0 )->GetProject();
- if ( pString && (*pString == *pStr) )
- return 0;
- else
- return NOT_THERE;
- }
- return nRet;
-}
-
-/*****************************************************************************/
-ULONG SDepInfoList::GetPrevString( ByteString* pStr )
-/*****************************************************************************/
-{
- ULONG nRet = 0;
- BOOL bFound = FALSE;
- ULONG nCount_l = Count();
- ULONG nUpper = nCount_l;
- ULONG nLower = 0;
- ULONG nCurrent = nUpper / 2;
- ULONG nRem = 0;
- ByteString* pString;
-
- do
- {
- if ( (nCurrent == nLower) || (nCurrent == nUpper) )
- return nLower;
- pString = GetObject( nCurrent )->GetProject();
- int nResult = pStr->CompareTo( *pString );
- if ( nResult == COMPARE_LESS )
- {
- nUpper = nCurrent;
- nCurrent = (nCurrent + nLower) /2;
- }
- else if ( nResult == COMPARE_GREATER )
- {
- nLower = nCurrent;
- nCurrent = (nUpper + nCurrent) /2;
- }
- else if ( nResult == COMPARE_EQUAL )
- return nCurrent;
- if ( nRem == nCurrent )
- return nCurrent;
- nRem = nCurrent;
- }
- while ( !bFound );
- return nRet;
-}
-
-/*****************************************************************************/
-void SDepInfoList::PutModeString( DepInfo* pInfoList, ByteString* pStr )
-/*****************************************************************************/
-{
- SByteStringList* pList = pInfoList->GetModeList();
- if (!pList)
- {
- pList = new SByteStringList;
- pInfoList->SetModeList(pList);
-
- }
-
- if (pList)
- {
- // check if string exists
- ByteString *pString = pList->First();
- while ( pString )
- {
- if (*pString == *pStr)
- {
- delete pStr;
- return;
- }
- pString = pList->Next();
- }
- pList->PutString( pStr );
- }
- else
- delete pStr;
-}
-
-/*****************************************************************************/
-ULONG SDepInfoList::PutString( ByteString* pStr)
-/*****************************************************************************/
-{
- return PutString( pStr, NULL);
-}
-
-/**************************************************************************
-*
-* Sortiert einen ByteString in die Liste ein und gibt die Position,
-* an der einsortiert wurde, zurueck
-*
-**************************************************************************/
-
-ULONG SDepInfoList::PutString( ByteString* pStr, ByteString* pModeStr)
-{
- if (pAllModeList)
- {
- delete pAllModeList;
- pAllModeList = NULL;
- }
-
- ULONG nPos = GetPrevString ( pStr );
- if ( Count() )
- {
- {
- DepInfo* pInfo = GetObject( 0 );
- ByteString* pString = pInfo->GetProject();
- if ( pString->CompareTo( *pStr ) == COMPARE_GREATER )
- {
- pInfo = new DepInfo;
- if (pInfo)
- {
- pInfo->SetProject(pStr);
- if (pModeStr)
- PutModeString(pInfo, pModeStr);
- else
- pInfo->SetAllModes();
- Insert( pInfo, (ULONG)0 );
- }
- return (ULONG)0;
- }
- }
- ByteString* pString = GetObject( nPos )->GetProject();
- if ( *pStr != *pString )
- {
- DepInfo* pInfo = new DepInfo;
- if (pInfo)
- {
- pInfo->SetProject(pStr);
- if (pModeStr)
- PutModeString(pInfo, pModeStr);
- else
- pInfo->SetAllModes();
- Insert( pInfo, nPos+1 );
- }
- return ( nPos +1 );
- }
- else
- {
- delete pStr;
- DepInfo* pInfo = GetObject( nPos );
- if (pModeStr)
- PutModeString(pInfo, pModeStr);
- else
- pInfo->SetAllModes();
- return ( nPos +1 );
- }
- }
- else
- {
- DepInfo* pInfo = new DepInfo;
- if (pInfo)
- {
- pInfo->SetProject(pStr);
- if (pModeStr)
- PutModeString(pInfo, pModeStr);
- else
- pInfo->SetAllModes();
- Insert( pInfo);
- return (ULONG)0;
- }
- }
-
- delete pStr;
- if (pModeStr)
- delete pModeStr;
- return NOT_THERE;
-}
-
-/*****************************************************************************/
-ByteString* SDepInfoList::RemoveString( const ByteString& rName )
-/*****************************************************************************/
-{
- ULONG i;
- ByteString* pReturn;
- if (pAllModeList)
- {
- delete pAllModeList;
- pAllModeList = NULL;
- }
-
- for( i = 0 ; i < Count(); i++ )
- {
- if ( rName == *(GetObject( i )->GetProject()) )
- {
- pReturn = new ByteString(*(GetObject(i)->GetProject()));
- DepInfo* pInfo;
- pInfo = GetObject(i);
- delete pInfo;
- Remove(i);
- return pReturn;
- }
- }
-
- return NULL;
-}
-
-/*****************************************************************************/
-SByteStringList* SDepInfoList::GetAllDepModes()
-/*****************************************************************************/
-{
- if (pAllModeList)
- return pAllModeList;
-
- DepInfo *pInfo = First();
- while ( pInfo )
- {
- if (!pInfo->IsAllModes() && pInfo->GetModeList())
- {
- if (!pAllModeList)
- pAllModeList = new SByteStringList();
- ByteString* pStr = pInfo->GetModeList()->First();
- while (pStr)
- {
- if (pAllModeList->IsString(pStr) == NOT_THERE)
- pAllModeList->PutString(pStr);
- pStr = pInfo->GetModeList()->Next();
- }
- }
- pInfo = Next();
- }
- return pAllModeList;
-}
-
-/*****************************************************************************/
-SDepInfoList& SDepInfoList::operator<< ( SvStream& rStream )
-/*****************************************************************************/
-{
- ULONG nCount_l;
- rStream >> nCount_l;
- for ( USHORT i = 0; i < nCount_l; i++ ) {
- DepInfo* pDepInfo = new DepInfo();
- *pDepInfo << rStream;
- Insert (pDepInfo, LIST_APPEND);
- }
- return *this;
-}
-
-/*****************************************************************************/
-SDepInfoList& SDepInfoList::operator>> ( SvStream& rStream )
-/*****************************************************************************/
-{
- ULONG nCount_l = Count();
- rStream << nCount_l;
- DepInfo* pDepInfo = First();
- while (pDepInfo) {
- *pDepInfo >> rStream;
- pDepInfo = Next();
- }
-
- return *this;
-}
-
-/*****************************************************************************/
-CommandData* Prj::GetDirectoryList ( USHORT nWhatOS, USHORT nCommand )
-/*****************************************************************************/
-{
- return (CommandData *)NULL;
-}
-
-/*****************************************************************************/
-CommandData* Prj::GetDirectoryData( ByteString aLogFileName )
-/*****************************************************************************/
-{
- PrjList* pPrjList = GetCommandDataList ();
- CommandData *pData = NULL;
- ULONG nCount_l = pPrjList->Count();
- for ( ULONG i=0; i<nCount_l; i++ )
- {
- pData = pPrjList->GetObject(i);
- if ( pData->GetLogFile() == aLogFileName )
- return pData;
- }
- return NULL;
-}
-
-//
-// class Prj
-//
-
-/*****************************************************************************/
-Prj::Prj() :
- pPrjInitialDepList(0),
- pPrjDepList(0),
- pPrjDepInfoList(0),
- bSorted( FALSE ),
- bHardDependencies( FALSE ),
- bFixedDependencies( FALSE ),
- bVisited( FALSE ),
- bIsAvailable( TRUE ),
- pTempCommandDataList (0),
- bTempCommandDataListPermanent (FALSE),
- bError (FALSE)
-/*****************************************************************************/
-{
-}
-
-/*****************************************************************************/
-Prj::Prj( ByteString aName ) :
- aProjectName( aName ),
- pPrjInitialDepList(0),
- pPrjDepList(0),
- pPrjDepInfoList(0),
- bSorted( FALSE ),
- bHardDependencies( FALSE ),
- bFixedDependencies( FALSE ),
- bVisited( FALSE ),
- bIsAvailable( TRUE ),
- pTempCommandDataList (0),
- bTempCommandDataListPermanent (FALSE),
- bError (FALSE)
-/*****************************************************************************/
-{
-}
-
-/*****************************************************************************/
-Prj::~Prj()
-/*****************************************************************************/
-{
- pPrjDepList = RemoveStringList (pPrjDepList);
- pPrjInitialDepList = RemoveStringList (pPrjInitialDepList);
- pPrjDepInfoList = RemoveDepInfoList (pPrjDepInfoList);
-}
-
-/*****************************************************************************/
-SByteStringList* Prj::RemoveStringList(SByteStringList* pStringList )
-/*****************************************************************************/
-{
- if ( pStringList )
- {
- ByteString *pString = pStringList->First();
- while ( pString )
- {
- delete pString;
- pString = pStringList->Next();
- }
-
- delete pStringList;
-
- pStringList = NULL;
- }
- return pStringList;
-}
-
-/*****************************************************************************/
-SDepInfoList* Prj::RemoveDepInfoList(SDepInfoList* pInfoList )
-/*****************************************************************************/
-{
- if ( pInfoList )
- {
- DepInfo *pInfo = pInfoList->First();
- while ( pInfo )
- {
- delete pInfo;
- pInfo = pInfoList->Next();
- }
-
- delete pInfoList;
-
- pInfoList = NULL;
- }
- return pInfoList;
-}
-
-/*****************************************************************************/
-void Prj::AddDependencies( ByteString aStr )
-/*****************************************************************************/
-{
-
- if ( !pPrjDepInfoList )
- pPrjDepInfoList = new SDepInfoList;
-
- pPrjDepInfoList->PutString( new ByteString(aStr) );
-}
-
-/*****************************************************************************/
-void Prj::AddDependencies( ByteString aStr, ByteString aModeStr )
-/*****************************************************************************/
-{
-
- // needs dirty flag - not expanded
- if ( !pPrjDepInfoList )
- pPrjDepInfoList = new SDepInfoList;
-
- pPrjDepInfoList->PutString( new ByteString(aStr), new ByteString(aModeStr) );
-}
-
-/*****************************************************************************/
-SByteStringList* Prj::GetDependencies( BOOL bExpanded )
-/*****************************************************************************/
-{
- if ( bExpanded )
- {
- if (!pPrjDepList)
- SetMode (NULL);
- return pPrjDepList;
- }
- else
- {
- if (!pPrjInitialDepList)
- SetMode (NULL);
- return pPrjInitialDepList;
- }
-}
-
-/*****************************************************************************/
-void Prj::SetMode(SByteStringList* pModList)
-/*****************************************************************************/
-{
- pPrjDepList = RemoveStringList (pPrjDepList);
- pPrjInitialDepList = RemoveStringList (pPrjInitialDepList);
-
- if (!pPrjDepInfoList)
- return;
-
- pPrjDepList = new SByteStringList;
- pPrjInitialDepList = new SByteStringList;
-
- DepInfo *pInfo = pPrjDepInfoList->First();
- while ( pInfo )
- {
- if (pInfo->IsAllModes() || !pInfo->GetModeList() || !pModList)
- {
- pPrjDepList->PutString( new ByteString((ByteString) *(pInfo->GetProject())));
- pPrjInitialDepList->PutString( new ByteString((ByteString) *(pInfo->GetProject())));
- }
- else
- {
- BOOL bStringFound = FALSE;
- SByteStringList * pDepList = pInfo->GetModeList();
- ByteString *pModString = pDepList->First();
- while ( pModString )
- {
- ByteString *pDefModString = pModList->First();
- while ( pDefModString )
- {
- if (*pDefModString == *pModString)
- {
- pPrjDepList->PutString( new ByteString((ByteString) *(pInfo->GetProject())));
- pPrjInitialDepList->PutString( new ByteString((ByteString) *(pInfo->GetProject())));
- bStringFound = TRUE;
- break;
- }
- pDefModString = pModList->Next();
- }
- if (bStringFound)
- break;
- pModString = pDepList->Next();
- }
-
- }
-
- pInfo = pPrjDepInfoList->Next();
- }
-}
-
-/*****************************************************************************/
-BOOL Prj::InsertDirectory ( ByteString aDirName, USHORT aWhat,
- USHORT aWhatOS, ByteString aLogFileName,
- const ByteString &rClientRestriction )
-/*****************************************************************************/
-{
- CommandData* pData = new CommandData();
-
- pData->SetPath( aDirName );
- pData->SetCommandType( aWhat );
- pData->SetOSType( aWhatOS );
- pData->SetLogFile( aLogFileName );
- pData->SetClientRestriction( rClientRestriction );
-
- PrjList* pPrjList = GetCommandDataList ();
- pPrjList->Insert( pData );
-
- return FALSE;
-}
-
-/*****************************************************************************/
-//
-// removes directory and existing dependencies on it
-//
-CommandData* Prj::RemoveDirectory ( ByteString aLogFileName )
-/*****************************************************************************/
-{
- PrjList* pPrjList = GetCommandDataList ();
- ULONG nCount_l = pPrjList->Count();
- CommandData* pData;
- CommandData* pDataFound = NULL;
- SByteStringList* pDataDeps;
-
- for ( USHORT i = 0; i < nCount_l; i++ )
- {
- pData = pPrjList->GetObject( i );
- if ( pData->GetLogFile() == aLogFileName )
- pDataFound = pData;
- else
- {
- pDataDeps = pData->GetDependencies();
- if ( pDataDeps )
- {
- ByteString* pString;
- ULONG nDataDepsCount = pDataDeps->Count();
- for ( ULONG j = nDataDepsCount; j > 0; j-- )
- {
- pString = pDataDeps->GetObject( j - 1 );
- if ( pString->GetToken( 0, '.') == aLogFileName )
- pDataDeps->Remove( pString );
- }
- }
- }
- }
-
- Remove( pDataFound );
-
- return pDataFound;
-}
-
-/*****************************************************************************/
-void Prj::ExtractDependencies()
-/*****************************************************************************/
-{
- ULONG nPos = 0;
- CommandData* pData = GetObject(nPos);
- while (pData)
- {
- SByteStringList* pDepList = pData->GetDependencies();
- if (pDepList)
- {
- ByteString * pDepStr = pDepList->First();
- while (pDepStr)
- {
- CommandData* pSearchData = First();
- while (pSearchData)
- {
- if ((*pDepStr == pSearchData->GetPath()) && (pData->GetOSType() & pSearchData->GetOSType()))
- {
- *pDepStr = pSearchData->GetLogFile();
- break;
- }
-
- pSearchData = Next();
- }
-
- pDepStr = pDepList->Next();
- }
- }
- nPos ++;
- pData = GetObject(nPos);
- }
-}
-
-/*****************************************************************************/
-PrjList* Prj::GetCommandDataList ()
-/*****************************************************************************/
-{
- if (pTempCommandDataList)
- return pTempCommandDataList;
- else
- return (PrjList*)this;
-}
-
-/*****************************************************************************/
-void Prj::RemoveTempCommandDataList()
-/*****************************************************************************/
-{
- if (pTempCommandDataList)
- {
- delete pTempCommandDataList; // this list remove the elements by itself
- pTempCommandDataList = NULL;
- }
-}
-
-/*****************************************************************************/
-void Prj::GenerateTempCommandDataList()
-/*****************************************************************************/
-{
- if (pTempCommandDataList)
- RemoveTempCommandDataList();
- pTempCommandDataList = new PrjList();
- CommandData* pCommandData = First();
- while (pCommandData) {
- SvMemoryStream* pStream = new SvMemoryStream();
- *pCommandData >> *pStream;
- CommandData* pNewCommandData = new CommandData();
- pStream->Seek( STREAM_SEEK_TO_BEGIN );
- *pNewCommandData << *pStream;
- pTempCommandDataList->Insert(pNewCommandData, LIST_APPEND);
- delete pStream;
- pCommandData = Next();
- }
-}
-
-/*****************************************************************************/
-void Prj::GenerateEmptyTempCommandDataList()
-/*****************************************************************************/
-{
- if (pTempCommandDataList)
- RemoveTempCommandDataList();
- pTempCommandDataList = new PrjList();
-}
-
-/*****************************************************************************/
-Prj& Prj::operator>> ( SvStream& rStream )
-/*****************************************************************************/
-{
- rStream << bVisited;
- rStream << aProjectName;
- rStream << aProjectPrefix;
- rStream << bHardDependencies;
- rStream << bFixedDependencies;
- rStream << bSorted;
- rStream << bIsAvailable;
- rStream << bError;
-
- if (pPrjDepInfoList)
- {
- rStream << sal_True;
- *pPrjDepInfoList >> rStream;
- }
- else
- rStream << sal_False;
-
- ULONG nCount_l = Count();
- rStream << nCount_l;
-
- CommandData* pData = First();
- while (pData) {
- *pData >> rStream;
- pData = Next();
- }
-
- return *this;
-}
-
-/*****************************************************************************/
-Prj& Prj::operator<< ( SvStream& rStream )
-/*****************************************************************************/
-{
- rStream >> bVisited;
- rStream >> aProjectName;
- rStream >> aProjectPrefix;
- rStream >> bHardDependencies;
- rStream >> bFixedDependencies;
- rStream >> bSorted;
- rStream >> bIsAvailable;
- rStream >> bError;
-
- BOOL bDepList;
- rStream >> bDepList;
- DELETEZ (pPrjDepInfoList);
- if (bDepList)
- {
- pPrjDepInfoList = new SDepInfoList();
- *pPrjDepInfoList << rStream;
- }
-
- ULONG nCount_l;
- rStream >> nCount_l;
-
- for ( USHORT i = 0; i < nCount_l; i++ ) {
- CommandData* pData = new CommandData();
- *pData << rStream;
- Insert (pData, LIST_APPEND);
- }
-
- return *this;
-}
-
-
-//
-// class Star
-//
-
-/*****************************************************************************/
-Star::Star()
-/*****************************************************************************/
- : pDepMode (NULL),
- pAllDepMode (NULL)
-{
- // this ctor is only used by StarWriter
-}
-
-/*****************************************************************************/
-Star::Star(String aFileName, USHORT nMode )
-/*****************************************************************************/
- : nStarMode( nMode ),
- sFileName( aFileName ),
- pDepMode (NULL),
- pAllDepMode (NULL)
-{
- Read( aFileName );
-}
-
-/*****************************************************************************/
-Star::Star(SolarFileList *pSolarFiles )
-/*****************************************************************************/
- : nStarMode( STAR_MODE_MULTIPLE_PARSE ),
- pDepMode (NULL),
- pAllDepMode (NULL)
-{
- // this ctor is used by StarBuilder to get the information for the whole workspace
- Read( pSolarFiles );
-}
-
-/*****************************************************************************/
-Star::Star(GenericInformationList *pStandLst, ByteString &rVersion,
- BOOL bLocal, const char *pSourceRoot )
-/*****************************************************************************/
- : pDepMode (NULL),
- pAllDepMode (NULL)
-{
- UpdateFileList (pStandLst, rVersion, TRUE, bLocal, pSourceRoot);
-}
-
-/*****************************************************************************/
-void Star::UpdateFileList( GenericInformationList *pStandLst, ByteString &rVersion,
- BOOL bRead, BOOL bLocal, const char *pSourceRoot )
-/*****************************************************************************/
-{
- sSourceRoot=String::CreateFromAscii(""); // clear old SourceRoot
- ByteString sPath( rVersion );
- if ( pSourceRoot )
- sSourceRoot = String::CreateFromAscii( pSourceRoot );
-
-#ifdef UNX
- sPath += "/settings/UNXSOLARLIST";
-#else
- sPath += "/settings/SOLARLIST";
-#endif
- GenericInformation *pInfo = pStandLst->GetInfo( sPath, TRUE );
-
- if( pInfo && pInfo->GetValue().Len()) {
- ByteString sFile( pInfo->GetValue());
- if ( bLocal ) {
- IniManager aIniManager;
- aIniManager.ToLocal( sFile );
- }
- String sFileName_l( sFile, RTL_TEXTENCODING_ASCII_US );
- nStarMode = STAR_MODE_SINGLE_PARSE;
- if (bRead)
- Read( sFileName_l );
- }
- else {
- SolarFileList *pFileList = new SolarFileList();
-
- sPath = rVersion;
- sPath += "/drives";
-
- GenericInformation *pInfo_l = pStandLst->GetInfo( sPath, TRUE );
- if ( pInfo_l && pInfo_l->GetSubList()) {
- GenericInformationList *pDrives = pInfo_l->GetSubList();
- for ( ULONG i = 0; i < pDrives->Count(); i++ ) {
- GenericInformation *pDrive = pDrives->GetObject( i );
- if ( pDrive ) {
- DirEntry aEntry;
- BOOL bOk = FALSE;
- if ( sSourceRoot.Len()) {
- aEntry = DirEntry( sSourceRoot );
- bOk = TRUE;
- }
- else {
-#ifdef UNX
- sPath = "UnixVolume";
- GenericInformation *pUnixVolume = pDrive->GetSubInfo( sPath );
- if ( pUnixVolume ) {
- String sRoot( pUnixVolume->GetValue(), RTL_TEXTENCODING_ASCII_US );
- aEntry = DirEntry( sRoot );
- bOk = TRUE;
- }
-#else
- bOk = TRUE;
- String sRoot( *pDrive, RTL_TEXTENCODING_ASCII_US );
- sRoot += String::CreateFromAscii( "\\" );
- aEntry = DirEntry( sRoot );
-#endif
- }
- if ( bOk ) {
- sPath = "projects";
- GenericInformation *pProjectsKey = pDrive->GetSubInfo( sPath, TRUE );
- if ( pProjectsKey ) {
- if ( !sSourceRoot.Len()) {
- sPath = rVersion;
- sPath += "/settings/PATH";
- GenericInformation *pPath = pStandLst->GetInfo( sPath, TRUE );
- if( pPath ) {
- ByteString sAddPath( pPath->GetValue());
-#ifdef UNX
- sAddPath.SearchAndReplaceAll( "\\", "/" );
-#else
- sAddPath.SearchAndReplaceAll( "/", "\\" );
-#endif
- String ssAddPath( sAddPath, RTL_TEXTENCODING_ASCII_US );
- aEntry += DirEntry( ssAddPath );
- }
- }
- sPath = rVersion;
- sPath += "/settings/SHORTPATH";
- GenericInformation *pShortPath = pStandLst->GetInfo( sPath, TRUE );
- BOOL bShortPath = FALSE;
- if (pShortPath && (pShortPath->GetValue() == "_TRUE"))
- bShortPath = TRUE;
- sSourceRoot = aEntry.GetFull();
- GenericInformationList *pProjects = pProjectsKey->GetSubList();
- if ( pProjects ) {
- GenericInformation * pProject = pProjects->First();
- while (pProject) {
- String sLocalSourceRoot = sSourceRoot;
- ByteString sProject( *pProject );
- String ssProject( sProject, RTL_TEXTENCODING_ASCII_US );
-
- ByteString aDirStr ("Directory");
- GenericInformation * pDir = pProject->GetSubInfo (aDirStr);
- if (pDir) {
- ByteString aDir = pDir->GetValue();
- DirEntry aRootEntry;
- if (bShortPath)
- aRootEntry = aEntry + DirEntry(aDir);
- else
- aRootEntry = aEntry.GetPath() + DirEntry(aDir);
- sLocalSourceRoot = aRootEntry.GetFull();
- }
-
- String aBuildListPath = CreateFileName(ssProject, sLocalSourceRoot);
-
- pFileList->Insert( new String( aBuildListPath ), LIST_APPEND );
- ByteString sFile( aBuildListPath, RTL_TEXTENCODING_ASCII_US );
- pProject = pProjects->Next();
- }
- }
- }
- }
- }
- }
- }
-
- if (!CheckFileLoadList(pFileList))
- {
- ClearAvailableDeps();
- ClearCurrentDeps();
- ClearLoadedFilesList();
- RemoveAllPrj();
- bRead = TRUE; // read new list because old list is deleted
- }
-
- if (bRead)
- Read( pFileList );
- else
- GenerateFileLoadList( pFileList );
- }
-}
-
-/*****************************************************************************/
-void Star::FullReload( GenericInformationList *pStandLst, ByteString &rVersion,
- BOOL bRead, BOOL bLocal, const char *pSourceRoot )
-/*****************************************************************************/
-{
- ClearAvailableDeps();
- ClearCurrentDeps();
- ClearLoadedFilesList();
- RemoveAllPrj();
- UpdateFileList( pStandLst, rVersion, bRead, bLocal, pSourceRoot );
-}
-
-/*****************************************************************************/
-BOOL Star::CheckFileLoadList(SolarFileList *pSolarFiles)
-/*****************************************************************************/
-{
- BOOL bRet = TRUE;
- if (aLoadedFilesList.Count() == 0)
- return bRet;
- StarFile * pLoadFile = aLoadedFilesList.First();
- while (pLoadFile)
- {
- BOOL bIsAvailable = FALSE;
- String * pFile = pSolarFiles->First();
- while (pFile)
- {
- if (*pFile == pLoadFile->GetName())
- {
- bIsAvailable = TRUE;
- break;
- }
- pFile = pSolarFiles->Next();
- }
- if (!bIsAvailable)
- {
- bRet = FALSE;
- break;
- }
- pLoadFile = aLoadedFilesList.Next();
- }
- return bRet;
-}
-
-/*****************************************************************************/
-Star::~Star()
-/*****************************************************************************/
-{
- ClearAvailableDeps();
- ClearCurrentDeps();
- ClearLoadedFilesList();
- RemoveAllPrj();
-}
-
-/*****************************************************************************/
-void Star::GenerateFileLoadList( SolarFileList *pSolarFiles )
-/*****************************************************************************/
-{
- SolarFileList* pNewSolarFiles = NULL;
- while( pSolarFiles->Count()) {
- StarFile *pFile = new StarFile( *pSolarFiles->GetObject(( ULONG ) 0 ));
- aMutex.acquire();
- ULONG nPos = SearchFileEntry(&aLoadedFilesList, pFile);
- if ( nPos == LIST_ENTRY_NOTFOUND )
- {
- if (!pNewSolarFiles)
- pNewSolarFiles = new SolarFileList();
-
- pNewSolarFiles->Insert(new String(pFile->GetName()), LIST_APPEND );
- }
- aMutex.release();
- delete pSolarFiles->Remove(( ULONG ) 0 );
- delete pFile;
- }
- delete pSolarFiles;
- if (pNewSolarFiles)
- Read (pNewSolarFiles);
-}
-
-/*****************************************************************************/
-SolarFileList* Star::NeedsFilesForUpdate()
-/*****************************************************************************/
-{
- aMutex.acquire();
- SolarFileList* pPrjList = NULL;
- for ( ULONG i = 0; i < aLoadedFilesList.Count(); i++ )
- if ( aLoadedFilesList.GetObject( i )->NeedsUpdate()) {
- if (!pPrjList)
- pPrjList = new SolarFileList();
-
- pPrjList->Insert(new String (aLoadedFilesList.GetObject( i )->GetName()), LIST_APPEND);
- }
-
- aMutex.release();
- return pPrjList;
-}
-
-/*****************************************************************************/
-BOOL Star::NeedsUpdate()
-/*****************************************************************************/
-{
- aMutex.acquire();
- for ( ULONG i = 0; i < aLoadedFilesList.Count(); i++ )
- if ( aLoadedFilesList.GetObject( i )->NeedsUpdate()) {
- aMutex.release();
- return TRUE;
- }
-
- aMutex.release();
- return FALSE;
-}
-
-/*****************************************************************************/
-void Star::Read( String &rFileName )
-/*****************************************************************************/
-{
- ClearAvailableDeps ();
- ByteString aString;
- aFileList.Insert( new String( rFileName ));
-
- DirEntry aEntry( rFileName );
- aEntry.ToAbs();
- aEntry = aEntry.GetPath().GetPath().GetPath();
- sSourceRoot = aEntry.GetFull();
-
- while( aFileList.Count()) {
- String ssFileName = *aFileList.GetObject(( ULONG ) 0 );
- StarFile* pFile = ReadBuildlist (ssFileName);
- aMutex.acquire();
- ReplaceFileEntry (&aLoadedFilesList, pFile);
- aMutex.release();
- aFileList.Remove(( ULONG ) 0 );
- }
- // resolve all dependencies recursive
- Expand_Impl();
-}
-
-/*****************************************************************************/
-ULONG Star::SearchFileEntry( StarFileList *pStarFiles, StarFile* pFile )
-/*****************************************************************************/
-{
- StarFile *pSearchFile;
- ULONG nCount_l;
-
- nCount_l = pStarFiles->Count();
-
- for ( ULONG i=0; i<nCount_l; i++)
- {
- pSearchFile = pStarFiles->GetObject(i);
- if ( pSearchFile->GetName() == pFile->GetName() )
- {
- return i;
- }
- }
- return LIST_ENTRY_NOTFOUND;
-}
-
-/*****************************************************************************/
-void Star::ReplaceFileEntry( StarFileList *pStarFiles, StarFile* pFile )
-/*****************************************************************************/
-{
- ULONG nPos = SearchFileEntry(pStarFiles, pFile);
- if ( nPos != LIST_ENTRY_NOTFOUND )
- {
- StarFile* pTmpStarFile = pStarFiles->GetObject(nPos);
- delete pTmpStarFile;
- pStarFiles->Replace(pFile, nPos);
- return;
- }
- pStarFiles->Insert( pFile, LIST_APPEND );
-}
-
-/*****************************************************************************/
-void Star::Read( SolarFileList *pSolarFiles )
-/*****************************************************************************/
-{
- ClearAvailableDeps ();
- while( pSolarFiles->Count()) {
- ByteString aString;
-
- String ssFileName = *pSolarFiles->GetObject(( ULONG ) 0 );
- StarFile *pFile = ReadBuildlist ( ssFileName);
-
- if ( pFile->Exists()) {
- DirEntry aEntry( pFile->GetName() );
- DirEntry aEntryPrj = aEntry.GetPath().GetPath();
- if (aEntryPrj.GetExtension() != String::CreateFromAscii( "" ))
- {
- aEntryPrj.CutExtension();
- ByteString aPrjName = ByteString( aEntryPrj.GetName(), gsl_getSystemTextEncoding());
- Prj* pPrj = GetPrj(aPrjName);
- if (pPrj)
- pPrj->IsAvailable (FALSE);
- }
-
- }
-
- aMutex.acquire();
- ReplaceFileEntry (&aLoadedFilesList, pFile);
- aMutex.release();
- delete pSolarFiles->Remove(( ULONG ) 0 );
- }
- delete pSolarFiles;
-
- Expand_Impl();
-}
-
-/*****************************************************************************/
-String Star::CreateFileName( String& rProject, String& rSourceRoot )
-/*****************************************************************************/
-{
- // this method is used to find solarlist parts of nabours (other projects)
- String sPrjDir( String::CreateFromAscii( "prj" ));
- String sBuildList( String::CreateFromAscii( "build.lst" ));
-
- DirEntry aEntry( rSourceRoot );
- aEntry += DirEntry( rProject );
-
- // if this project not exists, maybe it's a not added project of a CWS
-
- if ( !aEntry.Exists() ) {
- aEntry.SetExtension(String::CreateFromAscii( "lnk" ));
- if ( !aEntry.Exists() )
- aEntry.CutExtension();
-
- aEntry.SetExtension(String::CreateFromAscii( "link" ));
- if ( !aEntry.Exists() )
- aEntry.CutExtension();
- }
-
- aEntry += DirEntry( sPrjDir );
- aEntry += DirEntry( sBuildList );
-
- DirEntry& aActualEntry = aEntry;
-