commit
acf7bd3fee
|
@ -17,8 +17,10 @@ lib/
|
||||||
**/tripwire
|
**/tripwire
|
||||||
**/twadmin
|
**/twadmin
|
||||||
**/twprint
|
**/twprint
|
||||||
|
**/twtest
|
||||||
**/siggen.exe
|
**/siggen.exe
|
||||||
**/tripwire.exe
|
**/tripwire.exe
|
||||||
**/twadmin.exe
|
**/twadmin.exe
|
||||||
**/twprint.exe
|
**/twprint.exe
|
||||||
|
**/twtest.exe
|
||||||
releases/
|
releases/
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
|
2016-04-20 Brian Cox <bcox@tripwire.com>
|
||||||
|
* Bump version to 2.4.3.1
|
||||||
|
* Revive old 'twtest' unit test suite (such as it is); move _t.cpp files into twtest dir.
|
||||||
|
* Fix -Wnarrowing warnings in yyparse.cpp - GCC 6 would treat these as errors.
|
||||||
|
* Build with -Wextra to enable more warnings.
|
||||||
|
* Fix a variety of other compiler warnings, some exposed by -Wextra, others preexisting.
|
||||||
|
* Replace remaining tabs w/ 4 spaces. Mixing the 2 styles can now cause GCC 6 'misleading indentation' warnings.
|
||||||
|
|
||||||
2016-04-11 Brian Cox <bcox@tripwire.com>
|
2016-04-11 Brian Cox <bcox@tripwire.com>
|
||||||
* Bump version to 2.4.3.0
|
* Bump version to 2.4.3.0
|
||||||
* Compilation fixes for gcc 4.7+ and LLVM/clang
|
* Compilation fixes for gcc 4.7+ and LLVM/clang
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
What's new in Open Source Tripwire 2.4.3.0:
|
What's new in Open Source Tripwire 2.4.3:
|
||||||
|
|
||||||
* This update fixes compilation errors on modern compilers (GCC 4.7+ and LLVM/clang),
|
* This update fixes compilation errors on modern compilers (GCC 4.7+ and LLVM/clang),
|
||||||
as well as some additional errors encountered on various platforms. This is intended
|
as well as some additional errors encountered on various platforms. This is intended
|
||||||
|
@ -39,6 +39,7 @@ Linuxes
|
||||||
- Raspbian 7 (wheezy) (armv6l) + gcc 4.6.3
|
- Raspbian 7 (wheezy) (armv6l) + gcc 4.6.3
|
||||||
- openSuSE Tumbleweed (20160408) (i586) + gcc 5.3.1
|
- openSuSE Tumbleweed (20160408) (i586) + gcc 5.3.1
|
||||||
- RHEL 6.0 (powerpc64) + gcc 4.4.4
|
- RHEL 6.0 (powerpc64) + gcc 4.4.4
|
||||||
|
- Fedora 24 Alpha 7 (amd64) + gcc 6.0.0
|
||||||
|
|
||||||
OSX
|
OSX
|
||||||
- Mac OS X 10.11 + LLVM 7.0.2 / clang-700.1.81
|
- Mac OS X 10.11 + LLVM 7.0.2 / clang-700.1.81
|
||||||
|
@ -90,7 +91,7 @@ may be desirable elsewhere. It's simplest to add these to configure.in and run
|
||||||
autoreconf -i instead of hand-editing each Makefile individually.
|
autoreconf -i instead of hand-editing each Makefile individually.
|
||||||
|
|
||||||
* Older versions of Open Source Tripwire reportedly do not build on Tru64 UNIX.
|
* Older versions of Open Source Tripwire reportedly do not build on Tru64 UNIX.
|
||||||
This is likely to be true with 2.4.3.0 as well, due to the lack of appropriate
|
This is likely to be true with 2.4.3 as well, due to the lack of appropriate
|
||||||
hardware to test it on. If anyone out there has a Tru64 box and wants to fix
|
hardware to test it on. If anyone out there has a Tru64 box and wants to fix
|
||||||
this, patches are always welcome.
|
this, patches are always welcome.
|
||||||
|
|
||||||
|
|
|
@ -3107,7 +3107,7 @@ fi
|
||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE=tripwire
|
PACKAGE=tripwire
|
||||||
VERSION=2.4.3.0
|
VERSION=2.4.3.1
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
@ -6682,7 +6682,7 @@ fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ac_config_files="$ac_config_files Makefile man/Makefile man/man4/Makefile man/man5/Makefile man/man8/Makefile src/Makefile src/cryptlib/Makefile src/core/Makefile src/db/Makefile src/fco/Makefile src/fs/Makefile src/tw/Makefile src/twcrypto/Makefile src/twparser/Makefile src/util/Makefile src/twprint/Makefile src/twadmin/Makefile src/siggen/Makefile src/tripwire/Makefile"
|
ac_config_files="$ac_config_files Makefile man/Makefile man/man4/Makefile man/man5/Makefile man/man8/Makefile src/Makefile src/cryptlib/Makefile src/core/Makefile src/db/Makefile src/fco/Makefile src/fs/Makefile src/tw/Makefile src/twcrypto/Makefile src/twparser/Makefile src/util/Makefile src/twprint/Makefile src/twadmin/Makefile src/siggen/Makefile src/tripwire/Makefile src/twtest/Makefile"
|
||||||
|
|
||||||
cat >confcache <<\_ACEOF
|
cat >confcache <<\_ACEOF
|
||||||
# This file is a shell script that caches the results of configure
|
# This file is a shell script that caches the results of configure
|
||||||
|
@ -7418,6 +7418,7 @@ do
|
||||||
"src/twadmin/Makefile") CONFIG_FILES="$CONFIG_FILES src/twadmin/Makefile" ;;
|
"src/twadmin/Makefile") CONFIG_FILES="$CONFIG_FILES src/twadmin/Makefile" ;;
|
||||||
"src/siggen/Makefile") CONFIG_FILES="$CONFIG_FILES src/siggen/Makefile" ;;
|
"src/siggen/Makefile") CONFIG_FILES="$CONFIG_FILES src/siggen/Makefile" ;;
|
||||||
"src/tripwire/Makefile") CONFIG_FILES="$CONFIG_FILES src/tripwire/Makefile" ;;
|
"src/tripwire/Makefile") CONFIG_FILES="$CONFIG_FILES src/tripwire/Makefile" ;;
|
||||||
|
"src/twtest/Makefile") CONFIG_FILES="$CONFIG_FILES src/twtest/Makefile" ;;
|
||||||
|
|
||||||
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
|
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
|
||||||
esac
|
esac
|
||||||
|
|
|
@ -5,7 +5,7 @@ dnl
|
||||||
AC_INIT
|
AC_INIT
|
||||||
AC_CONFIG_SRCDIR([src/tw/tw.cpp])
|
AC_CONFIG_SRCDIR([src/tw/tw.cpp])
|
||||||
AC_CANONICAL_TARGET([])
|
AC_CANONICAL_TARGET([])
|
||||||
AM_INIT_AUTOMAKE(tripwire, 2.4.3.0)
|
AM_INIT_AUTOMAKE(tripwire, 2.4.3.1)
|
||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
dnl #################################
|
dnl #################################
|
||||||
|
@ -431,5 +431,6 @@ src/twprint/Makefile
|
||||||
src/twadmin/Makefile
|
src/twadmin/Makefile
|
||||||
src/siggen/Makefile
|
src/siggen/Makefile
|
||||||
src/tripwire/Makefile
|
src/tripwire/Makefile
|
||||||
|
src/twtest/Makefile
|
||||||
])
|
])
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
PRODUCT=tripwire
|
PRODUCT=tripwire
|
||||||
VERSION=2.4.3.0
|
VERSION=2.4.3.1
|
||||||
|
|
||||||
platform() {
|
platform() {
|
||||||
case `uname` in
|
case `uname` in
|
||||||
|
|
|
@ -605,6 +605,12 @@ for i in $loosefiles; do
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
#Make extra sure we don't install the unit test binary to sbin
|
||||||
|
if [ -e "$TWBIN/twtest" ] ; then
|
||||||
|
rm -f "$TWBIN/twtest"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
##=======================================================
|
##=======================================================
|
||||||
## Files are now present on user's system.
|
## Files are now present on user's system.
|
||||||
## Begin Tripwire configuration.
|
## Begin Tripwire configuration.
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
SUBDIRS = cryptlib core db fco fs tw twcrypto twparser util
|
SUBDIRS = cryptlib core db fco fs tw twcrypto twparser util
|
||||||
SUBDIRS+= twprint twadmin siggen tripwire
|
SUBDIRS+= twprint twadmin siggen tripwire twtest
|
||||||
|
|
||||||
|
|
|
@ -160,7 +160,7 @@ target_alias = @target_alias@
|
||||||
target_cpu = @target_cpu@
|
target_cpu = @target_cpu@
|
||||||
target_os = @target_os@
|
target_os = @target_os@
|
||||||
target_vendor = @target_vendor@
|
target_vendor = @target_vendor@
|
||||||
SUBDIRS = cryptlib core db fco fs tw twcrypto twparser util twprint twadmin siggen tripwire
|
SUBDIRS = cryptlib core db fco fs tw twcrypto twparser util twprint twadmin siggen tripwire twtest
|
||||||
all: all-recursive
|
all: all-recursive
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
|
|
|
@ -5,7 +5,7 @@ INCLUDES = -I..
|
||||||
noinst_LIBRARIES = libcore.a
|
noinst_LIBRARIES = libcore.a
|
||||||
libcore_a_SOURCES = \
|
libcore_a_SOURCES = \
|
||||||
file_unix.cpp unixfsservices.cpp \
|
file_unix.cpp unixfsservices.cpp \
|
||||||
charutil_t.cpp displayencoder_t.cpp archive.cpp charutil.cpp \
|
archive.cpp charutil.cpp \
|
||||||
cmdlineparser.cpp codeconvert.cpp core.cpp coreerrors.cpp \
|
cmdlineparser.cpp codeconvert.cpp core.cpp coreerrors.cpp \
|
||||||
corestrings.cpp crc32.cpp debug.cpp displayencoder.cpp \
|
corestrings.cpp crc32.cpp debug.cpp displayencoder.cpp \
|
||||||
displayutil.cpp error.cpp errorbucketimpl.cpp errortable.cpp \
|
displayutil.cpp error.cpp errorbucketimpl.cpp errortable.cpp \
|
||||||
|
|
|
@ -52,7 +52,6 @@ AR = ar
|
||||||
ARFLAGS = cru
|
ARFLAGS = cru
|
||||||
libcore_a_AR = $(AR) $(ARFLAGS)
|
libcore_a_AR = $(AR) $(ARFLAGS)
|
||||||
am_libcore_a_OBJECTS = file_unix.$(OBJEXT) unixfsservices.$(OBJEXT) \
|
am_libcore_a_OBJECTS = file_unix.$(OBJEXT) unixfsservices.$(OBJEXT) \
|
||||||
charutil_t.$(OBJEXT) displayencoder_t.$(OBJEXT) \
|
|
||||||
archive.$(OBJEXT) charutil.$(OBJEXT) cmdlineparser.$(OBJEXT) \
|
archive.$(OBJEXT) charutil.$(OBJEXT) cmdlineparser.$(OBJEXT) \
|
||||||
codeconvert.$(OBJEXT) core.$(OBJEXT) coreerrors.$(OBJEXT) \
|
codeconvert.$(OBJEXT) core.$(OBJEXT) coreerrors.$(OBJEXT) \
|
||||||
corestrings.$(OBJEXT) crc32.$(OBJEXT) debug.$(OBJEXT) \
|
corestrings.$(OBJEXT) crc32.$(OBJEXT) debug.$(OBJEXT) \
|
||||||
|
@ -193,7 +192,7 @@ INCLUDES = -I..
|
||||||
noinst_LIBRARIES = libcore.a
|
noinst_LIBRARIES = libcore.a
|
||||||
libcore_a_SOURCES = \
|
libcore_a_SOURCES = \
|
||||||
file_unix.cpp unixfsservices.cpp \
|
file_unix.cpp unixfsservices.cpp \
|
||||||
charutil_t.cpp displayencoder_t.cpp archive.cpp charutil.cpp \
|
archive.cpp charutil.cpp \
|
||||||
cmdlineparser.cpp codeconvert.cpp core.cpp coreerrors.cpp \
|
cmdlineparser.cpp codeconvert.cpp core.cpp coreerrors.cpp \
|
||||||
corestrings.cpp crc32.cpp debug.cpp displayencoder.cpp \
|
corestrings.cpp crc32.cpp debug.cpp displayencoder.cpp \
|
||||||
displayutil.cpp error.cpp errorbucketimpl.cpp errortable.cpp \
|
displayutil.cpp error.cpp errorbucketimpl.cpp errortable.cpp \
|
||||||
|
|
|
@ -1,178 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
// cmdlineparser_t.cpp
|
|
||||||
|
|
||||||
#include "stdcore.h"
|
|
||||||
#include "cmdlineparser.h"
|
|
||||||
#include "test/test.h"
|
|
||||||
//#include "tw/twutil.h"
|
|
||||||
//#include "tw/twstrings.h"
|
|
||||||
|
|
||||||
const int argc1 = 9;
|
|
||||||
const TCHAR* argv1[] =
|
|
||||||
{
|
|
||||||
_T("tripwire.exe"),
|
|
||||||
_T("-m"),
|
|
||||||
_T("Init"),
|
|
||||||
_T("-tp"),
|
|
||||||
_T("one"),
|
|
||||||
_T("two"),
|
|
||||||
_T("--verbose"),
|
|
||||||
_T("frog"),
|
|
||||||
_T("cat")
|
|
||||||
};
|
|
||||||
|
|
||||||
const int argc2 = 3;
|
|
||||||
const TCHAR* argv2[] =
|
|
||||||
{
|
|
||||||
_T("tripwire.exe"),
|
|
||||||
_T("-m"),
|
|
||||||
_T("-v")
|
|
||||||
};
|
|
||||||
|
|
||||||
const int argc3 = 3;
|
|
||||||
const TCHAR* argv3[] =
|
|
||||||
{
|
|
||||||
_T("tripwire.exe"),
|
|
||||||
_T("dog"),
|
|
||||||
_T("-v"),
|
|
||||||
};
|
|
||||||
|
|
||||||
// test with the last param wanting 1 or 0 parameters :-)
|
|
||||||
const int argc4 = 5;
|
|
||||||
const TCHAR* argv4[] =
|
|
||||||
{
|
|
||||||
_T("tripwire.exe"),
|
|
||||||
_T("-tp"),
|
|
||||||
_T("-v"),
|
|
||||||
_T("frog"),
|
|
||||||
_T("cat")
|
|
||||||
};
|
|
||||||
|
|
||||||
const int argc5 = 4;
|
|
||||||
const TCHAR* argv5[] =
|
|
||||||
{
|
|
||||||
_T("tripwire.exe"),
|
|
||||||
_T("-tp"),
|
|
||||||
_T("-v"),
|
|
||||||
_T("frog")
|
|
||||||
};
|
|
||||||
|
|
||||||
static void PrintCmdLine(int argc, const TCHAR** argv, cDebug d)
|
|
||||||
{
|
|
||||||
TSTRING str;
|
|
||||||
d.TraceDebug("Testing command line:\n");
|
|
||||||
for(int i=0; i < argc; i++)
|
|
||||||
{
|
|
||||||
str += argv[i];
|
|
||||||
str += _T(" ");
|
|
||||||
}
|
|
||||||
d.TraceDebug(_T(">>>%s\n"), str.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void TestCmdLineParser()
|
|
||||||
{
|
|
||||||
enum ArgId { ID_M, ID_TP, ID_V, ID_UNNAMED };
|
|
||||||
|
|
||||||
try {
|
|
||||||
cCmdLineParser p;
|
|
||||||
p.AddArg(ID_M, TSTRING(_T("m")), TSTRING(_T("mode")), cCmdLineParser::PARAM_ONE);
|
|
||||||
p.AddArg(ID_TP, TSTRING(_T("tp")), TSTRING(_T("twoparam")), cCmdLineParser::PARAM_MANY);
|
|
||||||
p.AddArg(ID_V, TSTRING(_T("v")), TSTRING(_T("verbose")), cCmdLineParser::PARAM_NONE);
|
|
||||||
p.AddArg(ID_UNNAMED, TSTRING(_T("")), TSTRING(_T("")), cCmdLineParser::PARAM_MANY);
|
|
||||||
|
|
||||||
cDebug d("TestCmdLineParser");
|
|
||||||
|
|
||||||
PrintCmdLine(argc1, argv1, d);
|
|
||||||
p.Parse(argc1, argv1);
|
|
||||||
#ifdef _DEBUG
|
|
||||||
p.TraceContents();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
PrintCmdLine(argc2, argv2, d);
|
|
||||||
p.Parse(argc2, argv2); // should fail.
|
|
||||||
#ifdef _DEBUG
|
|
||||||
p.TraceContents();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
PrintCmdLine(argc3, argv3, d);
|
|
||||||
p.Parse(argc3, argv3); // should fail
|
|
||||||
#ifdef _DEBUG
|
|
||||||
p.TraceContents();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
PrintCmdLine(argc4, argv4, d);
|
|
||||||
p.Parse(argc4, argv4);
|
|
||||||
#ifdef _DEBUG
|
|
||||||
p.TraceContents();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
// TODO - test mutual exclusion...
|
|
||||||
|
|
||||||
cCmdLineParser::ErrorType et;
|
|
||||||
TSTRING errStr;
|
|
||||||
d.TraceDebug("** Making -m and -v mutually exclusive, then running on first cmd line...\n");
|
|
||||||
p.AddMutEx(ID_M, ID_V);
|
|
||||||
p.Parse(argc1, argv1); // should fail
|
|
||||||
p.GetErrorInfo(et, errStr);
|
|
||||||
TEST(et == cCmdLineParser::ERR_MUTUAL_EXCLUSION);
|
|
||||||
d.TraceDebug(_T("Mutual exclusion test worked; here is the error string: %s\n"), errStr.c_str());
|
|
||||||
*/
|
|
||||||
|
|
||||||
// make the command line want one parameter
|
|
||||||
d.TraceDebug("** Changing cmd line to only want one last param...\n");
|
|
||||||
p.AddArg(ID_UNNAMED, TSTRING(_T("")), TSTRING(_T("")), cCmdLineParser::PARAM_ONE);
|
|
||||||
PrintCmdLine(argc4, argv4, d);
|
|
||||||
p.Parse(argc4, argv4); // should fail
|
|
||||||
#ifdef _DEBUG
|
|
||||||
p.TraceContents();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
PrintCmdLine(argc5, argv5, d);
|
|
||||||
p.Parse(argc5, argv5);
|
|
||||||
#ifdef _DEBUG
|
|
||||||
p.TraceContents();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
// TODO -- test a bunch more!!!
|
|
||||||
}
|
|
||||||
catch (eCmdLine &e)
|
|
||||||
{
|
|
||||||
TCERR << _T("Command line error: ");
|
|
||||||
TCERR << e.GetMsg() << std::endl;
|
|
||||||
TEST(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,90 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
// debug_t -- debug component test driver
|
|
||||||
|
|
||||||
#include "stdcore.h"
|
|
||||||
#include "debug.h"
|
|
||||||
#include "test/test.h"
|
|
||||||
|
|
||||||
void TestDebug()
|
|
||||||
{
|
|
||||||
// it is amusing that we use cDebug to output the results of testing cDebug
|
|
||||||
// "Are you insane?" ... "No, I am not."
|
|
||||||
cDebug d("TestDebug()");
|
|
||||||
d.TraceDebug("Entering...");
|
|
||||||
|
|
||||||
// save the current debug level, since we will be altering it.
|
|
||||||
int oldDebugLevel = cDebug::GetDebugLevel();
|
|
||||||
|
|
||||||
// test debug level variation...
|
|
||||||
d.TraceDebug("Setting debug level to Debug(%d)\n", cDebug::D_DEBUG);
|
|
||||||
cDebug::SetDebugLevel(cDebug::D_DEBUG);
|
|
||||||
d.TraceDebug ("You should see this, as well as line 2 below, but not line 3.\n");
|
|
||||||
d.TraceWarning ("Line 2: Warning(%d)\n", cDebug::D_WARNING);
|
|
||||||
d.TraceDetail ("Line 3: Detail(%d)\n", cDebug::D_DETAIL);
|
|
||||||
d.TraceDebug ("Restoring the debug level to %d\n", oldDebugLevel);
|
|
||||||
cDebug::SetDebugLevel(oldDebugLevel);
|
|
||||||
|
|
||||||
// testing the output source
|
|
||||||
int oldOutTarget = 0;
|
|
||||||
if(cDebug::HasOutTarget(cDebug::OUT_STDOUT)) oldOutTarget |= cDebug::OUT_STDOUT;
|
|
||||||
if(cDebug::HasOutTarget(cDebug::OUT_TRACE)) oldOutTarget |= cDebug::OUT_TRACE;
|
|
||||||
if(cDebug::HasOutTarget(cDebug::OUT_FILE)) oldOutTarget |= cDebug::OUT_FILE;
|
|
||||||
cDebug::RemoveOutTarget(cDebug::OUT_STDOUT);
|
|
||||||
cDebug::RemoveOutTarget(cDebug::OUT_TRACE);
|
|
||||||
cDebug::RemoveOutTarget(cDebug::OUT_FILE);
|
|
||||||
|
|
||||||
d.TraceDebug("You should not see this (All out targets removed)\n");
|
|
||||||
cDebug::AddOutTarget(cDebug::OUT_STDOUT);
|
|
||||||
d.TraceDebug("You should see this in stdout only.\n");
|
|
||||||
cDebug::AddOutTarget(cDebug::OUT_TRACE);
|
|
||||||
d.TraceDebug("You should see this in stdout and trace.\n");
|
|
||||||
cDebug::RemoveOutTarget(cDebug::OUT_STDOUT);
|
|
||||||
d.TraceDebug("You should see this in trace only.\n");
|
|
||||||
// set up an output file...use the temp file in test.h
|
|
||||||
std::string str = TEMP_DIR_N;
|
|
||||||
str += "/debug.out";
|
|
||||||
bool bResult = false;
|
|
||||||
bResult = cDebug::SetOutputFile(str.c_str());
|
|
||||||
TEST(bResult);
|
|
||||||
d.TraceDebug("This should be in trace and the file %s.\n", str.c_str());
|
|
||||||
|
|
||||||
// restore the out source...
|
|
||||||
// TODO -- note that the original output file cannot be restored; this sucks!
|
|
||||||
if(oldOutTarget & cDebug::OUT_STDOUT) cDebug::AddOutTarget(cDebug::OUT_STDOUT); else cDebug::RemoveOutTarget(cDebug::OUT_STDOUT);
|
|
||||||
if(oldOutTarget & cDebug::OUT_TRACE) cDebug::AddOutTarget(cDebug::OUT_TRACE); else cDebug::RemoveOutTarget(cDebug::OUT_TRACE);
|
|
||||||
if(oldOutTarget & cDebug::OUT_FILE) cDebug::AddOutTarget(cDebug::OUT_FILE); else cDebug::RemoveOutTarget(cDebug::OUT_FILE);
|
|
||||||
|
|
||||||
d.TraceDebug("Exiting...\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -1,220 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
//hashtable_t.cpp : Test suite for cHashTable.
|
|
||||||
|
|
||||||
#include "stdcore.h"
|
|
||||||
#include "hashtable.h"
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
#ifndef __TEST_H
|
|
||||||
#include "test/test.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//#include "dummy.h"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
void HashTest1();
|
|
||||||
void HashTest2();
|
|
||||||
|
|
||||||
void TestHashTable(void)
|
|
||||||
{
|
|
||||||
HashTest1();
|
|
||||||
HashTest2();
|
|
||||||
}
|
|
||||||
|
|
||||||
void HashTest1()
|
|
||||||
{
|
|
||||||
//Test the Hash table with Key = TSTRING
|
|
||||||
|
|
||||||
cHashTable<TSTRING, void*> htable;
|
|
||||||
cDebug d("TestHashTable()::Test1");
|
|
||||||
d.TraceDetail("Entering ...\n");
|
|
||||||
|
|
||||||
//return val for all function calls.
|
|
||||||
bool ret = true;
|
|
||||||
|
|
||||||
//test data
|
|
||||||
TSTRING string = _T("test string");
|
|
||||||
TSTRING string2 = _T("another test string");
|
|
||||||
TSTRING string3 = _T("yet another test string");
|
|
||||||
void* data_ptr = NULL;
|
|
||||||
void* data_ptr2 = NULL;
|
|
||||||
void* data_ptr3 = NULL;
|
|
||||||
void* test_lookup = NULL;
|
|
||||||
|
|
||||||
int var = 32;
|
|
||||||
int var2 = 33;
|
|
||||||
int* test = &var;
|
|
||||||
int* test2 = &var2;
|
|
||||||
|
|
||||||
data_ptr = test;
|
|
||||||
data_ptr2 = test2;
|
|
||||||
|
|
||||||
//Test insert and lookup.
|
|
||||||
htable.Insert(string, data_ptr);
|
|
||||||
ret &= htable.Lookup(string, test_lookup);
|
|
||||||
TEST(ret);
|
|
||||||
|
|
||||||
//Make sure value is being stored and returned correctly
|
|
||||||
d.TraceDetail("Value returned from table is %i, and should be %i.\n", *((int*)test_lookup), var);
|
|
||||||
TEST(*((int*)test_lookup) == var);
|
|
||||||
|
|
||||||
//Check remove and lookup (lookup should fail)
|
|
||||||
ret &= htable.Remove(string);
|
|
||||||
TEST(ret);
|
|
||||||
ret &= !htable.Lookup(string, test_lookup);
|
|
||||||
TEST(ret);
|
|
||||||
//Has test_lookup's value changed? It shouldn't have...
|
|
||||||
TEST(*((int*)test_lookup) == var);
|
|
||||||
|
|
||||||
//Insert and Remove different string/key combo.
|
|
||||||
htable.Insert(string2, data_ptr2);
|
|
||||||
htable.Insert(string3, data_ptr3);
|
|
||||||
|
|
||||||
// test iteration
|
|
||||||
cHashTableIter<TSTRING, void*> iter(htable);
|
|
||||||
d.TraceDebug("Testing the iterator:\n");
|
|
||||||
for(iter.SeekBegin(); ! iter.Done(); iter.Next())
|
|
||||||
{
|
|
||||||
d.TraceDebug(_T("Key=%s\tValue=%d\n"), iter.Key().c_str(), iter.Val());
|
|
||||||
}
|
|
||||||
|
|
||||||
// get statistics
|
|
||||||
#ifdef _DEBUG
|
|
||||||
htable.TraceDiagnostics();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//Test IsEmpty()
|
|
||||||
ret &= !htable.IsEmpty();
|
|
||||||
TEST(!htable.IsEmpty());
|
|
||||||
|
|
||||||
//Test Clear(), IsEmpty()
|
|
||||||
ret &= htable.Clear();
|
|
||||||
TEST(htable.Clear());
|
|
||||||
ret &= htable.IsEmpty();
|
|
||||||
TEST(htable.IsEmpty());
|
|
||||||
/*
|
|
||||||
//Test the Hash table with arbitrary key
|
|
||||||
|
|
||||||
|
|
||||||
//Won't work with int!! (oops). I'll need to make one of our data types
|
|
||||||
// const TCHAR*() capable. Casting an int to a TCHAR* just returns an address,
|
|
||||||
// so there's no way to properly hash (no length, etc).
|
|
||||||
cHashTable<cDummy, void*> htable2;
|
|
||||||
cDummy key1, key2;
|
|
||||||
key1.SetInt(40);
|
|
||||||
key2.SetInt(50);
|
|
||||||
test_lookup = NULL;
|
|
||||||
|
|
||||||
//Test insert and lookup.
|
|
||||||
htable2.Insert(key1, data_ptr);
|
|
||||||
TEST(ret &= htable2.Lookup(key1, test_lookup));
|
|
||||||
|
|
||||||
//Make sure value is being stored and returned correctly
|
|
||||||
d.TraceDetail("Value returned from table is %i, and should be %i.\n", *((int*)test_lookup), var);
|
|
||||||
TEST(*((int*)test_lookup) == var);
|
|
||||||
|
|
||||||
//Check remove and lookup (lookup should fail)
|
|
||||||
TEST(ret &= htable2.Remove(key1));
|
|
||||||
TEST(ret &= !htable2.Lookup(key1, test_lookup));
|
|
||||||
//Has test_lookup's value changed? It shouldn't have...
|
|
||||||
TEST(*((int*)test_lookup) == var);
|
|
||||||
|
|
||||||
//Insert and different key/val combo.
|
|
||||||
htable2.Insert(key2, data_ptr2);
|
|
||||||
|
|
||||||
//Test IsEmpty()
|
|
||||||
ret &= !htable2.IsEmpty();
|
|
||||||
TEST(!htable2.IsEmpty());
|
|
||||||
|
|
||||||
//Test Clear(), IsEmpty()
|
|
||||||
ret &= htable2.Clear();
|
|
||||||
TEST(htable2.Clear());
|
|
||||||
ret &= htable2.IsEmpty();
|
|
||||||
TEST(htable2.IsEmpty());
|
|
||||||
|
|
||||||
*/
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
void HashTest2()
|
|
||||||
{
|
|
||||||
cDebug d("TestHashTable()::Test2");
|
|
||||||
d.TraceDebug("entering...\n");
|
|
||||||
|
|
||||||
{
|
|
||||||
cHashTable <TSTRING, TSTRING> tbl;
|
|
||||||
|
|
||||||
// test insert and lookup
|
|
||||||
TEST(tbl.Insert(_T("foo"), _T("foo")) == false);
|
|
||||||
|
|
||||||
TSTRING val;
|
|
||||||
TEST(tbl.Lookup(_T("foo"), val));
|
|
||||||
TEST(val.compare(_T("foo")) == 0);
|
|
||||||
|
|
||||||
// check Empty() on non-empty list
|
|
||||||
TEST(tbl.IsEmpty() == false);
|
|
||||||
|
|
||||||
// test insertion with collision
|
|
||||||
TEST(tbl.Insert(_T("foo"), _T("bar")) == true);
|
|
||||||
TEST(tbl.Lookup(_T("foo"), val));
|
|
||||||
TEST(val.compare(_T("bar")) == 0);
|
|
||||||
|
|
||||||
// test removal
|
|
||||||
TEST(tbl.Remove(_T("foo")));
|
|
||||||
|
|
||||||
// make sure it's totally empty (confirms that hash table insertion worked!)
|
|
||||||
TEST(tbl.IsEmpty());
|
|
||||||
|
|
||||||
// test another insertion
|
|
||||||
TEST(tbl.Insert(_T("a"), _T("bcd")) == false);
|
|
||||||
TEST(tbl.Insert(_T("b"), _T("def")) == false);
|
|
||||||
|
|
||||||
TSTRING v1, v2;
|
|
||||||
TEST(tbl.Lookup(_T("a"), v1));
|
|
||||||
TEST(tbl.Lookup(_T("b"), v2));
|
|
||||||
|
|
||||||
TEST(v1.compare(_T("bcd")) == 0);
|
|
||||||
TEST(v2.compare(_T("def")) == 0);
|
|
||||||
|
|
||||||
// remove and test IsEmpty()
|
|
||||||
TEST(tbl.Remove(_T("a")));
|
|
||||||
TEST(tbl.IsEmpty() == false);
|
|
||||||
|
|
||||||
TEST(tbl.Remove(_T("b")));
|
|
||||||
TEST(tbl.IsEmpty() == true);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
d.TraceDebug("PASSED!\n");
|
|
||||||
}
|
|
|
@ -76,6 +76,9 @@
|
||||||
* - byte-order is discovered at compile time. we use the information
|
* - byte-order is discovered at compile time. we use the information
|
||||||
* in "../../include/byteorder.h" to get this information.
|
* in "../../include/byteorder.h" to get this information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#pragma GCC diagnostic ignored "-Wparentheses"
|
||||||
|
|
||||||
#include "stdcore.h"
|
#include "stdcore.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
|
@ -167,7 +167,7 @@
|
||||||
* to add to it, just stick the new environment variables
|
* to add to it, just stick the new environment variables
|
||||||
* at the end of the array; the program does the rest automatically
|
* at the end of the array; the program does the rest automatically
|
||||||
*/
|
*/
|
||||||
char *nvfix[] = { /* these MUST be set or reset */
|
const char* nvfix[] = { /* these MUST be set or reset */
|
||||||
DEF_PATH, /* a safe path */
|
DEF_PATH, /* a safe path */
|
||||||
DEF_SHELL, /* a safe shell */
|
DEF_SHELL, /* a safe shell */
|
||||||
DEF_IFS, /* a safe IFS */
|
DEF_IFS, /* a safe IFS */
|
||||||
|
@ -239,7 +239,7 @@ char *getenv(); /* get variable from environment */
|
||||||
* (if space already allocated) increase the allocation by PTR_INC
|
* (if space already allocated) increase the allocation by PTR_INC
|
||||||
*/
|
*/
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
static char **c2alloc(char **old, int *sz_alloc)
|
static char **c2alloc(const char**old, int *sz_alloc)
|
||||||
#else
|
#else
|
||||||
static char **c2alloc(old, sz_alloc)
|
static char **c2alloc(old, sz_alloc)
|
||||||
char **old;
|
char **old;
|
||||||
|
@ -257,8 +257,8 @@ int *sz_alloc;
|
||||||
/* success! copy the old and free it, if appropriate */
|
/* success! copy the old and free it, if appropriate */
|
||||||
if (old != NULL){
|
if (old != NULL){
|
||||||
for(i = 0; i < *sz_alloc; i++)
|
for(i = 0; i < *sz_alloc; i++)
|
||||||
x.cpp[i] = old[i];
|
x.cpp[i] = (char*)old[i];
|
||||||
x.cpp = old;
|
x.cpp = (char**)old;
|
||||||
(void) free(x.vp);
|
(void) free(x.vp);
|
||||||
}
|
}
|
||||||
/* now have PTR_INC more room */
|
/* now have PTR_INC more room */
|
||||||
|
@ -310,7 +310,7 @@ void le_clobber()
|
||||||
*/
|
*/
|
||||||
if (envp != NULL){
|
if (envp != NULL){
|
||||||
/* it's defined -- is it fixed? */
|
/* it's defined -- is it fixed? */
|
||||||
if (envp != nvfix){
|
if (envp != (char**)nvfix){
|
||||||
/* no -- usual walk the list crud */
|
/* no -- usual walk the list crud */
|
||||||
for(i = 0; envp[i] != NULL; i++)
|
for(i = 0; envp[i] != NULL; i++)
|
||||||
(void) free(envp[i]);
|
(void) free(envp[i]);
|
||||||
|
@ -331,7 +331,7 @@ void le_clobber()
|
||||||
* get a pointer to the environment element
|
* get a pointer to the environment element
|
||||||
*/
|
*/
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
static int le_getenv(char *var)
|
static int le_getenv(const char* var)
|
||||||
#else
|
#else
|
||||||
static int le_getenv(var)
|
static int le_getenv(var)
|
||||||
char *var;
|
char *var;
|
||||||
|
@ -352,7 +352,7 @@ char *var;
|
||||||
for(i = 0; envp[i] != NULL; i++){
|
for(i = 0; envp[i] != NULL; i++){
|
||||||
/* compare */
|
/* compare */
|
||||||
p = envp[i];
|
p = envp[i];
|
||||||
q = var;
|
q = (char*)var;
|
||||||
while(*p && *q && *p == *q)
|
while(*p && *q && *p == *q)
|
||||||
p++, q++;
|
p++, q++;
|
||||||
/* have we a match? */
|
/* have we a match? */
|
||||||
|
@ -372,7 +372,7 @@ char *var;
|
||||||
* set an environment variable
|
* set an environment variable
|
||||||
*/
|
*/
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
int le_set(char *env)
|
int le_set(const char* env)
|
||||||
#else
|
#else
|
||||||
int le_set(env)
|
int le_set(env)
|
||||||
char *env;
|
char *env;
|
||||||
|
@ -385,7 +385,7 @@ char *env;
|
||||||
* seeif youneed to create the environment list
|
* seeif youneed to create the environment list
|
||||||
*/
|
*/
|
||||||
if (sz_envp == 0){
|
if (sz_envp == 0){
|
||||||
if ((envp = c2alloc(envp, &sz_envp)) == NULL){
|
if ((envp = c2alloc((const char**)envp, &sz_envp)) == NULL){
|
||||||
ERMSG("ran out of memory");
|
ERMSG("ran out of memory");
|
||||||
return(SE_NOMEM);
|
return(SE_NOMEM);
|
||||||
}
|
}
|
||||||
|
@ -428,7 +428,7 @@ char *env;
|
||||||
/*
|
/*
|
||||||
* if it isn't defined, see if you need to create the environment list
|
* if it isn't defined, see if you need to create the environment list
|
||||||
*/
|
*/
|
||||||
if (nend == sz_envp && (envp = c2alloc(envp, &sz_envp)) == NULL){
|
if (nend == sz_envp && (envp = c2alloc((const char**)envp, &sz_envp)) == NULL){
|
||||||
ERMSG("ran out of memory");
|
ERMSG("ran out of memory");
|
||||||
return(SE_NOMEM);
|
return(SE_NOMEM);
|
||||||
}
|
}
|
||||||
|
@ -457,7 +457,7 @@ char *env;
|
||||||
* clear a current environment variable
|
* clear a current environment variable
|
||||||
*/
|
*/
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
int le_unset(char *env)
|
int le_unset(const char* env)
|
||||||
#else
|
#else
|
||||||
int le_unset(env)
|
int le_unset(env)
|
||||||
char *env;
|
char *env;
|
||||||
|
@ -578,13 +578,13 @@ int gid;
|
||||||
* get the shell to use for the subcommand
|
* get the shell to use for the subcommand
|
||||||
*/
|
*/
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
static char *shellenv(void)
|
static const char *shellenv(void)
|
||||||
#else
|
#else
|
||||||
static char *shellenv()
|
static const char *shellenv()
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
register int i; /* counter in a for loop */
|
register int i; /* counter in a for loop */
|
||||||
register char *shptr; /* points to shell name */
|
register const char *shptr; /* points to shell name */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* error check; should never happen
|
* error check; should never happen
|
||||||
|
@ -612,15 +612,15 @@ static char *shellenv()
|
||||||
* like system but A LOT safer
|
* like system but A LOT safer
|
||||||
*/
|
*/
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
int msystem(char *cmd)
|
int msystem(const char* cmd)
|
||||||
#else
|
#else
|
||||||
int msystem(cmd)
|
int msystem(cmd)
|
||||||
char *cmd;
|
char *cmd;
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
char *argv[5]; /* argument list */
|
const char *argv[5]; /* argument list */
|
||||||
register char *p; /* temoporary pointers */
|
register const char *p; /* temoporary pointers */
|
||||||
register char *shptr; /* the program to be run */
|
register const char* shptr; /* the program to be run */
|
||||||
register int i; /* index number of child */
|
register int i; /* index number of child */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -645,7 +645,7 @@ char *cmd;
|
||||||
/*
|
/*
|
||||||
* run it
|
* run it
|
||||||
*/
|
*/
|
||||||
if ((i = schild(shptr, argv, envp, (FILE **) NULL, octmask)) < 0)
|
if ((i = schild(shptr, (const char**)argv, (const char**)envp, (FILE **) NULL, octmask)) < 0)
|
||||||
return(127);
|
return(127);
|
||||||
return(echild(i));
|
return(echild(i));
|
||||||
}
|
}
|
||||||
|
@ -664,16 +664,16 @@ static struct popenfunc { /* association of pid, file pointer */
|
||||||
* like popen but A LOT safer
|
* like popen but A LOT safer
|
||||||
*/
|
*/
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
FILE *mpopen(char *cmd, char *mode)
|
FILE *mpopen(const char* cmd, const char* mode)
|
||||||
#else
|
#else
|
||||||
FILE *mpopen(cmd, mode)
|
FILE *mpopen(cmd, mode)
|
||||||
char *cmd;
|
char *cmd;
|
||||||
char *mode;
|
char *mode;
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
char *argv[5]; /* argument list */
|
const char *argv[5]; /* argument list */
|
||||||
register char *p; /* temoporary pointers */
|
register const char *p; /* temoporary pointers */
|
||||||
register char *shptr; /* the program to be run */
|
register const char *shptr; /* the program to be run */
|
||||||
FILE *fpa[3]; /* process communication descriptors */
|
FILE *fpa[3]; /* process communication descriptors */
|
||||||
register int indx; /* index number of child */
|
register int indx; /* index number of child */
|
||||||
|
|
||||||
|
@ -706,7 +706,7 @@ char *mode;
|
||||||
/*
|
/*
|
||||||
* run it
|
* run it
|
||||||
*/
|
*/
|
||||||
if ((pfunc[indx].pid = schild(shptr, argv, envp, fpa, octmask)) < 0)
|
if ((pfunc[indx].pid = schild(shptr, (const char**)argv, (const char**)envp, fpa, octmask)) < 0)
|
||||||
return(NULL);
|
return(NULL);
|
||||||
return(pfunc[indx].fp = ((*mode == 'w') ? fpa[0] : fpa[1]));
|
return(pfunc[indx].fp = ((*mode == 'w') ? fpa[0] : fpa[1]));
|
||||||
}
|
}
|
||||||
|
@ -751,16 +751,16 @@ FILE *fp;
|
||||||
* (0, 1, 2)
|
* (0, 1, 2)
|
||||||
*/
|
*/
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
int mfpopen(char *cmd, FILE *fpa[])
|
int mfpopen(const char* cmd, FILE *fpa[])
|
||||||
#else
|
#else
|
||||||
int mfpopen(cmd, fpa)
|
int mfpopen(cmd, fpa)
|
||||||
char *cmd;
|
char *cmd;
|
||||||
FILE *fpa[];
|
FILE *fpa[];
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
char *argv[5]; /* argument list */
|
const char *argv[5]; /* argument list */
|
||||||
register char *p; /* temoporary pointers */
|
register const char *p; /* temoporary pointers */
|
||||||
register char *shptr; /* the program to be run */
|
register const char *shptr; /* the program to be run */
|
||||||
register int indx; /* index number of child */
|
register int indx; /* index number of child */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -788,7 +788,7 @@ FILE *fpa[];
|
||||||
/*
|
/*
|
||||||
* run it
|
* run it
|
||||||
*/
|
*/
|
||||||
if ((pfunc[indx].pid = schild(shptr, argv, envp, fpa, octmask)) < 0)
|
if ((pfunc[indx].pid = schild(shptr, (const char**)argv, (const char**)envp, fpa, octmask)) < 0)
|
||||||
return(-1);
|
return(-1);
|
||||||
return(indx);
|
return(indx);
|
||||||
}
|
}
|
||||||
|
@ -831,7 +831,7 @@ FILE *fp[];
|
||||||
* uses arg vector, not command, and file descriptors 0, 1, 2
|
* uses arg vector, not command, and file descriptors 0, 1, 2
|
||||||
*/
|
*/
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
int mxfpopen(char *argv[], FILE *fpa[])
|
int mxfpopen(const char* argv[], FILE *fpa[])
|
||||||
#else
|
#else
|
||||||
int mxfpopen(argv, fpa)
|
int mxfpopen(argv, fpa)
|
||||||
char *argv[];
|
char *argv[];
|
||||||
|
@ -852,7 +852,7 @@ FILE *fpa[];
|
||||||
/*
|
/*
|
||||||
* run it
|
* run it
|
||||||
*/
|
*/
|
||||||
if ((pfunc[indx].pid = schild(argv[0], argv, envp, fpa, octmask)) < 0)
|
if ((pfunc[indx].pid = schild(argv[0], argv, (const char**)envp, fpa, octmask)) < 0)
|
||||||
return(-1);
|
return(-1);
|
||||||
return(indx);
|
return(indx);
|
||||||
}
|
}
|
||||||
|
@ -887,7 +887,7 @@ static tw_sighandler_t savesig[MAX_SIGNAL];
|
||||||
* to omask
|
* to omask
|
||||||
*/
|
*/
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
int schild(char *cmd, char **argp, char **envptr, FILE *fp[], int mask)
|
int schild(const char* cmd, const char** argp, const char** envptr, FILE *fp[], int mask)
|
||||||
#else
|
#else
|
||||||
int schild(cmd, argp, envptr, fp, mask)
|
int schild(cmd, argp, envptr, fp, mask)
|
||||||
char *cmd;
|
char *cmd;
|
||||||
|
@ -954,14 +954,15 @@ int mask;
|
||||||
(void) close(p[2][1]);
|
(void) close(p[2][1]);
|
||||||
}
|
}
|
||||||
/* exec the command and environment */
|
/* exec the command and environment */
|
||||||
(void) execve(cmd, argp, envptr);
|
(void) execve(cmd, (char* const*)argp, (char* const*)envptr);
|
||||||
/* should never happen ... */
|
/* should never happen ... */
|
||||||
_exit(EXIT_BAD);
|
_exit(EXIT_BAD);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* parent process: if couldn't create child, error
|
* parent process: if couldn't create child, error
|
||||||
*/
|
*/
|
||||||
if (ch_pid != -1){
|
if (ch_pid != -1)
|
||||||
|
{
|
||||||
/*
|
/*
|
||||||
* ignore any signals until child dies
|
* ignore any signals until child dies
|
||||||
*/
|
*/
|
||||||
|
@ -981,15 +982,18 @@ int mask;
|
||||||
/*
|
/*
|
||||||
* use a stdio interface for uniformity
|
* use a stdio interface for uniformity
|
||||||
*/
|
*/
|
||||||
if (fp != NULL){
|
if (fp != NULL)
|
||||||
|
{
|
||||||
if (fp[0] != NULL)
|
if (fp[0] != NULL)
|
||||||
fp[0] = fdopen(p[0][1], "w");
|
fp[0] = fdopen(p[0][1], "w");
|
||||||
else
|
else
|
||||||
(void) close(p[0][1]);
|
(void) close(p[0][1]);
|
||||||
|
|
||||||
if (fp[1] != NULL)
|
if (fp[1] != NULL)
|
||||||
fp[1] = fdopen(p[1][0], "r");
|
fp[1] = fdopen(p[1][0], "r");
|
||||||
else
|
else
|
||||||
(void) close(p[1][0]);
|
(void) close(p[1][0]);
|
||||||
|
|
||||||
if (fp[2] != NULL)
|
if (fp[2] != NULL)
|
||||||
fp[2] = fdopen(p[2][0], "r");
|
fp[2] = fdopen(p[2][0], "r");
|
||||||
else
|
else
|
||||||
|
|
|
@ -56,21 +56,21 @@
|
||||||
*/
|
*/
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
void le_clobber(void);
|
void le_clobber(void);
|
||||||
int le_set(char *);
|
int le_set(const char*);
|
||||||
int le_unset(char *);
|
int le_unset(const char*);
|
||||||
int le_umask(int);
|
int le_umask(int);
|
||||||
int le_openfd(int);
|
int le_openfd(int);
|
||||||
int le_closefd(int);
|
int le_closefd(int);
|
||||||
int le_euid(int);
|
int le_euid(int);
|
||||||
int le_egid(int);
|
int le_egid(int);
|
||||||
int msystem(char *);
|
int msystem(const char*);
|
||||||
FILE *mpopen(char *, char *);
|
FILE *mpopen(const char*, const char*);
|
||||||
int mpclose(FILE *);
|
int mpclose(FILE *);
|
||||||
int mfpopen(char *, FILE *[]);
|
int mfpopen(const char*, FILE *[]);
|
||||||
int mfpclose(int, FILE *[]);
|
int mfpclose(int, FILE *[]);
|
||||||
int mxfpopen(char *[], FILE *[]);
|
int mxfpopen(const char*[], FILE *[]);
|
||||||
int mxfpclose(int, FILE *[]);
|
int mxfpclose(int, FILE *[]);
|
||||||
int schild(char *, char *[], char *[], FILE *[], int);
|
int schild(const char*, const char*[], const char*[], FILE *[], int);
|
||||||
int echild(int);
|
int echild(int);
|
||||||
#else
|
#else
|
||||||
void le_clobber();
|
void le_clobber();
|
||||||
|
|
|
@ -1,109 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
// objectpool_t
|
|
||||||
|
|
||||||
#include "stdcore.h"
|
|
||||||
#include "objectpool.h"
|
|
||||||
#include "debug.h"
|
|
||||||
#include "test/test.h"
|
|
||||||
|
|
||||||
|
|
||||||
// this is the struct we will use for testing purposes
|
|
||||||
struct cDog
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
char c;
|
|
||||||
double d;
|
|
||||||
cDog() : i(53), c('f'), d(3.14) { cDebug d("cDog::cDog"); d.TraceDebug("Dog ctor...\n"); }
|
|
||||||
~cDog() { cDebug d("cDog::~cDog"); d.TraceDebug("Dog dtor...\n"); }
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
void TestObjectPool()
|
|
||||||
{
|
|
||||||
int k, j;
|
|
||||||
cDebug d("TestObjectPool");
|
|
||||||
|
|
||||||
// first, just try the growing properties of the pool
|
|
||||||
cObjectPoolBase pool(10, 5);
|
|
||||||
d.TraceDebug("object size = 10, chunk size = 5\n");
|
|
||||||
for(k=0; k < 12; k++)
|
|
||||||
{
|
|
||||||
d.TraceDebug("Allocating...\n");
|
|
||||||
pool.Alloc();
|
|
||||||
}
|
|
||||||
d.TraceDebug("Removing everything...\n");
|
|
||||||
pool.Clear();
|
|
||||||
|
|
||||||
// test the template class
|
|
||||||
cObjectPool<cDog> dogPool(3);
|
|
||||||
std::list<cDog*> lDog;
|
|
||||||
for(j=0; j < 7; j++)
|
|
||||||
{
|
|
||||||
lDog.push_back(dogPool.New());
|
|
||||||
}
|
|
||||||
|
|
||||||
std::list<cDog*>::iterator i;
|
|
||||||
for( i = lDog.begin(); i != lDog.end(); i++)
|
|
||||||
{
|
|
||||||
d.TraceDebug("dog contents: %d %c %lf\n", (*i)->i, (*i)->c, (*i)->d);
|
|
||||||
dogPool.Delete(*i);
|
|
||||||
}
|
|
||||||
lDog.clear();
|
|
||||||
|
|
||||||
// now, do some random insertions and deletions...
|
|
||||||
std::vector<void*> vAlloced;
|
|
||||||
for(k=0; k < 1000; k++)
|
|
||||||
{
|
|
||||||
if(rand() % 3 > 0 )
|
|
||||||
{
|
|
||||||
// alloc
|
|
||||||
void* pNew = pool.Alloc();
|
|
||||||
d.TraceDebug("Allocating %p\n", pNew);
|
|
||||||
vAlloced.push_back(pNew);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// free
|
|
||||||
int idx = rand() % vAlloced.size();
|
|
||||||
std::vector<void*>::iterator vi = vAlloced.begin() + idx;
|
|
||||||
void* pGone = *vi;
|
|
||||||
d.TraceDebug("Removing %p\n", pGone);
|
|
||||||
pool.Free(pGone);
|
|
||||||
vAlloced.erase(vi);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
d.TraceDebug("Leaving...\n");
|
|
||||||
}
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ int cSerRefCountTable::Lookup(const iSerRefCountObj* pObj)
|
||||||
// pay no attention to this cast :-)
|
// pay no attention to this cast :-)
|
||||||
itr = mObjToIdTbl.find(const_cast<iSerRefCountObj*>(pObj));
|
itr = mObjToIdTbl.find(const_cast<iSerRefCountObj*>(pObj));
|
||||||
|
|
||||||
return itr == mObjToIdTbl.end() ? NULL : itr->second;
|
return (itr == mObjToIdTbl.end()) ? 0 : itr->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
// find object for specified id. returns NULL if not in table
|
// find object for specified id. returns NULL if not in table
|
||||||
|
|
|
@ -1,133 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
#include "stdcore.h"
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
|
|
||||||
#ifndef __DEBUG_H
|
|
||||||
#include "debug.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TSTRING test_wost(int, const TSTRING&);
|
|
||||||
void test_wist(const TSTRING&, cDebug& d);
|
|
||||||
|
|
||||||
void TestTCHAR()
|
|
||||||
{
|
|
||||||
cDebug d("TestTCHAR()");
|
|
||||||
|
|
||||||
d.TraceDetail("Entering...\n");
|
|
||||||
|
|
||||||
//Testing TCOUT:
|
|
||||||
TCOUT<< _T("Simple test of TSTRING (and TCOUT) :\n\n");
|
|
||||||
TCERR<< _T("This should show up on cerr");
|
|
||||||
|
|
||||||
TSTRING pString;
|
|
||||||
pString = _T("Hi Mom!");
|
|
||||||
|
|
||||||
d.TraceDetail("%s \n", pString.c_str() );
|
|
||||||
d.TraceDetail("Isn't this cool?\n\n");
|
|
||||||
|
|
||||||
//Begin fun tests of string streams:
|
|
||||||
|
|
||||||
TSTRINGSTREAM wst;
|
|
||||||
//can I declare it?
|
|
||||||
|
|
||||||
TSTRING str;
|
|
||||||
str = _T("Kiteman");
|
|
||||||
TSTRING test1 = _T("word");
|
|
||||||
|
|
||||||
d.TraceDetail("Testing TOSTRINGSTREAM with TSTRING:\n");
|
|
||||||
TOSTRINGSTREAM ost(_T("test up"));
|
|
||||||
ost<<test1;
|
|
||||||
d.TraceDetail("%s \n", ost.str() );
|
|
||||||
//if this gives output, then I'm really baffled...
|
|
||||||
//test gets overwritten, yielding "word up"
|
|
||||||
|
|
||||||
TSTRING output;
|
|
||||||
output = test_wost(3, str);
|
|
||||||
d.TraceDetail("%s \n", output.c_str());
|
|
||||||
//A true statement!
|
|
||||||
|
|
||||||
d.TraceDetail("Testing TISTRINGSTREAM with TSTRING:\n");
|
|
||||||
TSTRING send = _T("These should appear on seperate lines");
|
|
||||||
test_wist(send, d);
|
|
||||||
//Did they?
|
|
||||||
|
|
||||||
//Testing file streams
|
|
||||||
|
|
||||||
//explict constructors of 'TIFSTREAM' and "TOFSTREAM' take char*
|
|
||||||
const char* inputfile = "fun";
|
|
||||||
const char* outputfile = "mo'fun";
|
|
||||||
|
|
||||||
//Set up the input file.
|
|
||||||
TOFSTREAM out;
|
|
||||||
out.open(inputfile, std::ios_base::out);
|
|
||||||
out<<"Unicode is fun\n";
|
|
||||||
out.close();
|
|
||||||
|
|
||||||
TIFSTREAM from;
|
|
||||||
from.open(inputfile, std::ios_base::in);
|
|
||||||
if(!from)
|
|
||||||
d.TraceDetail("error opening input file\n");
|
|
||||||
|
|
||||||
TOFSTREAM to(outputfile, std::ios_base::trunc);
|
|
||||||
if(!to)
|
|
||||||
d.TraceDetail("error opening output file\n");
|
|
||||||
|
|
||||||
//Copy contents of input file to output file.
|
|
||||||
TCHAR ch;
|
|
||||||
while(from.get(ch))
|
|
||||||
to.put(ch);
|
|
||||||
if(!from.eof() || !to)
|
|
||||||
d.TraceDetail("something has gone terribly wrong...\n");
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
TSTRING test_wost(int n, const TSTRING& inject)
|
|
||||||
{
|
|
||||||
TOSTRINGSTREAM wost(_T("Weird how this doesn't show up! "));
|
|
||||||
//It's getting overwritten, why?
|
|
||||||
wost<<_T("One out of every ")<<n<<_T(" children loves ")<<inject<<_T("!\n");
|
|
||||||
return wost.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
void test_wist(const TSTRING& input, cDebug& d)
|
|
||||||
{
|
|
||||||
TISTRINGSTREAM wist(input);
|
|
||||||
TSTRING parse;
|
|
||||||
while(wist>>parse)
|
|
||||||
d.TraceDetail("%s \n", parse.c_str() );
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,208 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
// unixfsservices_t.cpp: Tests cUnixFSServices
|
|
||||||
|
|
||||||
//#include <fcntl.h>
|
|
||||||
#include "core/stdcore.h"
|
|
||||||
#include "unixfsservices.h"
|
|
||||||
#include <iostream>
|
|
||||||
#include "core/archive.h"
|
|
||||||
#include "fco/fconame.h"
|
|
||||||
|
|
||||||
#if IS_UNIX
|
|
||||||
|
|
||||||
#ifndef __TEST_H
|
|
||||||
#include "test/test.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
//Tests the functions that are currently implemented in win32fsservices.
|
|
||||||
void TestUnixFSServices()
|
|
||||||
{
|
|
||||||
cDebug d("TestUnixFSServices");
|
|
||||||
// d.RemoveOutTarget(cDebug::OUT_STDOUT);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
iFSServices* pFSServices = iFSServices::GetInstance();
|
|
||||||
|
|
||||||
// working primarily with the temp dir.
|
|
||||||
cFCOName name(_T("/tmp")); // dies here
|
|
||||||
|
|
||||||
// Check to make sure /tmp is a dir
|
|
||||||
//TEST(pFSServices->GetFileType(name) == cFSStatArgs::TY_DIR);
|
|
||||||
|
|
||||||
// get directory contents (test readdir)
|
|
||||||
std::vector <TSTRING> v;
|
|
||||||
pFSServices->ReadDir(name.AsString(), v);
|
|
||||||
|
|
||||||
{
|
|
||||||
d.TraceDebug("name: %d entries\n", v.size());
|
|
||||||
|
|
||||||
std::vector <TSTRING>::iterator p;
|
|
||||||
int n = 0;
|
|
||||||
for (p = v.begin(); p != v.end(); p++) {
|
|
||||||
d.TraceDetail(" %s\n", p->c_str());
|
|
||||||
n++;
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(n == v.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
//Test the Stat method
|
|
||||||
cFSStatArgs stat;
|
|
||||||
|
|
||||||
//TO DO: use archive to create this file
|
|
||||||
TSTRING testfile = "/tmp/tmp.tmp";
|
|
||||||
cFileArchive filearch;
|
|
||||||
filearch.OpenReadWrite(testfile.c_str());
|
|
||||||
filearch.Seek(0, cBidirArchive::BEGINNING);
|
|
||||||
filearch.WriteString(_T("This is a test"));
|
|
||||||
filearch.Close();
|
|
||||||
|
|
||||||
pFSServices->Stat(testfile, stat);
|
|
||||||
|
|
||||||
//print out the information returned by Stat
|
|
||||||
d.TraceDetail("Information returned by Stat: \n");
|
|
||||||
d.TraceDetail("Group ID : %-5d \n", stat.gid);
|
|
||||||
//d.TraceDetail("Last access time: %d \n", stat.atime);
|
|
||||||
d.TraceDetail("Last inode change: %d \n", stat.ctime);
|
|
||||||
d.TraceDetail("Last modified: %d \n", stat.mtime);
|
|
||||||
d.TraceDetail("Major/minor device nums: %d \n", stat.dev);
|
|
||||||
d.TraceDetail("Inode # of file : %d \n", stat.ino);
|
|
||||||
d.TraceDetail("Mode bits: %d \n", stat.mode);
|
|
||||||
d.TraceDetail("Num links: %d \n", stat.nlink);
|
|
||||||
d.TraceDetail("Major/minor dev if special: %d \n", stat.rdev);
|
|
||||||
d.TraceDetail("File size: %d \n", stat.size);
|
|
||||||
d.TraceDetail("User ID: %d \n", stat.uid);
|
|
||||||
|
|
||||||
//Test GetCurrentDir:
|
|
||||||
TSTRING currpath;
|
|
||||||
pFSServices->GetCurrentDir(currpath);
|
|
||||||
d.TraceDetail("GetCurrentDir returned %s\n", currpath.c_str());
|
|
||||||
//TEST(currpath == _T("~"));
|
|
||||||
//they should both be ~!!
|
|
||||||
|
|
||||||
//Test MakeTempFilename
|
|
||||||
TSTRING _template(_T("twtempXXXXXX"));
|
|
||||||
pFSServices->MakeTempFilename(_template);
|
|
||||||
d.TraceDetail("Testing MakeTempFilename: \n");
|
|
||||||
d.TraceDetail("%s \n", _template.c_str() );
|
|
||||||
|
|
||||||
//Test ChangeDir
|
|
||||||
d.TraceDetail("Testing ChangeDir: (should be /usr)\n");
|
|
||||||
TSTRING newdir(_T("/usr"));
|
|
||||||
pFSServices->ChangeDir(newdir);
|
|
||||||
pFSServices->GetCurrentDir(currpath);
|
|
||||||
d.TraceDetail("%s \n", currpath.c_str() );
|
|
||||||
//Did we get there??
|
|
||||||
|
|
||||||
//Test Mkdir:
|
|
||||||
d.TraceDetail("Testing Mkdir: \n");
|
|
||||||
TSTRING makedir(_T("/tmp/tw_mkdir"));
|
|
||||||
pFSServices->Mkdir(makedir); // throws on error
|
|
||||||
|
|
||||||
//Test Rmdir
|
|
||||||
d.TraceDetail("Testing Rmdir:\n");
|
|
||||||
TEST( pFSServices->Rmdir(makedir) );
|
|
||||||
|
|
||||||
// Test GetMachineName
|
|
||||||
d.TraceDetail("Testing GetMachineName:\n");
|
|
||||||
TSTRING uname;
|
|
||||||
pFSServices->GetMachineName(uname);
|
|
||||||
d.TraceDetail("GetMachineName returned: %s\n", uname.c_str());
|
|
||||||
|
|
||||||
// Test GetHostID
|
|
||||||
d.TraceDetail("Testing GetHostID:\n");
|
|
||||||
TSTRING hostid;
|
|
||||||
pFSServices->GetHostID(hostid);
|
|
||||||
d.TraceDetail("GetHostID returned: %s\n", hostid.c_str());
|
|
||||||
|
|
||||||
// Test GetCurrentUserName
|
|
||||||
d.TraceDetail("Testing GetCurrentUserName:\n");
|
|
||||||
TSTRING username;
|
|
||||||
TEST( pFSServices->GetCurrentUserName(username) );
|
|
||||||
d.TraceDetail("GetCurrentUserName returned: %s\n", username.c_str());
|
|
||||||
|
|
||||||
// Test GetIPAddress
|
|
||||||
d.TraceDetail("Testing GetIPAddress:\n");
|
|
||||||
uint32 *ipaddr;
|
|
||||||
TEST( pFSServices->GetIPAddress( *ipaddr ) );
|
|
||||||
d.TraceDetail("GetIPAddress returned: %d\n", ipaddr);
|
|
||||||
|
|
||||||
// test GetExecutableFilename
|
|
||||||
d.TraceDetail("Testing GetExecutableFilename: \n");
|
|
||||||
TSTRING filename = _T("sh");
|
|
||||||
TSTRING fullpath = _T("/bin/");
|
|
||||||
TEST(pFSServices->GetExecutableFilename(fullpath, filename));
|
|
||||||
filename = _T("/bin/sh");
|
|
||||||
TEST(pFSServices->GetExecutableFilename(fullpath, filename));
|
|
||||||
|
|
||||||
// test Rename
|
|
||||||
d.TraceDetail("Testing Rename:\n");
|
|
||||||
TSTRING newtestfile = _T("/tmp/new.tmp");
|
|
||||||
TEST( pFSServices->Rename( testfile, newtestfile ) );
|
|
||||||
|
|
||||||
// test GetOwnerForFile
|
|
||||||
d.TraceDetail("Testing GetOwnerForFile:\n");
|
|
||||||
TSTRING ownername;
|
|
||||||
TEST( pFSServices->GetOwnerForFile( newtestfile, ownername ) );
|
|
||||||
d.TraceDetail("GetOwnerForFile returned owner %s.\n", ownername.c_str());
|
|
||||||
|
|
||||||
// test GetGroupForFile
|
|
||||||
d.TraceDetail("Testing GetGroupForFile:\n");
|
|
||||||
TSTRING groupname;
|
|
||||||
TEST( pFSServices->GetGroupForFile( newtestfile, groupname ) );
|
|
||||||
d.TraceDetail("GetGroupForFile returned group %s.\n", groupname.c_str());
|
|
||||||
|
|
||||||
// test FileDelete
|
|
||||||
d.TraceDetail("Testing FileDelete:\n");
|
|
||||||
TEST( pFSServices->FileDelete( newtestfile ) );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}//end try block
|
|
||||||
catch (eError& e)
|
|
||||||
{
|
|
||||||
d.TraceError("Exception caught: %s\n", e.GetMsg());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif // IS_UNIX
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -83,8 +83,8 @@ void SHA::Final(byte *hash)
|
||||||
for this information */
|
for this information */
|
||||||
|
|
||||||
#ifdef NEW_SHA
|
#ifdef NEW_SHA
|
||||||
#define expand(W,i) ( W[ i & 15 ] = rotl( (W[i&15] ^ W[i-14&15] ^ \
|
#define expand(W,i) ( W[ i & 15 ] = rotl( (W[i&15] ^ W[(i-14)&15] ^ \
|
||||||
W[i-8&15] ^ W[i-3&15]), 1U) )
|
W[(i-8)&15] ^ W[(i-3)&15]), 1U) )
|
||||||
#else
|
#else
|
||||||
#define expand(W,i) ( W[ i & 15 ] ^= W[ i - 14 & 15 ] ^ W[ i - 8 & 15 ] ^ W[ i - 3 & 15 ] )
|
#define expand(W,i) ( W[ i & 15 ] ^= W[ i - 14 & 15 ] ^ W[ i - 8 & 15 ] ^ W[ i - 3 & 15 ] )
|
||||||
#endif /* NEW_SHA */
|
#endif /* NEW_SHA */
|
||||||
|
|
|
@ -1,157 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
// fcocompare_t.cpp -- the compare object's test driver
|
|
||||||
#include "stdfco.h"
|
|
||||||
#include "fcocompare.h"
|
|
||||||
#include "core/debug.h"
|
|
||||||
#include "fs/fsobject.h"
|
|
||||||
#include "fs/fspropcalc.h"
|
|
||||||
#include "test/test.h"
|
|
||||||
|
|
||||||
#include <fstream>
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
// PrintProps -- prints out all the valid property names and values as pairs...
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
/*
|
|
||||||
static void PrintProps(const iFCO* pFCO)
|
|
||||||
{
|
|
||||||
cDebug d("PrintProps");
|
|
||||||
const iFCOPropSet* pSet = pFCO->GetPropSet();
|
|
||||||
const cFCOPropVector& v = pSet->GetValidVector();
|
|
||||||
|
|
||||||
for(int i=0; i<pSet->GetNumProps(); i++)
|
|
||||||
{
|
|
||||||
if(v.ContainsItem(i))
|
|
||||||
{
|
|
||||||
d.TraceDebug(_T("[%d] %s\t%s\n"), i, pSet->GetPropName(i).c_str(), pSet->GetPropAt(i)->AsString().c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
void TestFCOCompare()
|
|
||||||
{
|
|
||||||
#pragma message( __FILE__ "(1) : TODO - implement this test file")
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
const TCHAR* FILE_NAME = TEMP_DIR _T("/dog.txt");
|
|
||||||
const char* FILE_NAME_N = TEMP_DIR_N "/dog.txt";
|
|
||||||
|
|
||||||
cDebug d("TestFCOCompare");
|
|
||||||
d.TraceDebug("Entering...\n");
|
|
||||||
|
|
||||||
// first, create an fco to compare with...
|
|
||||||
|
|
||||||
TOFSTREAM fstr(FILE_NAME_N);
|
|
||||||
if(fstr.bad())
|
|
||||||
{
|
|
||||||
d.TraceError("Unable to create test file %s!\n", FILE_NAME);
|
|
||||||
TEST(false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
fstr << "Bark! Bark! Bark!" << std::endl;
|
|
||||||
fstr.close();
|
|
||||||
|
|
||||||
// create the test FCO
|
|
||||||
cFSDataSource ds;
|
|
||||||
iFCO* pFCO = ds.CreateFCO(cFCOName(FILE_NAME), 0);
|
|
||||||
TEST(pFCO);
|
|
||||||
|
|
||||||
// measure a couple of properties, some of which will change...
|
|
||||||
cFSPropCalc propCalc;
|
|
||||||
cFCOPropVector v(pFCO->GetPropSet()->GetValidVector().GetSize());
|
|
||||||
v.AddItem(cFSPropSet::PROP_DEV);
|
|
||||||
v.AddItem(cFSPropSet::PROP_CTIME);
|
|
||||||
v.AddItem(cFSPropSet::PROP_SIZE);
|
|
||||||
v.AddItem(cFSPropSet::PROP_MTIME);
|
|
||||||
v.AddItem(cFSPropSet::PROP_FILETYPE);
|
|
||||||
v.AddItem(cFSPropSet::PROP_GROWING_FILE);
|
|
||||||
propCalc.SetPropVector(v);
|
|
||||||
pFCO->AcceptVisitor(&propCalc);
|
|
||||||
d.TraceDebug("First FCO's properties:\n");
|
|
||||||
PrintProps(pFCO);
|
|
||||||
|
|
||||||
// first, try comparing it to itself...
|
|
||||||
cFCOCompare comp;
|
|
||||||
cFCOCompare::CompareResult result;
|
|
||||||
comp.SetPropsToCmp(v);
|
|
||||||
comp.Compare(pFCO, pFCO, result);
|
|
||||||
d.TraceDebug("Compare to itself is (expect true) %s\n", result.mResult == cFCOCompare::EQUAL? "true" : "false");
|
|
||||||
TEST(result.mResult == cFCOCompare::EQUAL);
|
|
||||||
|
|
||||||
// change the file...
|
|
||||||
d.TraceDebug("Changing the file...\n");
|
|
||||||
fstr.open(FILE_NAME_N);
|
|
||||||
if(fstr.bad())
|
|
||||||
{
|
|
||||||
d.TraceError("Unable to reopen %s!\n", FILE_NAME_N);
|
|
||||||
TEST(false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
fstr << "Meow! Meow! Meow! Meow!" << std::endl;
|
|
||||||
fstr.close();
|
|
||||||
|
|
||||||
iFCO* pFCO2 = ds.CreateFCO(cFCOName(FILE_NAME), 0);
|
|
||||||
ASSERT(pFCO2);
|
|
||||||
pFCO2->AcceptVisitor(&propCalc);
|
|
||||||
d.TraceDebug("Second FCO's properties:\n");
|
|
||||||
PrintProps(pFCO2);
|
|
||||||
|
|
||||||
comp.Compare(pFCO, pFCO2, result);
|
|
||||||
d.TraceDebug("Compare to new object is (expect false) %s\n", result.mResult == cFCOCompare::EQUAL? "true" : "false");
|
|
||||||
TEST(result.mResult == cFCOCompare::UNEQUAL);
|
|
||||||
d.TraceDebug("Properties that differ are:\n");
|
|
||||||
result.mPropVector.TraceContents();
|
|
||||||
|
|
||||||
// try testing properties that weren't calculated...
|
|
||||||
d.TraceDebug("Comparing FCOs with different properties calculated\n");
|
|
||||||
iFCO* pFCO3 = ds.CreateFCO(cFCOName(FILE_NAME), 0);
|
|
||||||
v = propCalc.GetPropVector();
|
|
||||||
v.AddItem(cFSPropSet::PROP_MD5);
|
|
||||||
propCalc.SetPropVector(v);
|
|
||||||
pFCO3->AcceptVisitor(&propCalc);
|
|
||||||
// do the compare
|
|
||||||
comp.SetPropsToCmp(v);
|
|
||||||
comp.Compare(pFCO2, pFCO3, result);
|
|
||||||
TEST(result.mResult == cFCOCompare::PROPS_NOT_ALL_VALID);
|
|
||||||
d.TraceDebug("Properties not valid are (should be %d):\n", cFSPropSet::PROP_MD5);
|
|
||||||
result.mPropVector.TraceContents();
|
|
||||||
|
|
||||||
// release the fcos
|
|
||||||
pFCO3->Release();
|
|
||||||
pFCO2->Release();
|
|
||||||
pFCO->Release();
|
|
||||||
#endif
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -216,7 +216,9 @@ void cFCONameTbl::Clear()
|
||||||
cHashTableIter<const TCHAR*, cFCONameTblNode*, cCharCmp> iter(mTable);
|
cHashTableIter<const TCHAR*, cFCONameTblNode*, cCharCmp> iter(mTable);
|
||||||
for(iter.SeekBegin(); ! iter.Done(); iter.Next())
|
for(iter.SeekBegin(); ! iter.Done(); iter.Next())
|
||||||
{
|
{
|
||||||
iter.Val()->Release();
|
cFCONameTblNode* p = iter.Val();
|
||||||
|
if (p)
|
||||||
|
p->Release();
|
||||||
}
|
}
|
||||||
|
|
||||||
mTable.Clear();
|
mTable.Clear();
|
||||||
|
|
|
@ -1,250 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
// fcopropvector_t.cpp -- class cFCOPropVector's test harness
|
|
||||||
#include "stdfco.h"
|
|
||||||
#include "fcopropvector.h"
|
|
||||||
|
|
||||||
#ifndef __TEST_H
|
|
||||||
#include "test/test.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static bool init (cFCOPropVector &testV);
|
|
||||||
static bool addRemove (cFCOPropVector &test1, cFCOPropVector &test2, cDebug& d);
|
|
||||||
static bool objManip (cFCOPropVector &testV, cDebug& d);
|
|
||||||
|
|
||||||
void TestFCOPropVector()
|
|
||||||
{
|
|
||||||
//Local Variables for main test function
|
|
||||||
|
|
||||||
bool testout;
|
|
||||||
cDebug d("TestFCOPropVector()");
|
|
||||||
d.TraceDetail("Entering...\n");
|
|
||||||
|
|
||||||
cFCOPropVector test1, test2, test3;
|
|
||||||
|
|
||||||
test1.SetSize(32);
|
|
||||||
test2.SetSize(64);
|
|
||||||
test3.SetSize(45);
|
|
||||||
|
|
||||||
d.TraceDetail("Empty Vector with no buffer:\n");
|
|
||||||
test1.check(d);
|
|
||||||
d.TraceDetail("\nEmpty Vector with buffer used: \n");
|
|
||||||
test2.check(d);
|
|
||||||
d.TraceDetail("\nEmpty Vector with buffer, mSize less buffer capacity: \n");
|
|
||||||
test3.check(d);
|
|
||||||
|
|
||||||
//First, test set initialization is correct.
|
|
||||||
d.TraceDetail("\nTesting vector initialization...\n");
|
|
||||||
TEST(testout = (init (test1)) & (init(test2)) & (init(test3)));
|
|
||||||
if (testout)
|
|
||||||
d.TraceDetail("success.\n");
|
|
||||||
else {
|
|
||||||
test1.check(d);
|
|
||||||
test2.check(d);
|
|
||||||
test3.check(d);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Test ability to add and remove
|
|
||||||
TEST(testout = addRemove (test1, test2, d));
|
|
||||||
d.TraceDetail("Add/Remove over all tests is %i \n", testout);
|
|
||||||
|
|
||||||
// test clear.
|
|
||||||
d.TraceDetail("Testing Clear()\n");
|
|
||||||
d.TraceDetail("Filling with numbers...\n");
|
|
||||||
cFCOPropVector v(44);
|
|
||||||
v.AddItem(2);
|
|
||||||
v.AddItem(3);
|
|
||||||
v.AddItem(9);
|
|
||||||
v.AddItem(40);
|
|
||||||
v.check(d);
|
|
||||||
d.TraceDetail("Clearing Numbers...\n");
|
|
||||||
v.Clear();
|
|
||||||
v.check(d);
|
|
||||||
d.TraceDetail("Clear Test Done.\n");
|
|
||||||
|
|
||||||
//test operators
|
|
||||||
TEST(testout = objManip(test1, d));
|
|
||||||
if (testout)
|
|
||||||
d.TraceDetail("Object manipulation tests are successful\n");
|
|
||||||
else
|
|
||||||
d.TraceDetail("Object manipulation tests are not successful\n");
|
|
||||||
|
|
||||||
return;
|
|
||||||
}//end TestPropVector
|
|
||||||
|
|
||||||
static bool init (cFCOPropVector &testV)
|
|
||||||
{
|
|
||||||
int range = testV.GetSize()-1;
|
|
||||||
|
|
||||||
for (int i=1; i<=range; ++i)
|
|
||||||
{
|
|
||||||
if (testV.ContainsItem(i))
|
|
||||||
return false;
|
|
||||||
} //end for
|
|
||||||
return true;
|
|
||||||
} //end init
|
|
||||||
|
|
||||||
static bool addRemove (cFCOPropVector &test1, cFCOPropVector &test2, cDebug& d)
|
|
||||||
{
|
|
||||||
int var1 = 0 , var2 = 64, var3 = 2;
|
|
||||||
bool local=true, out=true;
|
|
||||||
|
|
||||||
/*
|
|
||||||
bool loopvar = true;
|
|
||||||
int menu, var;
|
|
||||||
cFCOPropVector testV;
|
|
||||||
testV.SetSize(64);
|
|
||||||
while (loopvar)
|
|
||||||
{
|
|
||||||
|
|
||||||
d.TraceAlways("\nChoose an operation to test:\n");
|
|
||||||
d.TraceAlways("\t1)Add an item to vector.\n");
|
|
||||||
d.TraceAlways("\t2)Remove an item from vector. \n");
|
|
||||||
d.TraceAlways("\t3)Check vector for item. \n");
|
|
||||||
d.TraceAlways("\t4)Display vector information \n");
|
|
||||||
d.TraceAlways("\t5)Stop add/remove tests. \n");
|
|
||||||
d.TraceAlways("Your choice [1-5]: ");
|
|
||||||
cin>>menu;
|
|
||||||
d.TraceAlways("\n");
|
|
||||||
|
|
||||||
switch (menu)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
d.TraceAlways("Item to add: ");
|
|
||||||
cin>> var;
|
|
||||||
d.TraceAlways("%i \n", testV.AddItem(var));
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
d.TraceAlways("Item to remove: ");
|
|
||||||
cin>>var;
|
|
||||||
d.TraceAlways("%i \n", testV.RemoveItem(var));
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
d.TraceAlways("Item to check: ");
|
|
||||||
cin>>var;
|
|
||||||
if (testV.ContainsItem(var))
|
|
||||||
d.TraceAlways("\nItem present\n");
|
|
||||||
else
|
|
||||||
d.TraceAlways("\nItem not present\n");
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
testV.check(d);
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
loopvar = false;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
d.TraceAlways("Not a valid menu option\n");
|
|
||||||
break;
|
|
||||||
}//end switch
|
|
||||||
out &= local; //Keep track of results.
|
|
||||||
}//end while
|
|
||||||
*/
|
|
||||||
|
|
||||||
test1.AddItem(var1);
|
|
||||||
TEST(local &= test1.ContainsItem(var1)); //hopefully this is true!
|
|
||||||
TEST(local &= !test1.ContainsItem(var3));
|
|
||||||
test2.SetSize(var2);
|
|
||||||
TEST(local &= (test2.GetSize() == ((var2/32)+1)*32));
|
|
||||||
TEST(local &= (test1 != test2));
|
|
||||||
test1.RemoveItem(var1);
|
|
||||||
test2.SetSize(test1.GetSize());
|
|
||||||
TEST(local &= (test1 == test2));
|
|
||||||
test1.AddItem(var3);
|
|
||||||
test2 |= test1;
|
|
||||||
d.TraceDetail("\nmMask should be 4!\n");
|
|
||||||
test2.check(d);
|
|
||||||
test2.RemoveItem(var3);
|
|
||||||
d.TraceDetail("\nmMask should be 0! \n");
|
|
||||||
test2.check(d);
|
|
||||||
|
|
||||||
out &= local; //and-ing of results.
|
|
||||||
return out;
|
|
||||||
}//end addRemove
|
|
||||||
|
|
||||||
static bool objManip (cFCOPropVector &testV, cDebug& d)
|
|
||||||
{
|
|
||||||
cFCOPropVector test1, test2 = testV;
|
|
||||||
bool out = true;
|
|
||||||
|
|
||||||
/*testV.check(d);
|
|
||||||
test2.check(d);*/
|
|
||||||
|
|
||||||
TEST(out &= (testV == test2)); //test operator = , ==
|
|
||||||
test2.AddItem(1);
|
|
||||||
TEST(out &= (testV != test2)); //test operator !=
|
|
||||||
|
|
||||||
/*testV.check(d);
|
|
||||||
test2.check(d);*/
|
|
||||||
|
|
||||||
testV &= test2; //test operator &=
|
|
||||||
testV.check(d);
|
|
||||||
testV |= test2; //test operator |=
|
|
||||||
testV.check(d);
|
|
||||||
|
|
||||||
test1 = testV | test2; //test operator |
|
|
||||||
test1.check(d);
|
|
||||||
TEST(out&= (test1 == testV));
|
|
||||||
|
|
||||||
test2.RemoveItem(1);
|
|
||||||
testV = (test2 & test1);//test operator &
|
|
||||||
testV.check(d);
|
|
||||||
TEST(out&= !(test1 == testV));
|
|
||||||
|
|
||||||
// test operator ^
|
|
||||||
cFCOPropVector v1, v2, v3;
|
|
||||||
v1.AddItem(1);
|
|
||||||
v1.AddItem(3);
|
|
||||||
v1.AddItem(4);
|
|
||||||
v2.AddItem(3);
|
|
||||||
// expected result
|
|
||||||
v3.AddItem(1);
|
|
||||||
v3.AddItem(4);
|
|
||||||
TEST((v1 ^ v2) == v3);
|
|
||||||
// try with larger sizes...
|
|
||||||
v2.SetSize(40);
|
|
||||||
v2.Clear();
|
|
||||||
v2.AddItem(3);
|
|
||||||
TEST((v1 ^ v2) == v3);
|
|
||||||
v2.AddItem(38);
|
|
||||||
v1.SetSize(40);
|
|
||||||
v1.Clear();
|
|
||||||
v1.AddItem(1);
|
|
||||||
v1.AddItem(38);
|
|
||||||
v3.SetSize(40);
|
|
||||||
v3.Clear();
|
|
||||||
v3.AddItem(1);
|
|
||||||
v3.AddItem(3);
|
|
||||||
TEST((v1 ^ v2) == v3);
|
|
||||||
|
|
||||||
return out;
|
|
||||||
}//end objManip
|
|
|
@ -1,150 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
// fcosetimpl_t -- FCOSetImpl test driver
|
|
||||||
|
|
||||||
#include "stdfco.h"
|
|
||||||
#include "fcosetimpl.h"
|
|
||||||
#include "fs/fsobject.h"
|
|
||||||
#include "core/debug.h"
|
|
||||||
#include "test/test.h"
|
|
||||||
#include "iterproxy.h"
|
|
||||||
#include "core/archive.h"
|
|
||||||
#include "core/serializerimpl.h"
|
|
||||||
|
|
||||||
static void PrintIter(const iFCOIter* pIter, cDebug& d)
|
|
||||||
{
|
|
||||||
TSTRING str;
|
|
||||||
for(; ! pIter->Done(); pIter->Next())
|
|
||||||
{
|
|
||||||
str += pIter->FCO()->GetName().AsString().c_str();
|
|
||||||
str += _T(" ");
|
|
||||||
}
|
|
||||||
d.TraceDebug(_T("%s\n"), str.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
// TestFCOSetImpl -- FCOSetImpl component test harness
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
void TestFCOSetImpl()
|
|
||||||
{
|
|
||||||
cDebug d("TestFCOSetImpl()");
|
|
||||||
d.TraceDebug("Entering...\n");
|
|
||||||
|
|
||||||
|
|
||||||
iFCO* pFCO1 = new cFSObject(cFCOName(_T("fco1")));
|
|
||||||
iFCO* pFCO2 = new cFSObject(cFCOName(_T("fco2")));
|
|
||||||
iFCO* pFCO3 = new cFSObject(cFCOName(_T("fco3")));
|
|
||||||
|
|
||||||
cFCOSetImpl set;
|
|
||||||
set.Insert(pFCO1);
|
|
||||||
set.Insert(pFCO2);
|
|
||||||
set.Insert(pFCO3);
|
|
||||||
|
|
||||||
// the set should have AddRef()ed, so I can release these now.
|
|
||||||
pFCO1->Release();
|
|
||||||
pFCO2->Release();
|
|
||||||
pFCO3->Release();
|
|
||||||
|
|
||||||
// let's iterate over the fcos
|
|
||||||
cIterProxy<iFCOIter> pit(set.GetIter());
|
|
||||||
pit->SeekBegin();
|
|
||||||
PrintIter(pit, d);
|
|
||||||
|
|
||||||
// lookup a specific fco
|
|
||||||
cIterProxy<iFCOIter> pit2(set.Lookup(cFCOName(_T("fco2"))));
|
|
||||||
if(! (iFCOIter*)pit2)
|
|
||||||
{
|
|
||||||
d.TraceError("Lookup failed for fco2!\n");
|
|
||||||
TEST(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
d.TraceDebug("Iterating from fco2 to end...\n");
|
|
||||||
PrintIter(pit2, d);
|
|
||||||
|
|
||||||
// Insert something
|
|
||||||
d.TraceDebug("Inserting dog...\n");
|
|
||||||
pFCO1 = new cFSObject(cFCOName(_T("dog")));
|
|
||||||
set.Insert(pFCO1);
|
|
||||||
pFCO1->Release();
|
|
||||||
pit->SeekBegin();
|
|
||||||
PrintIter(pit, d);
|
|
||||||
|
|
||||||
// ...and then remove it
|
|
||||||
d.TraceDebug("Removing fco3\n");
|
|
||||||
cIterProxy<iFCOIter> pit3(set.Lookup(cFCOName(_T("fco3"))));
|
|
||||||
if(! (iFCOIter*)pit3)
|
|
||||||
{
|
|
||||||
d.TraceError("Lookup failed for fco3!\n");
|
|
||||||
TEST(false);
|
|
||||||
}
|
|
||||||
pit3->Remove();
|
|
||||||
pit3->SeekBegin();
|
|
||||||
PrintIter(pit3, d);
|
|
||||||
|
|
||||||
// test operator=
|
|
||||||
cFCOSetImpl set2;
|
|
||||||
set2 = set;
|
|
||||||
pit = set2.GetIter();
|
|
||||||
d.TraceDebug("Made a new set and set it equal to the first with operator=; printing out...\n");
|
|
||||||
PrintIter(pit, d);
|
|
||||||
|
|
||||||
// test IsEmpty
|
|
||||||
set.Clear();
|
|
||||||
TEST(set.IsEmpty());
|
|
||||||
|
|
||||||
// test refrence counting...
|
|
||||||
d.TraceDebug("Set 1 was cleared out; printing set 2 to ensure ref counting worked\n");
|
|
||||||
pit->SeekBegin();
|
|
||||||
PrintIter(pit, d);
|
|
||||||
|
|
||||||
// test serialization
|
|
||||||
cFCOSetImpl set3;
|
|
||||||
cMemoryArchive a;
|
|
||||||
cSerializerImpl writeSer(a, cSerializerImpl::S_WRITE);
|
|
||||||
writeSer.Init();
|
|
||||||
set2.Write(&writeSer);
|
|
||||||
writeSer.Finit();
|
|
||||||
a.Seek(0, cBidirArchive::BEGINNING);
|
|
||||||
cSerializerImpl readSer(a, cSerializerImpl::S_READ);
|
|
||||||
readSer.Init();
|
|
||||||
set3.Read(&readSer);
|
|
||||||
readSer.Finit();
|
|
||||||
d.TraceDebug("Serialized the set out and read it back in; this should be the same as above...\n");
|
|
||||||
pit = set3.GetIter();
|
|
||||||
PrintIter(pit, d);
|
|
||||||
|
|
||||||
|
|
||||||
d.TraceDebug("Leaving...\n");
|
|
||||||
return;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,131 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
// fcospechelper_t.cpp
|
|
||||||
|
|
||||||
#include "stdfco.h"
|
|
||||||
#include "fcospechelper.h"
|
|
||||||
#include "test/test.h"
|
|
||||||
#include "core/error.h"
|
|
||||||
#include "core/serializerimpl.h"
|
|
||||||
#include "core/archive.h"
|
|
||||||
|
|
||||||
void TestFCOSpecHelper()
|
|
||||||
{
|
|
||||||
cDebug d("TestFCOSpecHelper");
|
|
||||||
d.TraceDebug("Entering...\n");
|
|
||||||
|
|
||||||
// test the start and stop point fringe cases...
|
|
||||||
d.TraceDebug("Testing start and stop point stuff...\n");
|
|
||||||
cFCOSpecStopPointSet* pSet3 = new cFCOSpecStopPointSet;
|
|
||||||
pSet3->SetStartPoint(cFCOName(_T("/etc"))); d.TraceDebug("*** Added start point /etc\n");
|
|
||||||
pSet3->Add(cFCOName(_T("/etc/dog/bark"))); d.TraceDebug("*** Added stop point /etc/dog/bark\n");
|
|
||||||
pSet3->Add(cFCOName(_T("/etc/dog/pant"))); d.TraceDebug("*** Added stop point /etc/dog/pant\n\n");
|
|
||||||
pSet3->Add(cFCOName(_T("/etc/cat/meow"))); d.TraceDebug("*** Added stop point /etc/cat/meow\n");
|
|
||||||
pSet3->TraceContents();
|
|
||||||
pSet3->Add(cFCOName(_T("/etc/dog"))); d.TraceDebug("*** Added stop point /etc/dog\n");
|
|
||||||
pSet3->Add(cFCOName(_T("/etc/cat/purr"))); d.TraceDebug("*** Added stop point /etc/cat/purr\n");
|
|
||||||
pSet3->Add(cFCOName(_T("/etc/cat/purr/loud"))); d.TraceDebug("*** Added stop point /etc/cat/purr/loud\n");
|
|
||||||
pSet3->TraceContents();
|
|
||||||
pSet3->Add(cFCOName(_T("/etc/dog"))); d.TraceDebug("*** Added stop point /etc/dog\n");
|
|
||||||
try
|
|
||||||
{
|
|
||||||
pSet3->Add(cFCOName(_T("/var/spool"))); d.TraceDebug("*** Added stop point /var/spool\n");
|
|
||||||
}
|
|
||||||
catch(eError& e)
|
|
||||||
{
|
|
||||||
d.TraceDebug(_T("Caught exception : %s\n"), e.GetMsg().c_str());
|
|
||||||
}
|
|
||||||
try
|
|
||||||
{
|
|
||||||
pSet3->SetStartPoint(cFCOName(_T("/var"))); d.TraceDebug("*** Added start point /var\n");
|
|
||||||
}
|
|
||||||
catch(eError& e)
|
|
||||||
{
|
|
||||||
d.TraceDebug(_T("Caught exception : %s\n"), e.GetMsg().c_str());
|
|
||||||
}
|
|
||||||
try
|
|
||||||
{
|
|
||||||
pSet3->SetStartPoint(cFCOName(_T("/"))); d.TraceDebug("*** Added start point /\n");
|
|
||||||
}
|
|
||||||
catch(eError& e)
|
|
||||||
{
|
|
||||||
d.TraceDebug(_T("Caught exception : %s\n"), e.GetMsg().c_str());
|
|
||||||
}
|
|
||||||
pSet3->TraceContents();
|
|
||||||
|
|
||||||
// test SpecContainsFCO()
|
|
||||||
cFCOSpecStopPointSet* pSet4 = new cFCOSpecStopPointSet;
|
|
||||||
pSet4->SetStartPoint(cFCOName(_T("/etc")));
|
|
||||||
pSet4->Add(cFCOName(_T("/etc/dog")));
|
|
||||||
pSet4->Add(cFCOName(_T("/etc/cat/meow")));
|
|
||||||
TEST( pSet4->ContainsFCO( cFCOName(_T("/etc/frog"))));
|
|
||||||
TEST( pSet4->ContainsFCO( cFCOName(_T("/etc/cat/paw"))));
|
|
||||||
TEST(! pSet4->ContainsFCO( cFCOName(_T("/etc/dog"))));
|
|
||||||
TEST(! pSet4->ContainsFCO( cFCOName(_T("/var/spool/mail"))));
|
|
||||||
TEST(! pSet4->ContainsFCO( cFCOName(_T("/etc/dog/bark"))));
|
|
||||||
|
|
||||||
// test the All Children Stop Points case
|
|
||||||
cFCOSpecNoChildren noChildren;
|
|
||||||
noChildren.SetStartPoint(cFCOName(_T("/etc")));
|
|
||||||
TEST( noChildren.ContainsFCO( cFCOName(_T("/etc"))));
|
|
||||||
TEST(! noChildren.ContainsFCO( cFCOName(_T("/etc/frog"))));
|
|
||||||
|
|
||||||
// TODO -- test Compare()
|
|
||||||
|
|
||||||
// test serialization
|
|
||||||
// test serialization
|
|
||||||
cMemoryArchive a;
|
|
||||||
cSerializerImpl s(a, cSerializerImpl::S_WRITE);
|
|
||||||
s.Init();
|
|
||||||
s.WriteObjectDynCreate(pSet3);
|
|
||||||
s.WriteObjectDynCreate(&noChildren);
|
|
||||||
s.Finit();
|
|
||||||
a.Seek(0, cBidirArchive::BEGINNING);
|
|
||||||
|
|
||||||
iFCOSpecHelper* pHelp1, *pHelp2;
|
|
||||||
cSerializerImpl s2(a, cSerializerImpl::S_READ);
|
|
||||||
s2.Init();
|
|
||||||
pHelp1 = (iFCOSpecHelper*)s2.ReadObjectDynCreate();
|
|
||||||
pHelp2 = (iFCOSpecHelper*)s2.ReadObjectDynCreate();
|
|
||||||
s2.Finit();
|
|
||||||
|
|
||||||
TEST(pHelp1->Compare(pSet3) == iFCOSpecHelper::CMP_EQ);
|
|
||||||
TEST(pHelp2->Compare(&noChildren) == iFCOSpecHelper::CMP_EQ);
|
|
||||||
TEST(pHelp1->Compare(&noChildren) != iFCOSpecHelper::CMP_EQ);
|
|
||||||
TEST(pHelp2->Compare(pSet3) != iFCOSpecHelper::CMP_EQ);
|
|
||||||
|
|
||||||
|
|
||||||
delete pSet3;
|
|
||||||
delete pSet4;
|
|
||||||
delete pHelp1;
|
|
||||||
delete pHelp2;
|
|
||||||
}
|
|
|
@ -1,85 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
// fcospecutil_t.cpp
|
|
||||||
|
|
||||||
#include "stdfco.h"
|
|
||||||
#include "fcospecutil.h"
|
|
||||||
#include "core/debug.h"
|
|
||||||
#include "test/test.h"
|
|
||||||
#include "fcospecimpl.h"
|
|
||||||
#include "iterproxy.h"
|
|
||||||
#include "fcospechelper.h"
|
|
||||||
|
|
||||||
void TestFcoSpecUtil()
|
|
||||||
{
|
|
||||||
cDebug d("TestFcoSpecUtil()");
|
|
||||||
|
|
||||||
// first check the equality operator...
|
|
||||||
cFCOSpecStopPointSet* pSet1 = new cFCOSpecStopPointSet;
|
|
||||||
cFCOSpecStopPointSet* pSet2 = new cFCOSpecStopPointSet;
|
|
||||||
cFCOSpecImpl* pSpec1 = new cFCOSpecImpl(_T("Spec1"), NULL, pSet1);
|
|
||||||
cFCOSpecImpl* pSpec2 = new cFCOSpecImpl(_T("Spec2"), NULL, pSet2);
|
|
||||||
|
|
||||||
pSpec1->SetStartPoint(cFCOName(_T("Dog")));
|
|
||||||
pSpec2->SetStartPoint(cFCOName(_T("Dog")));
|
|
||||||
pSet1->Add(cFCOName(_T("Dog/Bark")));
|
|
||||||
pSet2->Add(cFCOName(_T("Dog/Bark")));
|
|
||||||
pSet1->Add(cFCOName(_T("Dog/Pant")));
|
|
||||||
pSet2->Add(cFCOName(_T("Dog/Pant")));
|
|
||||||
TEST(iFCOSpecUtil::FCOSpecEqual(*pSpec1, *pSpec2));
|
|
||||||
|
|
||||||
// make them a little different...
|
|
||||||
cFCOSpecStopPointIter iter(*pSet1);
|
|
||||||
iter.SeekBegin();
|
|
||||||
cFCOName removedName = iter.StopPoint();
|
|
||||||
iter.Remove();
|
|
||||||
pSet1->Add(cFCOName(_T("Dog/Scratch")));
|
|
||||||
TEST(! iFCOSpecUtil::FCOSpecEqual(*pSpec1, *pSpec2));
|
|
||||||
|
|
||||||
pSet1->Add(removedName);
|
|
||||||
TEST(! iFCOSpecUtil::FCOSpecEqual(*pSpec1, *pSpec2));
|
|
||||||
|
|
||||||
|
|
||||||
// TODO -- implement a more appropriate less-than test
|
|
||||||
/* pSpec1->SetStartPoint(cFCOName(_T("Dog")));
|
|
||||||
pSpec2->AddStopPoint(cFCOName(_T("Howl")));
|
|
||||||
TEST(! iFCOSpecUtil::FCOSpecEqual (*pSpec1, *pSpec2));
|
|
||||||
TEST( iFCOSpecUtil::FCOSpecLessThan(*pSpec1, *pSpec2));
|
|
||||||
pSpec1->AddStopPoint(cFCOName(_T("Howm")));
|
|
||||||
TEST( iFCOSpecUtil::FCOSpecLessThan(*pSpec2, *pSpec1));
|
|
||||||
*/
|
|
||||||
|
|
||||||
pSpec1->Release();
|
|
||||||
pSpec2->Release();
|
|
||||||
|
|
||||||
d.TraceDebug("Leaving..\n");
|
|
||||||
}
|
|
|
@ -552,7 +552,7 @@ TSTRING cMD5Signature::AsStringHex() const
|
||||||
|
|
||||||
for(int i = 0; i < SIG_BYTE_SIZE; ++i)
|
for(int i = 0; i < SIG_BYTE_SIZE; ++i)
|
||||||
{
|
{
|
||||||
_stprintf(stringBuffer, _T("%02lx"), dbuf[i]);
|
_stprintf(stringBuffer, _T("%02lx"), (unsigned long)dbuf[i]);
|
||||||
_tcscat(sigStringOut, stringBuffer);
|
_tcscat(sigStringOut, stringBuffer);
|
||||||
}
|
}
|
||||||
ret.append(sigStringOut);
|
ret.append(sigStringOut);
|
||||||
|
|
|
@ -1,364 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
|
|
||||||
#include "stdfco.h"
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include "signature.h"
|
|
||||||
#include "core/tchar.h"
|
|
||||||
#include "test/test.h"
|
|
||||||
#include "core/errorgeneral.h"
|
|
||||||
#include "core/serializerimpl.h"
|
|
||||||
#include "core/crc32.h"
|
|
||||||
#include "core/archive.h"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
void TestSignature()
|
|
||||||
{
|
|
||||||
// Signature usage example (?)
|
|
||||||
cCRC32Signature crcSig;
|
|
||||||
cDebug d("TestSignature");
|
|
||||||
|
|
||||||
byte abData[ 64 ];
|
|
||||||
int i;
|
|
||||||
for( i = 0; i < 64; i++ )
|
|
||||||
abData[i] = static_cast< byte >( rand() );
|
|
||||||
|
|
||||||
crcSig.Init();
|
|
||||||
crcSig.Update( &abData[0], 32 );
|
|
||||||
crcSig.Update( &abData[32], 32 );
|
|
||||||
crcSig.Finit();
|
|
||||||
TCOUT << _T("new way: ") << crcSig.AsString() << endl;
|
|
||||||
|
|
||||||
cMemoryArchive arch;
|
|
||||||
arch.WriteBlob( &abData[0], 32 );
|
|
||||||
arch.WriteBlob( &abData[32], 32 );
|
|
||||||
arch.Seek( 0, cBidirArchive::BEGINNING );
|
|
||||||
cCRC32Signature crc;
|
|
||||||
cArchiveSigGen asg;
|
|
||||||
asg.AddSig( &crc );
|
|
||||||
asg.CalculateSignatures( arch );
|
|
||||||
|
|
||||||
TCOUT << _T("old way: ") << crc.AsString() << endl;
|
|
||||||
|
|
||||||
|
|
||||||
// Note: The following causes an ASSERT() in iSignature::Compare(), as it should, but
|
|
||||||
// we don't want asserts to occur in a working test suite!
|
|
||||||
// TEST(nullSig.Compare(&checksumSig, iFCOProp::OP_EQ) == iFCOProp::CMP_WRONG_PROP_TYPE);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Create a file for which we know the signatures
|
|
||||||
//
|
|
||||||
//% siggen ~/signature_test.bin
|
|
||||||
//crc : AAAAAAAAAAy
|
|
||||||
//md5 : B/Y8ttBnlyw/NPCUu353ao
|
|
||||||
//crc32 : B1kP9v
|
|
||||||
//sha : Oia1aljHD793tfj7M55tND+3OG/
|
|
||||||
//haval : BL6bFSo0EP5zf8lGSueeed
|
|
||||||
|
|
||||||
TSTRING sigFileName = TEMP_DIR;
|
|
||||||
sigFileName += TSTRING( _T("/signature_test.bin") );
|
|
||||||
|
|
||||||
cFileArchive fileArc;
|
|
||||||
fileArc.OpenReadWrite(sigFileName.c_str());
|
|
||||||
fileArc.WriteBlob("\x1\x2\x3\x4\x5\x6\x7\x8\x9\x0", 10);
|
|
||||||
fileArc.Close();
|
|
||||||
|
|
||||||
|
|
||||||
// test begins here
|
|
||||||
|
|
||||||
// general signature & archive variables
|
|
||||||
byte abBuf[iSignature::SUGGESTED_BLOCK_SIZE];
|
|
||||||
const int cbToRead = iSignature::SUGGESTED_BLOCK_SIZE;
|
|
||||||
int cbRead;
|
|
||||||
|
|
||||||
|
|
||||||
// test checksum
|
|
||||||
cChecksumSignature check1, check2;
|
|
||||||
d.TraceDetail("Testing checksum.\n");
|
|
||||||
|
|
||||||
// check1
|
|
||||||
fileArc.OpenRead(sigFileName.c_str());
|
|
||||||
check1.Init();
|
|
||||||
do
|
|
||||||
{
|
|
||||||
cbRead = fileArc.ReadBlob( abBuf, cbToRead );
|
|
||||||
check1.Update( abBuf, cbRead );
|
|
||||||
}
|
|
||||||
while ( cbRead == cbToRead );
|
|
||||||
check1.Finit();
|
|
||||||
fileArc.Close();
|
|
||||||
|
|
||||||
// check2
|
|
||||||
fileArc.OpenRead(sigFileName.c_str());
|
|
||||||
check2.Init();
|
|
||||||
do
|
|
||||||
{
|
|
||||||
cbRead = fileArc.ReadBlob( abBuf, cbToRead );
|
|
||||||
check2.Update( abBuf, cbRead );
|
|
||||||
}
|
|
||||||
while ( cbRead == cbToRead );
|
|
||||||
check2.Finit();
|
|
||||||
fileArc.Close();
|
|
||||||
|
|
||||||
// compare to each other and the known values
|
|
||||||
TEST(check1.Compare(&check2, iFCOProp::OP_EQ) == iFCOProp::CMP_TRUE);
|
|
||||||
TEST(check1.AsString().compare(_T("AAAAAAAAAAt")) == 0);
|
|
||||||
|
|
||||||
// test write capabilities
|
|
||||||
{
|
|
||||||
cMemoryArchive sigArchive;
|
|
||||||
cSerializerImpl writeSer(sigArchive, cSerializerImpl::S_WRITE);
|
|
||||||
check1.Write(&writeSer);
|
|
||||||
sigArchive.Seek(0, cBidirArchive::BEGINNING);
|
|
||||||
cSerializerImpl readSer(sigArchive, cSerializerImpl::S_READ);
|
|
||||||
check2.Read(&readSer);
|
|
||||||
TEST(check1.Compare(&check2, iFCOProp::OP_EQ) == iFCOProp::CMP_TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// test CRC32
|
|
||||||
cCRC32Signature crc1, crc2;
|
|
||||||
d.TraceDetail("Testing CRC32.\n");
|
|
||||||
|
|
||||||
// crc1
|
|
||||||
fileArc.OpenRead(sigFileName.c_str());
|
|
||||||
crc1.Init();
|
|
||||||
do
|
|
||||||
{
|
|
||||||
cbRead = fileArc.ReadBlob( abBuf, cbToRead );
|
|
||||||
crc1.Update( abBuf, cbRead );
|
|
||||||
}
|
|
||||||
while ( cbRead == cbToRead );
|
|
||||||
crc1.Finit();
|
|
||||||
fileArc.Close();
|
|
||||||
|
|
||||||
// crc2
|
|
||||||
fileArc.OpenRead(sigFileName.c_str());
|
|
||||||
crc2.Init();
|
|
||||||
do
|
|
||||||
{
|
|
||||||
cbRead = fileArc.ReadBlob( abBuf, cbToRead );
|
|
||||||
crc2.Update( abBuf, cbRead );
|
|
||||||
}
|
|
||||||
while ( cbRead == cbToRead );
|
|
||||||
crc2.Finit();
|
|
||||||
fileArc.Close();
|
|
||||||
|
|
||||||
// compare to each other and the known values
|
|
||||||
TEST(crc1.Compare(&crc2, iFCOProp::OP_EQ) == iFCOProp::CMP_TRUE);
|
|
||||||
TEST(crc1.AsString().compare(_T("B1kP9v")) == 0);
|
|
||||||
TEST(crc1.AsStringHex().compare(_T("7590ff6f")) == 0);
|
|
||||||
|
|
||||||
// test write capabilities
|
|
||||||
{
|
|
||||||
cMemoryArchive sigArchive;
|
|
||||||
cSerializerImpl writeSer(sigArchive, cSerializerImpl::S_WRITE);
|
|
||||||
crc1.Write(&writeSer);
|
|
||||||
sigArchive.Seek(0, cBidirArchive::BEGINNING);
|
|
||||||
cSerializerImpl readSer(sigArchive, cSerializerImpl::S_READ);
|
|
||||||
crc2.Read(&readSer);
|
|
||||||
TEST(crc1.Compare(&crc2, iFCOProp::OP_EQ) == iFCOProp::CMP_TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// test MD5
|
|
||||||
cMD5Signature md51, md52;
|
|
||||||
d.TraceDetail("Testing MD5.\n");
|
|
||||||
|
|
||||||
// md51
|
|
||||||
fileArc.OpenRead(sigFileName.c_str());
|
|
||||||
md51.Init();
|
|
||||||
do
|
|
||||||
{
|
|
||||||
cbRead = fileArc.ReadBlob( abBuf, cbToRead );
|
|
||||||
md51.Update( abBuf, cbRead );
|
|
||||||
}
|
|
||||||
while ( cbRead == cbToRead );
|
|
||||||
md51.Finit();
|
|
||||||
fileArc.Close();
|
|
||||||
|
|
||||||
// md52
|
|
||||||
fileArc.OpenRead(sigFileName.c_str());
|
|
||||||
md52.Init();
|
|
||||||
do
|
|
||||||
{
|
|
||||||
cbRead = fileArc.ReadBlob( abBuf, cbToRead );
|
|
||||||
md52.Update( abBuf, cbRead );
|
|
||||||
}
|
|
||||||
while ( cbRead == cbToRead );
|
|
||||||
md52.Finit();
|
|
||||||
fileArc.Close();
|
|
||||||
|
|
||||||
// compare to each other and the known values
|
|
||||||
TEST(md51.Compare(&md52, iFCOProp::OP_EQ) == iFCOProp::CMP_TRUE);
|
|
||||||
TEST(md51.AsString().compare(_T("B/Y8ttBnlyw/NPCUu353ao")) == 0);
|
|
||||||
TEST(md51.AsStringHex().compare(_T("7f63cb6d067972c3f34f094bb7e776a8")) == 0);
|
|
||||||
|
|
||||||
// test write capabilities
|
|
||||||
{
|
|
||||||
cMemoryArchive sigArchive;
|
|
||||||
cSerializerImpl writeSer(sigArchive, cSerializerImpl::S_WRITE);
|
|
||||||
md51.Write(&writeSer);
|
|
||||||
sigArchive.Seek(0, cBidirArchive::BEGINNING);
|
|
||||||
cSerializerImpl readSer(sigArchive, cSerializerImpl::S_READ);
|
|
||||||
md52.Read(&readSer);
|
|
||||||
TEST(md51.Compare(&md52, iFCOProp::OP_EQ) == iFCOProp::CMP_TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// test SHA
|
|
||||||
cSHASignature sha1, sha2;
|
|
||||||
d.TraceDetail("Testing SHA.\n");
|
|
||||||
|
|
||||||
// sha1
|
|
||||||
fileArc.OpenRead(sigFileName.c_str());
|
|
||||||
sha1.Init();
|
|
||||||
do
|
|
||||||
{
|
|
||||||
cbRead = fileArc.ReadBlob( abBuf, cbToRead );
|
|
||||||
sha1.Update( abBuf, cbRead );
|
|
||||||
}
|
|
||||||
while ( cbRead == cbToRead );
|
|
||||||
sha1.Finit();
|
|
||||||
fileArc.Close();
|
|
||||||
|
|
||||||
// sha2
|
|
||||||
fileArc.OpenRead(sigFileName.c_str());
|
|
||||||
sha2.Init();
|
|
||||||
do
|
|
||||||
{
|
|
||||||
cbRead = fileArc.ReadBlob( abBuf, cbToRead );
|
|
||||||
sha2.Update( abBuf, cbRead );
|
|
||||||
}
|
|
||||||
while ( cbRead == cbToRead );
|
|
||||||
sha2.Finit();
|
|
||||||
fileArc.Close();
|
|
||||||
|
|
||||||
// compare to each other and the known values
|
|
||||||
TEST(sha1.Compare(&sha2, iFCOProp::OP_EQ) == iFCOProp::CMP_TRUE);
|
|
||||||
TEST(sha1.AsString().compare(_T("Oia1aljHD793tfj7M55tND+3OG/")) == 0);
|
|
||||||
TEST(sha1.AsStringHex().compare(_T("e89ad5a9631c3efdded7e3ecce79b4d0fedce1bf")) == 0);
|
|
||||||
|
|
||||||
// test write capabilities
|
|
||||||
{
|
|
||||||
cMemoryArchive sigArchive;
|
|
||||||
cSerializerImpl writeSer(sigArchive, cSerializerImpl::S_WRITE);
|
|
||||||
sha1.Write(&writeSer);
|
|
||||||
sigArchive.Seek(0, cBidirArchive::BEGINNING);
|
|
||||||
cSerializerImpl readSer(sigArchive, cSerializerImpl::S_READ);
|
|
||||||
sha2.Read(&readSer);
|
|
||||||
TEST(sha1.Compare(&sha2, iFCOProp::OP_EQ) == iFCOProp::CMP_TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// test HAVAL
|
|
||||||
cHAVALSignature haval1, haval2;
|
|
||||||
d.TraceDetail("Testing HAVAL.\n");
|
|
||||||
|
|
||||||
// haval1
|
|
||||||
fileArc.OpenRead(sigFileName.c_str());
|
|
||||||
haval1.Init();
|
|
||||||
do
|
|
||||||
{
|
|
||||||
cbRead = fileArc.ReadBlob( abBuf, cbToRead );
|
|
||||||
haval1.Update( abBuf, cbRead );
|
|
||||||
}
|
|
||||||
while ( cbRead == cbToRead );
|
|
||||||
haval1.Finit();
|
|
||||||
fileArc.Close();
|
|
||||||
|
|
||||||
// haval2
|
|
||||||
fileArc.OpenRead(sigFileName.c_str());
|
|
||||||
haval2.Init();
|
|
||||||
do
|
|
||||||
{
|
|
||||||
cbRead = fileArc.ReadBlob( abBuf, cbToRead );
|
|
||||||
haval2.Update( abBuf, cbRead );
|
|
||||||
}
|
|
||||||
while ( cbRead == cbToRead );
|
|
||||||
haval2.Finit();
|
|
||||||
fileArc.Close();
|
|
||||||
|
|
||||||
// compare to each other and the known values
|
|
||||||
TEST(haval1.Compare(&haval2, iFCOProp::OP_EQ) == iFCOProp::CMP_TRUE);
|
|
||||||
TEST(haval1.AsString().compare(_T("BL6bFSo0EP5zf8lGSueeed")) == 0);
|
|
||||||
TEST(haval1.AsStringHex().compare(_T("4be9b152a3410fe737fc9464ae79e79d")) == 0);
|
|
||||||
|
|
||||||
// test write capabilities
|
|
||||||
{
|
|
||||||
cMemoryArchive sigArchive;
|
|
||||||
cSerializerImpl writeSer(sigArchive, cSerializerImpl::S_WRITE);
|
|
||||||
haval1.Write(&writeSer);
|
|
||||||
sigArchive.Seek(0, cBidirArchive::BEGINNING);
|
|
||||||
cSerializerImpl readSer(sigArchive, cSerializerImpl::S_READ);
|
|
||||||
md52.Read(&readSer);
|
|
||||||
TEST(haval1.Compare(&haval2, iFCOProp::OP_EQ) == iFCOProp::CMP_TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// test cArchiveSigGen
|
|
||||||
cArchiveSigGen asgtest;
|
|
||||||
cCRC32Signature crc3;
|
|
||||||
cMD5Signature md53;
|
|
||||||
cSHASignature sha3;
|
|
||||||
cHAVALSignature haval3;
|
|
||||||
d.TraceDetail("Testing cArchiveSigGen\n");
|
|
||||||
|
|
||||||
asgtest.AddSig( &crc3 );
|
|
||||||
asgtest.AddSig( &md53 );
|
|
||||||
asgtest.AddSig( &sha3 );
|
|
||||||
asgtest.AddSig( &haval3 );
|
|
||||||
|
|
||||||
// calculate the signatures
|
|
||||||
fileArc.OpenRead(sigFileName.c_str());
|
|
||||||
fileArc.Seek( 0, cBidirArchive::BEGINNING );
|
|
||||||
|
|
||||||
asgtest.CalculateSignatures( fileArc );
|
|
||||||
|
|
||||||
// compare to known values
|
|
||||||
TEST(crc3.AsString().compare(_T("B1kP9v")) == 0);
|
|
||||||
TEST(crc3.AsStringHex().compare(_T("7590ff6f")) == 0);
|
|
||||||
TEST(md53.AsString().compare(_T("B/Y8ttBnlyw/NPCUu353ao")) == 0);
|
|
||||||
TEST(md53.AsStringHex().compare(_T("7f63cb6d067972c3f34f094bb7e776a8")) == 0);
|
|
||||||
TEST(sha3.AsString().compare(_T("Oia1aljHD793tfj7M55tND+3OG/")) == 0);
|
|
||||||
TEST(sha3.AsStringHex().compare(_T("e89ad5a9631c3efdded7e3ecce79b4d0fedce1bf")) == 0);
|
|
||||||
TEST(haval3.AsString().compare(_T("BL6bFSo0EP5zf8lGSueeed")) == 0);
|
|
||||||
TEST(haval3.AsStringHex().compare(_T("4be9b152a3410fe737fc9464ae79e79d")) == 0);
|
|
||||||
|
|
||||||
fileArc.Close();
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,131 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
// fspropcalc_t.cpp -- the fs property calculator test driver
|
|
||||||
#include "stdfs.h"
|
|
||||||
#include "fspropcalc.h"
|
|
||||||
#include "core/debug.h"
|
|
||||||
#include "fco/fcopropset.h"
|
|
||||||
#include "fspropset.h"
|
|
||||||
#include "test/test.h"
|
|
||||||
#include "fco/fco.h"
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
// PrintProps -- prints out all the valid property names and values as pairs...
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
/*
|
|
||||||
static void PrintProps(const iFCO* pFCO)
|
|
||||||
{
|
|
||||||
cDebug d("PrintProps");
|
|
||||||
const iFCOPropSet* pSet = pFCO->GetPropSet();
|
|
||||||
const cFCOPropVector& v = pSet->GetValidVector();
|
|
||||||
|
|
||||||
for(int i=0; i<pSet->GetNumProps(); i++)
|
|
||||||
{
|
|
||||||
if(v.ContainsItem(i))
|
|
||||||
{
|
|
||||||
d.TraceDebug("[%d] %s\t%s\n", i, pSet->GetPropName(i), pSet->GetPropAt(i)->AsString().c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
void TestFSPropCalc()
|
|
||||||
{
|
|
||||||
#pragma message( __FILE__ "(1) : TODO - implement this test file")
|
|
||||||
#if 0
|
|
||||||
cDebug d("TestFSPropCalc");
|
|
||||||
cFSDataSource ds;
|
|
||||||
|
|
||||||
iFSServices* pFSServices = iFSServices::GetInstance();
|
|
||||||
bool bCaseSensitive = pFSServices->IsCaseSensitive();
|
|
||||||
|
|
||||||
// oh boy! I finally get to test property calculation!
|
|
||||||
d.TraceDebug("Creating FCO c:\\temp\\foo.bin\n");
|
|
||||||
|
|
||||||
cFileArchive arch;
|
|
||||||
int ret;
|
|
||||||
ret = arch.OpenReadWrite(TEMP_DIR _T("/foo.bin"), true);
|
|
||||||
TEST(ret);
|
|
||||||
arch.WriteBlob("\x1\x2\x3\x4\x5\x6\x7\x8\x9\x0", 10);
|
|
||||||
arch.Close();
|
|
||||||
|
|
||||||
// get the fco but none of its children...
|
|
||||||
iFCO* pFCO = ds.CreateFCO(cFCOName(TEMP_DIR _T("/foo.bin")), 0);
|
|
||||||
ASSERT(pFCO);
|
|
||||||
|
|
||||||
// create the calculator and set some properties to calculate...
|
|
||||||
cFSPropCalc propCalc;
|
|
||||||
cFCOPropVector v(pFCO->GetPropSet()->GetValidVector().GetSize());
|
|
||||||
v.AddItem(cFSPropSet::PROP_DEV);
|
|
||||||
v.AddItem(cFSPropSet::PROP_CTIME);
|
|
||||||
v.AddItem(cFSPropSet::PROP_SIZE);
|
|
||||||
v.AddItem(cFSPropSet::PROP_BLOCKS);
|
|
||||||
v.AddItem(cFSPropSet::PROP_CRC32);
|
|
||||||
v.AddItem(cFSPropSet::PROP_MD5);
|
|
||||||
propCalc.SetPropVector(v);
|
|
||||||
|
|
||||||
// finally, do the calculation
|
|
||||||
pFCO->AcceptVisitor(&propCalc);
|
|
||||||
|
|
||||||
// see what properties were evaluated...
|
|
||||||
PrintProps(pFCO);
|
|
||||||
|
|
||||||
d.TraceDebug("CRC32 should be \"2ARm2G\"\n");
|
|
||||||
d.TraceDebug("MD5 should be \"1.Oyjj1dbom.DF2KktvtQe\"\n");
|
|
||||||
|
|
||||||
// if we do it with "Leave", then nothing should change...
|
|
||||||
d.TraceDebug("Changing collision action to Leave; the following run should _not_ call Stat()\n");
|
|
||||||
propCalc.SetCollisionAction(iFCOPropCalc::PROP_LEAVE);
|
|
||||||
pFCO->AcceptVisitor(&propCalc);
|
|
||||||
|
|
||||||
|
|
||||||
// test only calculating unevaluated props...
|
|
||||||
d.TraceDebug("invalidating PROP_MD5 in fco, and changing the file. \n\tAll should remain the same except md5.\n");
|
|
||||||
ret = arch.OpenReadWrite(TEMP_DIR _T("/foo.bin"), true);
|
|
||||||
TEST(ret);
|
|
||||||
arch.WriteString(_T("Bark Bark Bark\n"));
|
|
||||||
arch.Close();
|
|
||||||
|
|
||||||
// do the calculation
|
|
||||||
pFCO->GetPropSet()->InvalidateProp(cFSPropSet::PROP_MD5);
|
|
||||||
pFCO->AcceptVisitor(&propCalc);
|
|
||||||
PrintProps(pFCO);
|
|
||||||
|
|
||||||
|
|
||||||
// TODO -- is there any way to test the error queue in the prop calc?
|
|
||||||
|
|
||||||
// release the fco
|
|
||||||
pFCO->Release();
|
|
||||||
#endif
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -216,9 +216,15 @@ const cFSPropSet& cFSPropSet::operator=(const cFSPropSet& rhs)
|
||||||
mUndefinedProps = rhs.mUndefinedProps;
|
mUndefinedProps = rhs.mUndefinedProps;
|
||||||
|
|
||||||
for (int i=0; i < PROP_NUMITEMS; i++)
|
for (int i=0; i < PROP_NUMITEMS; i++)
|
||||||
|
{
|
||||||
if (mValidProps.ContainsItem(i) && !mUndefinedProps.ContainsItem(i))
|
if (mValidProps.ContainsItem(i) && !mUndefinedProps.ContainsItem(i))
|
||||||
GetPropAt(i)->Copy( ((cFSPropSet&)rhs).GetPropAt(i) ); // call non-const GetPropAt for rhs
|
{
|
||||||
|
GetPropAt(i)->Copy( ((cFSPropSet&)rhs).GetPropAt(i) );
|
||||||
|
// call non-const GetPropAt for rhs
|
||||||
// don't want it to assert ContainsItem
|
// don't want it to assert ContainsItem
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,96 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
// fspropset_t.cpp -- FSPropSet test driver
|
|
||||||
#include "stdfs.h"
|
|
||||||
#include "fspropset.h"
|
|
||||||
#include "test/test.h"
|
|
||||||
#include "core/debug.h"
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
// PrintPropVector -- function that prints the contents of a cFCOPropVector
|
|
||||||
// TODO: We might want to add this functionality to the property vector some
|
|
||||||
// day...
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
static void PrintPropVector(const cFCOPropVector& v, cDebug& d)
|
|
||||||
{
|
|
||||||
TOSTRINGSTREAM stream;
|
|
||||||
for(int i=0; i<v.GetSize(); i++)
|
|
||||||
{
|
|
||||||
if(v.ContainsItem(i))
|
|
||||||
stream << i << "," << " ";
|
|
||||||
}
|
|
||||||
stream << std::ends;
|
|
||||||
d.TraceDebug("%s\n", stream.str().c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void TestFSPropSet()
|
|
||||||
{
|
|
||||||
cDebug d("TestFSPropSet");
|
|
||||||
|
|
||||||
cFSPropSet propSet;
|
|
||||||
|
|
||||||
// mess around with inode...
|
|
||||||
d.TraceDebug("Setting Inode (property %d)\n", cFSPropSet::PROP_INODE);
|
|
||||||
propSet.SetInode(53);
|
|
||||||
TEST(propSet.GetInode() == 53);
|
|
||||||
d.TraceDebug("Valid Vector is now \n");
|
|
||||||
PrintPropVector(propSet.GetValidVector(), d);
|
|
||||||
TEST(cFSPropSet::PROP_INODE == propSet.GetPropIndex(_T("Inode Number")));
|
|
||||||
TEST(TSTRING(_T("Inode Number")).compare(propSet.GetPropName(cFSPropSet::PROP_INODE)) == 0);
|
|
||||||
|
|
||||||
// mess around with blocks...
|
|
||||||
d.TraceDebug("Setting Blocks (property %d)\n", cFSPropSet::PROP_BLOCKS);
|
|
||||||
propSet.SetBlocks(50);
|
|
||||||
TEST(propSet.GetBlocks() == 50);
|
|
||||||
d.TraceDebug("Valid Vector is now \n");
|
|
||||||
PrintPropVector(propSet.GetValidVector(), d);
|
|
||||||
TEST(cFSPropSet::PROP_BLOCKS == propSet.GetPropIndex(_T("Blocks")));
|
|
||||||
TEST(TSTRING(_T("Blocks")).compare(propSet.GetPropName(cFSPropSet::PROP_BLOCKS)) == 0);
|
|
||||||
|
|
||||||
// try copying it...
|
|
||||||
cFSPropSet ps2 = propSet;
|
|
||||||
d.TraceDebug("Copied Object's Valid Vector:\n");
|
|
||||||
PrintPropVector(propSet.GetValidVector(), d);
|
|
||||||
TEST(ps2.GetValidVector() == propSet.GetValidVector());
|
|
||||||
TEST(ps2.GetBlocks() == propSet.GetBlocks());
|
|
||||||
TEST(ps2.GetInode() == propSet.GetInode());
|
|
||||||
|
|
||||||
// try invalidating properties...
|
|
||||||
propSet.InvalidateProp(cFSPropSet::PROP_INODE);
|
|
||||||
TEST( propSet.GetValidVector().ContainsItem(cFSPropSet::PROP_INODE) == false );
|
|
||||||
propSet.InvalidateAll();
|
|
||||||
cFCOPropVector emptyVector(propSet.GetValidVector().GetSize());
|
|
||||||
TEST(propSet.GetValidVector() == emptyVector);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -98,12 +98,10 @@ static void SiggenInit()
|
||||||
#endif
|
#endif
|
||||||
iFSServices::SetInstance( &fss );
|
iFSServices::SetInstance( &fss );
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// set up an error bucket that will spit things to stderr
|
// set up an error bucket that will spit things to stderr
|
||||||
//
|
//
|
||||||
et.SetChild( &er );
|
et.SetChild( &er );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int __cdecl _tmain(int argc, const TCHAR** argv)
|
int __cdecl _tmain(int argc, const TCHAR** argv)
|
||||||
|
@ -186,7 +184,6 @@ int __cdecl _tmain(int argc, const TCHAR** argv)
|
||||||
ret = siggen.Execute();
|
ret = siggen.Execute();
|
||||||
|
|
||||||
} //end try block
|
} //end try block
|
||||||
|
|
||||||
catch (eError& error)
|
catch (eError& error)
|
||||||
{
|
{
|
||||||
cErrorReporter::PrintErrorMsg(error);
|
cErrorReporter::PrintErrorMsg(error);
|
||||||
|
@ -195,7 +192,6 @@ int __cdecl _tmain(int argc, const TCHAR** argv)
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}//end MAIN
|
}//end MAIN
|
||||||
|
|
||||||
|
|
|
@ -280,11 +280,12 @@ bool cPolicyUpdate::Execute( uint32 flags ) // throw (eError)
|
||||||
|
|
||||||
uint32 updateDBFlags = cUpdateDb::FLAG_REPLACE_PROPS;
|
uint32 updateDBFlags = cUpdateDb::FLAG_REPLACE_PROPS;
|
||||||
if( flags & FLAG_ERASE_FOOTPRINTS_PU )
|
if( flags & FLAG_ERASE_FOOTPRINTS_PU )
|
||||||
|
{
|
||||||
updateDBFlags |= cUpdateDb::FLAG_ERASE_FOOTPRINTS_UD;
|
updateDBFlags |= cUpdateDb::FLAG_ERASE_FOOTPRINTS_UD;
|
||||||
|
}
|
||||||
|
|
||||||
update.Execute( updateDBFlags );
|
update.Execute( updateDBFlags );
|
||||||
|
|
||||||
|
|
||||||
// the last thing that we have to do is to remove everything that is still
|
// the last thing that we have to do is to remove everything that is still
|
||||||
// in the database that does not belong in the new database (ie -- does not fall under any
|
// in the database that does not belong in the new database (ie -- does not fall under any
|
||||||
// new rules)
|
// new rules)
|
||||||
|
@ -299,8 +300,9 @@ bool cPolicyUpdate::Execute( uint32 flags ) // throw (eError)
|
||||||
i.SetErrorBucket(mpBucket);
|
i.SetErrorBucket(mpBucket);
|
||||||
|
|
||||||
if( flags & FLAG_ERASE_FOOTPRINTS_PU )
|
if( flags & FLAG_ERASE_FOOTPRINTS_PU )
|
||||||
|
{
|
||||||
i.SetIterFlags( iFCODataSourceIter::DO_NOT_MODIFY_OBJECTS );
|
i.SetIterFlags( iFCODataSourceIter::DO_NOT_MODIFY_OBJECTS );
|
||||||
|
}
|
||||||
const cFCOSpecListCanonicalIter newPolIter( mNewPolicy );
|
const cFCOSpecListCanonicalIter newPolIter( mNewPolicy );
|
||||||
util_PruneExtraObjects( i, newPolIter );
|
util_PruneExtraObjects( i, newPolIter );
|
||||||
|
|
||||||
|
|
|
@ -1,300 +0,0 @@
|
||||||
//
|
|
||||||
// The developer of the original code and/or files is Tripwire, Inc.
|
|
||||||
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
|
||||||
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
|
||||||
// reserved.
|
|
||||||
//
|
|
||||||
// This program is free software. The contents of this file are subject
|
|
||||||
// to the terms of the GNU General Public License as published by the
|
|
||||||
// Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
// option) any later version. You may redistribute it and/or modify it
|
|
||||||
// only in compliance with the GNU General Public License.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful.
|
|
||||||
// However, this program is distributed AS-IS WITHOUT ANY
|
|
||||||
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
|
||||||
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
|
||||||
// for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
||||||
// USA.
|
|
||||||
//
|
|
||||||
// Nothing in the GNU General Public License or any other license to use
|
|
||||||
// the code or files shall permit you to use Tripwire's trademarks,
|
|
||||||
// service marks, or other intellectual property without Tripwire's
|
|
||||||
// prior written consent.
|
|
||||||
//
|
|
||||||
// If you have any questions, please contact Tripwire, Inc. at either
|
|
||||||
// info@tripwire.org or www.tripwire.org.
|
|
||||||
//
|
|
||||||
// dbdatasource_t.cpp
|
|
||||||
#include "stdtw.h"
|
|
||||||
#include "dbdatasource.h"
|
|
||||||
#include "db/hierdatabase.h"
|
|
||||||
#include "core/fsservices.h"
|
|
||||||
#include "core/debug.h"
|
|
||||||
#include "core/error.h"
|
|
||||||
#include "fco/fcopropvector.h"
|
|
||||||
#include "fco/fcopropset.h"
|
|
||||||
#include "fco/fcoprop.h"
|
|
||||||
#include "fco/fco.h"
|
|
||||||
|
|
||||||
static void GetNoun( TSTRING& noun )
|
|
||||||
{
|
|
||||||
static TSTRING prevNoun;
|
|
||||||
TCIN >> noun;
|
|
||||||
if( noun.compare( _T("!$") ) == 0 )
|
|
||||||
{
|
|
||||||
noun = prevNoun;
|
|
||||||
}
|
|
||||||
prevNoun = noun;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// TODO -- implement this with the prop displayer as well!
|
|
||||||
//
|
|
||||||
static void PrintFCO( const iFCO* pFCO )
|
|
||||||
{
|
|
||||||
TCOUT.setf(std::ios::left);
|
|
||||||
|
|
||||||
TCOUT << "------- " << pFCO->GetName().AsString() << " -------" << std::endl;
|
|
||||||
//
|
|
||||||
// iterate over all of the properties
|
|
||||||
//
|
|
||||||
const iFCOPropSet* pPropSet = pFCO->GetPropSet();
|
|
||||||
cFCOPropVector v = pPropSet->GetValidVector();
|
|
||||||
for( int i=0; i < pPropSet->GetNumProps(); i++ )
|
|
||||||
{
|
|
||||||
if( v.ContainsItem( i ) )
|
|
||||||
{
|
|
||||||
TCOUT << "[";
|
|
||||||
TCOUT.width(2);
|
|
||||||
TCOUT << i << "]" ;
|
|
||||||
TCOUT.width(25);
|
|
||||||
TCOUT << pPropSet->GetPropName(i);
|
|
||||||
TCOUT.width(0);
|
|
||||||
TCOUT << pPropSet->GetPropAt( i )->AsString() << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
TCOUT << "--------------------------------------------" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void TestDbDataSource()
|
|
||||||
{
|
|
||||||
cDebug d("TestDbDataSource");
|
|
||||||
cHierDatabase db;
|
|
||||||
|
|
||||||
const TSTRING dbName = _T("c:/tmp/tw.db");
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// TODO -- get the case sensitiveness and delimiting char out of the factory instead of iFSServices
|
|
||||||
//
|
|
||||||
TCOUT << _T("Opening database ") << dbName << std::endl;
|
|
||||||
db.Open( dbName, 5, false );
|
|
||||||
cDbDataSourceIter iter( &db );
|
|
||||||
|
|
||||||
////////////////////////////
|
|
||||||
// the main event loop...
|
|
||||||
////////////////////////////
|
|
||||||
while( true )
|
|
||||||
{
|
|
||||||
TSTRING verb, noun;
|
|
||||||
TCOUT << _T(">>");
|
|
||||||
TCIN >> verb;
|
|
||||||
//
|
|
||||||
// ok, now we switch on the command...
|
|
||||||
//
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
// quit
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
if( verb.compare( _T("quit") ) == 0 )
|
|
||||||
{
|
|
||||||
// the quit command...
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
// print
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
if( verb.compare( _T("print") ) == 0 )
|
|
||||||
{
|
|
||||||
GetNoun(noun);
|
|
||||||
if( iter.SeekTo( noun.c_str() ) )
|
|
||||||
{
|
|
||||||
if( iter.HasFCOData() )
|
|
||||||
{
|
|
||||||
iFCO* pFCO = iter.CreateFCO();
|
|
||||||
PrintFCO( pFCO );
|
|
||||||
pFCO->Release();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TCOUT << "Object has no data associated with it." << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TCOUT << "Unable to find object " << noun << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
// mkdir
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
else if( verb.compare( _T("mkdir") ) == 0 )
|
|
||||||
{
|
|
||||||
GetNoun(noun);
|
|
||||||
TCOUT << "Making a child of " << noun << std::endl;
|
|
||||||
if( iter.SeekTo( noun.c_str() ) )
|
|
||||||
{
|
|
||||||
iter.AddChildArray();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TCOUT << "Unable to find object " << noun << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
// mk
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
else if( verb.compare( _T("mk") ) == 0 )
|
|
||||||
{
|
|
||||||
GetNoun(noun);
|
|
||||||
TCOUT << "Making object " << noun << std::endl;
|
|
||||||
if( iter.SeekTo( noun.c_str() ) )
|
|
||||||
{
|
|
||||||
TCOUT << "Error: object already exists!" << std::endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
iter.AddFCO( noun, 0 ); // add a null fco for now
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
// rmdir
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
// TODO -- still needs to be implemented in the iterator class!
|
|
||||||
//
|
|
||||||
/*
|
|
||||||
else if( verb.compare( _T("rmdir") ) == 0 )
|
|
||||||
{
|
|
||||||
GetNoun(noun);
|
|
||||||
TCOUT << "Removing the child of " << noun << std::endl;
|
|
||||||
if( iter.SeekTo( noun.c_str() ) )
|
|
||||||
{
|
|
||||||
//TODO -- check that it has an empty child
|
|
||||||
iter.DeleteChildArray();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TCOUT << "Unable to find object " << noun << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
// rm
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
else if( verb.compare( _T("rm") ) == 0 )
|
|
||||||
{
|
|
||||||
GetNoun(noun);
|
|
||||||
TCOUT << "Removing object " << noun << std::endl;
|
|
||||||
if( iter.SeekTo( noun.c_str() ) )
|
|
||||||
{
|
|
||||||
if( iter.CanDescend() )
|
|
||||||
{
|
|
||||||
TCOUT << "Can't delete object; it still has children." << std::endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
iter.RemoveFCO();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TCOUT << "Unable to find object " << noun << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
// pwd
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
else if( verb.compare( _T("pwd") ) == 0 )
|
|
||||||
{
|
|
||||||
TCOUT << iter.GetParentName().AsString() << std::endl;
|
|
||||||
}
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
// ls
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
else if( verb.compare( _T("ls") ) == 0 )
|
|
||||||
{
|
|
||||||
int cnt = 0;
|
|
||||||
for( iter.SeekBegin(); ! iter.Done(); iter.Next(), cnt++ )
|
|
||||||
{
|
|
||||||
TCOUT << "[" << cnt ;
|
|
||||||
if( iter.CanDescend() )
|
|
||||||
{
|
|
||||||
TCOUT << "]*\t" ;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TCOUT << "]\t" ;
|
|
||||||
}
|
|
||||||
TCOUT << iter.GetShortName() << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
// cd
|
|
||||||
//-----------------------------------------------------------------
|
|
||||||
else if( verb.compare( _T("cd") ) == 0 )
|
|
||||||
{
|
|
||||||
GetNoun(noun);
|
|
||||||
if( noun.compare( _T("..") ) == 0 )
|
|
||||||
{
|
|
||||||
if( iter.AtRoot() )
|
|
||||||
{
|
|
||||||
TCOUT << "Can't ascend above root." << std::endl;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TCOUT << "Ascending..." << std::endl;
|
|
||||||
iter.Ascend();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if( iter.SeekTo( noun.c_str() ) )
|
|
||||||
{
|
|
||||||
if( iter.CanDescend() )
|
|
||||||
{
|
|
||||||
TCOUT << "Descending into " << noun << std::endl;
|
|
||||||
iter.Descend();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TCOUT << noun << " has no children; can't descend." << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TCOUT << "Unable to find object " << noun << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// make sure the file is still valid...
|
|
||||||
//
|
|
||||||
#ifdef _BLOCKFILE_DEBUG
|
|
||||||
db.AssertAllBlocksValid() ;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
TCOUT << "Exiting..." << std::endl;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
catch( eError& e )
|
|
||||||
{
|
|
||||||
d.TraceError("*** Caught error: %d %s\n", e.GetID(), e.GetMsg().c_str() );
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1784,7 +1784,6 @@ bool cEmailReportViewer::IgnoreThisSpec(const cFCOSpecAttr *attr)
|
||||||
if (mbForceFullReport)
|
if (mbForceFullReport)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
||||||
// loop through all email addresses for this spec
|
// loop through all email addresses for this spec
|
||||||
cFCOSpecAttrEmailIter emailIter(*attr);
|
cFCOSpecAttrEmailIter emailIter(*attr);
|
||||||
for(emailIter.SeekBegin(); ! emailIter.Done(); emailIter.Next())
|
for(emailIter.SeekBegin(); ! emailIter.Done(); emailIter.Next())
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
# define DEBUG_STR _T("")
|
# define DEBUG_STR _T("")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define TSS_PRODUCT_NAME _T("Open Source Tripwire(R) 2.4.3.0.")
|
#define TSS_PRODUCT_NAME _T("Open Source Tripwire(R) 2.4.3.1.")
|
||||||
|
|
||||||
#define TSS_COPYRIGHT_NOTICE \
|
#define TSS_COPYRIGHT_NOTICE \
|
||||||
_T("Open Source Tripwire 2.4 Portions copyright 2000 Tripwire, Inc. Tripwire is a registered\n\
|
_T("Open Source Tripwire 2.4 Portions copyright 2000 Tripwire, Inc. Tripwire is a registered\n\
|
||||||
|
@ -158,7 +158,7 @@ TSS_BeginStringtable( cTW )
|
||||||
TSS_StringEntry( tw::STR_WRITE_REPORT_FILE, _T("Wrote report file: ") ),
|
TSS_StringEntry( tw::STR_WRITE_REPORT_FILE, _T("Wrote report file: ") ),
|
||||||
TSS_StringEntry( tw::STR_WRITE_CONFIG_FILE, _T("Wrote configuration file: ") ),
|
TSS_StringEntry( tw::STR_WRITE_CONFIG_FILE, _T("Wrote configuration file: ") ),
|
||||||
|
|
||||||
TSS_StringEntry( tw::STR_REPORT_TITLE, _T("Open Source Tripwire(R) 2.4.3.0 Integrity Check Report") ),
|
TSS_StringEntry( tw::STR_REPORT_TITLE, _T("Open Source Tripwire(R) 2.4.3.1 Integrity Check Report") ),
|
||||||
TSS_StringEntry( tw::STR_R_GENERATED_BY, _T("Report generated by: ") ),
|
TSS_StringEntry( tw::STR_R_GENERATED_BY, _T("Report generated by: ") ),
|
||||||
TSS_StringEntry( tw::STR_R_CREATED_ON, _T("Report created on: ") ),
|
TSS_StringEntry( tw::STR_R_CREATED_ON, _T("Report created on: ") ),
|
||||||
TSS_StringEntry( tw::STR_DB_CREATED_ON, _T("Database generated on: ") ),
|
TSS_StringEntry( tw::STR_DB_CREATED_ON, _T("Database generated on: ") ),
|
||||||
|
@ -219,7 +219,7 @@ TSS_BeginStringtable( cTW )
|
||||||
TSS_StringEntry( tw::STR_REMOVED_SHORT, _T("R") ),
|
TSS_StringEntry( tw::STR_REMOVED_SHORT, _T("R") ),
|
||||||
TSS_StringEntry( tw::STR_CHANGED_SHORT, _T("C") ),
|
TSS_StringEntry( tw::STR_CHANGED_SHORT, _T("C") ),
|
||||||
|
|
||||||
TSS_StringEntry( tw::STR_DBPRINT_TITLE, _T("Open Source Tripwire(R) 2.4.3.0 Database") ),
|
TSS_StringEntry( tw::STR_DBPRINT_TITLE, _T("Open Source Tripwire(R) 2.4.3.1 Database") ),
|
||||||
TSS_StringEntry( tw::STR_DB_GENERATED_BY, _T("Database generated by: ") ),
|
TSS_StringEntry( tw::STR_DB_GENERATED_BY, _T("Database generated by: ") ),
|
||||||
TSS_StringEntry( tw::STR_TOTAL_NUM_FILES, _T("Total number of objects: ") ),
|
TSS_StringEntry( tw::STR_TOTAL_NUM_FILES, _T("Total number of objects: ") ),
|
||||||
TSS_StringEntry( tw::STR_END_OF_DB, _T("*** End of database ***") ),
|
TSS_StringEntry( tw::STR_END_OF_DB, _T("*** End of database ***") ),
|
||||||
|
|
|
@ -136,7 +136,7 @@ void cPolicyParser::Execute( cGenreSpecListVector& policy, cErrorBucket* pError
|
||||||
// it doesn't look at any args following pszErr
|
// it doesn't look at any args following pszErr
|
||||||
// Only call this with fully formatted message
|
// Only call this with fully formatted message
|
||||||
// Parser will ALWAYS call the narrow-char version, so special case Unicode compile
|
// Parser will ALWAYS call the narrow-char version, so special case Unicode compile
|
||||||
void tw_yy_scan::yyerror( char* pszErr, ... ) //throw( eParserHelper )
|
void tw_yy_scan::yyerror( const char* pszErr, ... ) //throw( eParserHelper )
|
||||||
{
|
{
|
||||||
TOSTRINGSTREAM ssError; // final error string
|
TOSTRINGSTREAM ssError; // final error string
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ public:
|
||||||
|
|
||||||
virtual int yygetc() { return mIn.get(); };
|
virtual int yygetc() { return mIn.get(); };
|
||||||
|
|
||||||
virtual void yyerror( char *pszErr, ... ); //throw( eParserHelper )
|
virtual void yyerror( const char *pszErr, ... ); //throw( eParserHelper )
|
||||||
// this is the MKS error function. But, since some operating systems (e.g. like AIX)
|
// this is the MKS error function. But, since some operating systems (e.g. like AIX)
|
||||||
// don't offer a vnsprintf, so there's no way we can safely output the error
|
// don't offer a vnsprintf, so there's no way we can safely output the error
|
||||||
// from the va_arg list to a string without possible buffer overflow.
|
// from the va_arg list to a string without possible buffer overflow.
|
||||||
|
|
|
@ -624,7 +624,7 @@ yy_scan::~yy_scan()
|
||||||
|
|
||||||
// Print error message, showing current line number
|
// Print error message, showing current line number
|
||||||
void
|
void
|
||||||
yy_scan::yyerror(char *fmt, ...)
|
yy_scan::yyerror(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
|
|
||||||
|
@ -977,9 +977,7 @@ yy_scan::yylex()
|
||||||
std::string strError;
|
std::string strError;
|
||||||
strError = FormatSyntaxError( yytext[0], "The global section only accepts statements of the form:\n variable = value;\n" );
|
strError = FormatSyntaxError( yytext[0], "The global section only accepts statements of the form:\n variable = value;\n" );
|
||||||
|
|
||||||
// MKS defines yyerror with char*, for some stupid reason,
|
yyerror( strError.c_str());
|
||||||
// so cast it away
|
|
||||||
yyerror( const_cast<char*>( strError.c_str() ) );
|
|
||||||
} /* catches anything that cannot be deemed a variable definition and exits. */
|
} /* catches anything that cannot be deemed a variable definition and exits. */
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
|
@ -1145,9 +1143,7 @@ yy_scan::yylex()
|
||||||
std::string strError;
|
std::string strError;
|
||||||
strError = FormatSyntaxError( yytext[0] );
|
strError = FormatSyntaxError( yytext[0] );
|
||||||
|
|
||||||
// MKS defines yyerror with char*, for some stupid reason,
|
yyerror( strError.c_str() );
|
||||||
// so cast it away
|
|
||||||
yyerror( const_cast<char*>( strError.c_str() ) );
|
|
||||||
} /* catches anything else that's not in here and quits */
|
} /* catches anything else that's not in here and quits */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -130,16 +130,16 @@ public:
|
||||||
|
|
||||||
virtual int yywrap() { return 1; } // EOF processing
|
virtual int yywrap() { return 1; } // EOF processing
|
||||||
|
|
||||||
virtual void yyerror(char *,...); // print error message
|
virtual void yyerror(const char *,...); // print error message
|
||||||
|
|
||||||
virtual void output(int c) { putc(c, yyout); }
|
virtual void output(int c) { putc(c, yyout); }
|
||||||
|
|
||||||
#ifdef YYEXIT
|
#ifdef YYEXIT
|
||||||
virtual void YY_FATAL(char * msg) { // print message and set error flag
|
virtual void YY_FATAL(const char * msg) { // print message and set error flag
|
||||||
yyerror(msg); yyLexFatal = 1;
|
yyerror(msg); yyLexFatal = 1;
|
||||||
}
|
}
|
||||||
#else // YYEXIT
|
#else // YYEXIT
|
||||||
virtual void YY_FATAL(char * msg) { // print message and stop
|
virtual void YY_FATAL(const char * msg) { // print message and stop
|
||||||
yyerror(msg); exit(1);
|
yyerror(msg); exit(1);
|
||||||
}
|
}
|
||||||
#endif // YYEXIT
|
#endif // YYEXIT
|
||||||
|
|
|
@ -176,25 +176,25 @@ yyNamedType yyTokenTypes[] = {
|
||||||
#endif
|
#endif
|
||||||
static short yydef[] = {
|
static short yydef[] = {
|
||||||
|
|
||||||
65535, 65531, 9, 53, 65527, 3, 65523, 10, 7, 65519,
|
(short)65535, (short)65531, 9, 53, (short)65527, 3, (short)65523, 10, 7, (short)65519,
|
||||||
5, 4, 65515, 50, 65509, 8, 65505, -35
|
5, 4, (short)65515, 50, (short)65509, 8, (short)65505, -35
|
||||||
};
|
};
|
||||||
static short yyex[] = {
|
static short yyex[] = {
|
||||||
|
|
||||||
0, 52, 65535, 1, 288, 18, 65535, 13, 0, 0,
|
0, 52, (short)65535, 1, 288, 18, (short)65535, 13, 0, 0,
|
||||||
65535, 1, 259, 49, 65535, 1, 262, 6, 65535, 1,
|
(short)65535, 1, 259, 49, (short)65535, 1, 262, 6, (short)65535, 1,
|
||||||
275, 52, 276, 52, 65535, 1, 276, 51, 65535, 1,
|
275, 52, 276, 52, (short)65535, 1, 276, 51, (short)65535, 1,
|
||||||
264, 52, 65535, 1, 276, 52, 65535, 1
|
264, 52, (short)65535, 1, 276, 52, (short)65535, 1
|
||||||
};
|
};
|
||||||
static short yyact[] = {
|
static short yyact[] = {
|
||||||
|
|
||||||
65499, 65534, 65455, 65490, 65491, 65497, 65498, 65495, 65496, 65489,
|
(short)65499, (short)65534, (short)65455, (short)65490, (short)65491, (short)65497, (short)65498, (short)65495, (short)65496, (short)65489,
|
||||||
289, 278, 277, 274, 273, 268, 267, 262, 261, 258,
|
289, 278, 277, 274, 273, 268, 267, 262, 261, 258,
|
||||||
65487, 65503, 65490, 267, 266, 261, 65504, 258, 65487, 65490,
|
(short)65487, (short)65503, (short)65490, 267, 266, 261, (short)65504, 258, (short)65487, (short)65490,
|
||||||
267, 261, 65505, 272, 65506, 288, 65507, 288, 65461, 262,
|
267, 261, (short)65505, 272, (short)65506, 288, (short)65507, 288, (short)65461, 262,
|
||||||
65460, 262, 65459, 262, 65482, 261, 65489, 289, 65511, 284,
|
(short)65460, 262, (short)65459, 262, (short)65482, 261, (short)65489, 289, (short)65511, 284,
|
||||||
65512, 288, 65522, 257, 65513, 259, 65479, 259, 65514, 258,
|
(short)65512, 288, (short)65522, 257, (short)65513, 259, (short)65479, 259, (short)65514, 258,
|
||||||
65462, 263, 65470, 275, 65474, 259, 65464, 276, 65463, 264, -1
|
(short)65462, 263, (short)65470, 275, (short)65474, 259, (short)65464, 276, (short)65463, 264, -1
|
||||||
};
|
};
|
||||||
static short yypact[] = {
|
static short yypact[] = {
|
||||||
|
|
||||||
|
@ -206,15 +206,15 @@ static short yypact[] = {
|
||||||
};
|
};
|
||||||
static short yygo[] = {
|
static short yygo[] = {
|
||||||
|
|
||||||
65471, 65476, 65477, 13, 65529, 65515, 65509, 21, 65473, 65472,
|
(short)65471, (short)65476, (short)65477, 13, (short)65529, (short)65515, (short)65509, 21, (short)65473, (short)65472,
|
||||||
65492, 44, 65508, 65478, 65483, 65483, 65483, 65483, 65480, 65483,
|
(short)65492, 44, (short)65508, (short)65478, (short)65483, (short)65483, (short)65483, (short)65483, (short)65480, (short)65483,
|
||||||
65480, 65481, 65480, 65481, 65465, 65466, 65467, 65484, 40, 39,
|
(short)65480, (short)65481, (short)65480, (short)65481, (short)65465, (short)65466, (short)65467, (short)65484, 40, 39,
|
||||||
38, 37, 36, 24, 21, 15, 13, 11, 8, 7,
|
38, 37, 36, 24, 21, 15, 13, 11, 8, 7,
|
||||||
2, 65520, 65524, 65527, 65528, 65533, 32, 30, 28, 23,
|
2, (short)65520, (short)65524, (short)65527, (short)65528, (short)65533, 32, 30, 28, 23,
|
||||||
65525, 65488, 65510, 65494, 31, 65485, 65486, 65493, 29, 10,
|
(short)65525, (short)65488, (short)65510, (short)65494, 31, (short)65485, (short)65486, (short)65493, 29, 10,
|
||||||
65468, 65469, 24, 65530, 65526, 65531, 65521, 65517, 65452, 65458,
|
(short)65468, (short)65469, 24, (short)65530, (short)65526, (short)65531, (short)65521, (short)65517, (short)65452, (short)65458,
|
||||||
17, 16, 12, 65532, 65457, 65456, 3, 65502, 65501, 65500,
|
17, 16, 12, (short)65532, (short)65457, (short)65456, 3, (short)65502, (short)65501, (short)65500,
|
||||||
65454, 65453, 65519, 65523, 65516, 65518, 65475, -1
|
(short)65454, (short)65453, (short)65519, (short)65523, (short)65516, (short)65518, (short)65475, -1
|
||||||
};
|
};
|
||||||
static short yypgo[] = {
|
static short yypgo[] = {
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
AUTOMAKE_OPTIONS = foreign no-dependencies
|
||||||
|
AM_INSTALL_PROGRAM_FLAGS = -m 755
|
||||||
|
|
||||||
|
INCLUDES = -I..
|
||||||
|
LIBS = -ltripwire -lcryptlib @LIBS@
|
||||||
|
LDFLAGS = @LDFLAGS@ -L../../lib
|
||||||
|
LN_S = @LN@
|
||||||
|
|
||||||
|
sbin_PROGRAMS = twtest
|
||||||
|
twtest_SOURCES = \
|
||||||
|
archive_t.cpp \
|
||||||
|
charutil_t.cpp \
|
||||||
|
cmdlineparser_t.cpp \
|
||||||
|
codeconvert_t.cpp \
|
||||||
|
configfile_t.cpp \
|
||||||
|
cryptoarchive_t.cpp \
|
||||||
|
crytpo_t.cpp \
|
||||||
|
dbdatasource_t.cpp \
|
||||||
|
debug_t.cpp \
|
||||||
|
displayencoder_t.cpp \
|
||||||
|
error_t.cpp \
|
||||||
|
errorbucketimpl_t.cpp \
|
||||||
|
fcocompare_t.cpp \
|
||||||
|
fcodatabasefile_t.cpp \
|
||||||
|
fconame_t.cpp \
|
||||||
|
fconametbl_t.cpp \
|
||||||
|
fconametranslator_t.cpp \
|
||||||
|
fcopropimpl_t.cpp \
|
||||||
|
fcopropvector_t.cpp \
|
||||||
|
fcoreport_t.cpp \
|
||||||
|
fcosetimpl_t.cpp \
|
||||||
|
fcospec_t.cpp \
|
||||||
|
fcospecattr_t.cpp \
|
||||||
|
fcospechelper_t.cpp \
|
||||||
|
fcospeclist_t.cpp \
|
||||||
|
fcospecutil_t.cpp \
|
||||||
|
file_t.cpp \
|
||||||
|
fileheader_t.cpp \
|
||||||
|
fileutil_t.cpp \
|
||||||
|
fsdatasourceiter_t.cpp \
|
||||||
|
fsobject_t.cpp \
|
||||||
|
fspropcalc_t.cpp \
|
||||||
|
fspropdisplayer_t.cpp \
|
||||||
|
fspropset_t.cpp \
|
||||||
|
fsspec_t.cpp \
|
||||||
|
genre_t.cpp \
|
||||||
|
genrespeclist_t.cpp \
|
||||||
|
genreswitcher_t.cpp \
|
||||||
|
growheap_t.cpp \
|
||||||
|
hashtable_t.cpp \
|
||||||
|
keyfile_t.cpp \
|
||||||
|
objectpool_t.cpp \
|
||||||
|
platform_t.cpp \
|
||||||
|
policyparser_t.cpp \
|
||||||
|
refcountobj_t.cpp \
|
||||||
|
resources_t.cpp \
|
||||||
|
serializer_t.cpp \
|
||||||
|
serializerimpl_t.cpp \
|
||||||
|
signature_t.cpp \
|
||||||
|
srefcountobj_t.cpp \
|
||||||
|
stdtest.cpp \
|
||||||
|
stdtest.h \
|
||||||
|
stringencoder_t.cpp \
|
||||||
|
tasktimer_t.cpp \
|
||||||
|
tchar_t.cpp \
|
||||||
|
test.cpp \
|
||||||
|
test.h \
|
||||||
|
textreportviewer_t.cpp \
|
||||||
|
twlocale_t.cpp \
|
||||||
|
twutil_t.cpp \
|
||||||
|
types_t.cpp \
|
||||||
|
unixfsservices_t.cpp \
|
||||||
|
usernotifystdout_t.cpp \
|
||||||
|
wchar16_t.cpp
|
||||||
|
|
||||||
|
DEFS = @DEFS@ # This gets rid of the -I. so INCLUDES must be more explicit
|
||||||
|
CLEANFILES = ../../bin/twtest
|
||||||
|
|
||||||
|
all: $(sbin_PROGRAMS)
|
||||||
|
@test -d ../../bin && $(LN) -f $(sbin_PROGRAMS) ../../bin
|
|
@ -0,0 +1,519 @@
|
||||||
|
# Makefile.in generated by automake 1.8.5 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004 Free Software Foundation, Inc.
|
||||||
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
SOURCES = $(twtest_SOURCES)
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
top_builddir = ../..
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
|
install_sh_SCRIPT = $(install_sh) -c
|
||||||
|
INSTALL_HEADER = $(INSTALL_DATA)
|
||||||
|
transform = $(program_transform_name)
|
||||||
|
NORMAL_INSTALL = :
|
||||||
|
PRE_INSTALL = :
|
||||||
|
POST_INSTALL = :
|
||||||
|
NORMAL_UNINSTALL = :
|
||||||
|
PRE_UNINSTALL = :
|
||||||
|
POST_UNINSTALL = :
|
||||||
|
host_triplet = @host@
|
||||||
|
sbin_PROGRAMS = twtest$(EXEEXT)
|
||||||
|
subdir = src/twtest
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||||
|
$(top_srcdir)/configure.in
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||||
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
am__installdirs = "$(DESTDIR)$(sbindir)"
|
||||||
|
sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||||
|
PROGRAMS = $(sbin_PROGRAMS)
|
||||||
|
am_twtest_OBJECTS = archive_t.$(OBJEXT) charutil_t.$(OBJEXT) \
|
||||||
|
cmdlineparser_t.$(OBJEXT) codeconvert_t.$(OBJEXT) \
|
||||||
|
configfile_t.$(OBJEXT) cryptoarchive_t.$(OBJEXT) \
|
||||||
|
crytpo_t.$(OBJEXT) dbdatasource_t.$(OBJEXT) debug_t.$(OBJEXT) \
|
||||||
|
displayencoder_t.$(OBJEXT) error_t.$(OBJEXT) \
|
||||||
|
errorbucketimpl_t.$(OBJEXT) fcocompare_t.$(OBJEXT) \
|
||||||
|
fcodatabasefile_t.$(OBJEXT) fconame_t.$(OBJEXT) \
|
||||||
|
fconametbl_t.$(OBJEXT) fconametranslator_t.$(OBJEXT) \
|
||||||
|
fcopropimpl_t.$(OBJEXT) fcopropvector_t.$(OBJEXT) \
|
||||||
|
fcoreport_t.$(OBJEXT) fcosetimpl_t.$(OBJEXT) \
|
||||||
|
fcospec_t.$(OBJEXT) fcospecattr_t.$(OBJEXT) \
|
||||||
|
fcospechelper_t.$(OBJEXT) fcospeclist_t.$(OBJEXT) \
|
||||||
|
fcospecutil_t.$(OBJEXT) file_t.$(OBJEXT) \
|
||||||
|
fileheader_t.$(OBJEXT) fileutil_t.$(OBJEXT) \
|
||||||
|
fsdatasourceiter_t.$(OBJEXT) fsobject_t.$(OBJEXT) \
|
||||||
|
fspropcalc_t.$(OBJEXT) fspropdisplayer_t.$(OBJEXT) \
|
||||||
|
fspropset_t.$(OBJEXT) fsspec_t.$(OBJEXT) genre_t.$(OBJEXT) \
|
||||||
|
genrespeclist_t.$(OBJEXT) genreswitcher_t.$(OBJEXT) \
|
||||||
|
growheap_t.$(OBJEXT) hashtable_t.$(OBJEXT) keyfile_t.$(OBJEXT) \
|
||||||
|
objectpool_t.$(OBJEXT) platform_t.$(OBJEXT) \
|
||||||
|
policyparser_t.$(OBJEXT) refcountobj_t.$(OBJEXT) \
|
||||||
|
resources_t.$(OBJEXT) serializer_t.$(OBJEXT) \
|
||||||
|
serializerimpl_t.$(OBJEXT) signature_t.$(OBJEXT) \
|
||||||
|
srefcountobj_t.$(OBJEXT) stdtest.$(OBJEXT) \
|
||||||
|
stringencoder_t.$(OBJEXT) tasktimer_t.$(OBJEXT) \
|
||||||
|
tchar_t.$(OBJEXT) test.$(OBJEXT) textreportviewer_t.$(OBJEXT) \
|
||||||
|
twlocale_t.$(OBJEXT) twutil_t.$(OBJEXT) types_t.$(OBJEXT) \
|
||||||
|
unixfsservices_t.$(OBJEXT) usernotifystdout_t.$(OBJEXT) \
|
||||||
|
wchar16_t.$(OBJEXT)
|
||||||
|
twtest_OBJECTS = $(am_twtest_OBJECTS)
|
||||||
|
twtest_LDADD = $(LDADD)
|
||||||
|
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||||
|
depcomp =
|
||||||
|
am__depfiles_maybe =
|
||||||
|
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||||
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||||
|
CXXLD = $(CXX)
|
||||||
|
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
|
||||||
|
-o $@
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
SOURCES = $(twtest_SOURCES)
|
||||||
|
DIST_SOURCES = $(twtest_SOURCES)
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CORE_CRYPT_O = @CORE_CRYPT_O@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CXX = @CXX@
|
||||||
|
CXXCPP = @CXXCPP@
|
||||||
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
|
CXXFLAGS = @CXXFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@ # This gets rid of the -I. so INCLUDES must be more explicit
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
GREP = @GREP@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LDFLAGS = @LDFLAGS@ -L../../lib
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = -ltripwire -lcryptlib @LIBS@
|
||||||
|
LN = @LN@
|
||||||
|
LN_S = @LN@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
YACC = @YACC@
|
||||||
|
YFLAGS = @YFLAGS@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_CXX = @ac_ct_CXX@
|
||||||
|
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||||
|
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||||
|
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||||
|
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||||
|
am__include = @am__include@
|
||||||
|
am__leading_dot = @am__leading_dot@
|
||||||
|
am__quote = @am__quote@
|
||||||
|
bindir = @bindir@
|
||||||
|
build = @build@
|
||||||
|
build_alias = @build_alias@
|
||||||
|
build_cpu = @build_cpu@
|
||||||
|
build_os = @build_os@
|
||||||
|
build_vendor = @build_vendor@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
path_to_sendmail = @path_to_sendmail@
|
||||||
|
path_to_vi = @path_to_vi@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target = @target@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
target_cpu = @target_cpu@
|
||||||
|
target_os = @target_os@
|
||||||
|
target_vendor = @target_vendor@
|
||||||
|
AUTOMAKE_OPTIONS = foreign no-dependencies
|
||||||
|
AM_INSTALL_PROGRAM_FLAGS = -m 755
|
||||||
|
INCLUDES = -I..
|
||||||
|
twtest_SOURCES = \
|
||||||
|
archive_t.cpp \
|
||||||
|
charutil_t.cpp \
|
||||||
|
cmdlineparser_t.cpp \
|
||||||
|
codeconvert_t.cpp \
|
||||||
|
configfile_t.cpp \
|
||||||
|
cryptoarchive_t.cpp \
|
||||||
|
crytpo_t.cpp \
|
||||||
|
dbdatasource_t.cpp \
|
||||||
|
debug_t.cpp \
|
||||||
|
displayencoder_t.cpp \
|
||||||
|
error_t.cpp \
|
||||||
|
errorbucketimpl_t.cpp \
|
||||||
|
fcocompare_t.cpp \
|
||||||
|
fcodatabasefile_t.cpp \
|
||||||
|
fconame_t.cpp \
|
||||||
|
fconametbl_t.cpp \
|
||||||
|
fconametranslator_t.cpp \
|
||||||
|
fcopropimpl_t.cpp \
|
||||||
|
fcopropvector_t.cpp \
|
||||||
|
fcoreport_t.cpp \
|
||||||
|
fcosetimpl_t.cpp \
|
||||||
|
fcospec_t.cpp \
|
||||||
|
fcospecattr_t.cpp \
|
||||||
|
fcospechelper_t.cpp \
|
||||||
|
fcospeclist_t.cpp \
|
||||||
|
fcospecutil_t.cpp \
|
||||||
|
file_t.cpp \
|
||||||
|
fileheader_t.cpp \
|
||||||
|
fileutil_t.cpp \
|
||||||
|
fsdatasourceiter_t.cpp \
|
||||||
|
fsobject_t.cpp \
|
||||||
|
fspropcalc_t.cpp \
|
||||||
|
fspropdisplayer_t.cpp \
|
||||||
|
fspropset_t.cpp \
|
||||||
|
fsspec_t.cpp \
|
||||||
|
genre_t.cpp \
|
||||||
|
genrespeclist_t.cpp \
|
||||||
|
genreswitcher_t.cpp \
|
||||||
|
growheap_t.cpp \
|
||||||
|
hashtable_t.cpp \
|
||||||
|
keyfile_t.cpp \
|
||||||
|
objectpool_t.cpp \
|
||||||
|
platform_t.cpp \
|
||||||
|
policyparser_t.cpp \
|
||||||
|
refcountobj_t.cpp \
|
||||||
|
resources_t.cpp \
|
||||||
|
serializer_t.cpp \
|
||||||
|
serializerimpl_t.cpp \
|
||||||
|
signature_t.cpp \
|
||||||
|
srefcountobj_t.cpp \
|
||||||
|
stdtest.cpp \
|
||||||
|
stdtest.h \
|
||||||
|
stringencoder_t.cpp \
|
||||||
|
tasktimer_t.cpp \
|
||||||
|
tchar_t.cpp \
|
||||||
|
test.cpp \
|
||||||
|
test.h \
|
||||||
|
textreportviewer_t.cpp \
|
||||||
|
twlocale_t.cpp \
|
||||||
|
twutil_t.cpp \
|
||||||
|
types_t.cpp \
|
||||||
|
unixfsservices_t.cpp \
|
||||||
|
usernotifystdout_t.cpp \
|
||||||
|
wchar16_t.cpp
|
||||||
|
|
||||||
|
CLEANFILES = ../../bin/twtest
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .cpp .o .obj
|
||||||
|
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/twtest/Makefile'; \
|
||||||
|
cd $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --foreign src/twtest/Makefile
|
||||||
|
.PRECIOUS: Makefile
|
||||||
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
|
@case '$?' in \
|
||||||
|
*config.status*) \
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||||
|
*) \
|
||||||
|
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||||
|
esac;
|
||||||
|
|
||||||
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
|
||||||
|
$(top_srcdir)/configure: $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
install-sbinPROGRAMS: $(sbin_PROGRAMS)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)"
|
||||||
|
@list='$(sbin_PROGRAMS)'; for p in $$list; do \
|
||||||
|
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||||
|
if test -f $$p \
|
||||||
|
; then \
|
||||||
|
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||||
|
echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \
|
||||||
|
$(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \
|
||||||
|
else :; fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-sbinPROGRAMS:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(sbin_PROGRAMS)'; for p in $$list; do \
|
||||||
|
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||||
|
echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \
|
||||||
|
rm -f "$(DESTDIR)$(sbindir)/$$f"; \
|
||||||
|
done
|
||||||
|
|
||||||
|
clean-sbinPROGRAMS:
|
||||||
|
-test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
|
||||||
|
twtest$(EXEEXT): $(twtest_OBJECTS) $(twtest_DEPENDENCIES)
|
||||||
|
@rm -f twtest$(EXEEXT)
|
||||||
|
$(CXXLINK) $(twtest_LDFLAGS) $(twtest_OBJECTS) $(twtest_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
.cpp.o:
|
||||||
|
$(CXXCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
.cpp.obj:
|
||||||
|
$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
uninstall-info-am:
|
||||||
|
|
||||||
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$tags $$unique; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
tags=; \
|
||||||
|
here=`pwd`; \
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
|
unique=`for i in $$list; do \
|
||||||
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
|
done | \
|
||||||
|
$(AWK) ' { files[$$0] = 1; } \
|
||||||
|
END { for (i in files) print i; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$tags $$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& cd $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) $$here
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
case $$file in \
|
||||||
|
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||||
|
esac; \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||||
|
dir="/$$dir"; \
|
||||||
|
$(mkdir_p) "$(distdir)$$dir"; \
|
||||||
|
else \
|
||||||
|
dir=''; \
|
||||||
|
fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
fi; \
|
||||||
|
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||||
|
else \
|
||||||
|
test -f $(distdir)/$$file \
|
||||||
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
check-am: all-am
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile $(PROGRAMS)
|
||||||
|
installdirs:
|
||||||
|
for dir in "$(DESTDIR)$(sbindir)"; do \
|
||||||
|
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||||
|
done
|
||||||
|
install: install-am
|
||||||
|
install-exec: install-exec-am
|
||||||
|
install-data: install-data-am
|
||||||
|
uninstall: uninstall-am
|
||||||
|
|
||||||
|
install-am: all-am
|
||||||
|
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||||
|
|
||||||
|
installcheck: installcheck-am
|
||||||
|
install-strip:
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
`test -z '$(STRIP)' || \
|
||||||
|
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
|
||||||
|
maintainer-clean-generic:
|
||||||
|
@echo "This command is intended for maintainers to use"
|
||||||
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
clean: clean-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-sbinPROGRAMS mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-exec-am: install-sbinPROGRAMS
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-info-am uninstall-sbinPROGRAMS
|
||||||
|
|
||||||
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||||
|
clean-sbinPROGRAMS ctags distclean distclean-compile \
|
||||||
|
distclean-generic distclean-tags distdir dvi dvi-am html \
|
||||||
|
html-am info info-am install install-am install-data \
|
||||||
|
install-data-am install-exec install-exec-am install-info \
|
||||||
|
install-info-am install-man install-sbinPROGRAMS install-strip \
|
||||||
|
installcheck installcheck-am installdirs maintainer-clean \
|
||||||
|
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||||
|
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
|
||||||
|
uninstall-am uninstall-info-am uninstall-sbinPROGRAMS
|
||||||
|
|
||||||
|
|
||||||
|
all: $(sbin_PROGRAMS)
|
||||||
|
@test -d ../../bin && $(LN) -f $(sbin_PROGRAMS) ../../bin
|
||||||
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
.NOEXPORT:
|
|
@ -34,10 +34,10 @@
|
||||||
//
|
//
|
||||||
// test the archive component
|
// test the archive component
|
||||||
|
|
||||||
#include "stdcore.h"
|
#include "core/stdcore.h"
|
||||||
#include "archive.h"
|
#include "core/archive.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include "error.h"
|
#include "core/error.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
TSS_EXCEPTION(eTestArchiveError, eError);
|
TSS_EXCEPTION(eTestArchiveError, eError);
|
|
@ -35,7 +35,7 @@
|
||||||
// Creator.: Brian McFeely (bmcfeely)
|
// Creator.: Brian McFeely (bmcfeely)
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "stdcore.h"
|
#include "core/stdcore.h"
|
||||||
|
|
||||||
#ifdef TSS_TEST
|
#ifdef TSS_TEST
|
||||||
|
|
|
@ -0,0 +1,178 @@
|
||||||
|
//
|
||||||
|
// The developer of the original code and/or files is Tripwire, Inc.
|
||||||
|
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
||||||
|
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
||||||
|
// reserved.
|
||||||
|
//
|
||||||
|
// This program is free software. The contents of this file are subject
|
||||||
|
// to the terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
// option) any later version. You may redistribute it and/or modify it
|
||||||
|
// only in compliance with the GNU General Public License.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful.
|
||||||
|
// However, this program is distributed AS-IS WITHOUT ANY
|
||||||
|
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
||||||
|
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
// USA.
|
||||||
|
//
|
||||||
|
// Nothing in the GNU General Public License or any other license to use
|
||||||
|
// the code or files shall permit you to use Tripwire's trademarks,
|
||||||
|
// service marks, or other intellectual property without Tripwire's
|
||||||
|
// prior written consent.
|
||||||
|
//
|
||||||
|
// If you have any questions, please contact Tripwire, Inc. at either
|
||||||
|
// info@tripwire.org or www.tripwire.org.
|
||||||
|
//
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// cmdlineparser_t.cpp
|
||||||
|
|
||||||
|
#include "core/stdcore.h"
|
||||||
|
#include "core/cmdlineparser.h"
|
||||||
|
#include "twtest/test.h"
|
||||||
|
//#include "tw/twutil.h"
|
||||||
|
//#include "tw/twstrings.h"
|
||||||
|
|
||||||
|
const int argc1 = 9;
|
||||||
|
const TCHAR* argv1[] =
|
||||||
|
{
|
||||||
|
_T("tripwire.exe"),
|
||||||
|
_T("-m"),
|
||||||
|
_T("Init"),
|
||||||
|
_T("-tp"),
|
||||||
|
_T("one"),
|
||||||
|
_T("two"),
|
||||||
|
_T("--verbose"),
|
||||||
|
_T("frog"),
|
||||||
|
_T("cat")
|
||||||
|
};
|
||||||
|
|
||||||
|
const int argc2 = 3;
|
||||||
|
const TCHAR* argv2[] =
|
||||||
|
{
|
||||||
|
_T("tripwire.exe"),
|
||||||
|
_T("-m"),
|
||||||
|
_T("-v")
|
||||||
|
};
|
||||||
|
|
||||||
|
const int argc3 = 3;
|
||||||
|
const TCHAR* argv3[] =
|
||||||
|
{
|
||||||
|
_T("tripwire.exe"),
|
||||||
|
_T("dog"),
|
||||||
|
_T("-v"),
|
||||||
|
};
|
||||||
|
|
||||||
|
// test with the last param wanting 1 or 0 parameters :-)
|
||||||
|
const int argc4 = 5;
|
||||||
|
const TCHAR* argv4[] =
|
||||||
|
{
|
||||||
|
_T("tripwire.exe"),
|
||||||
|
_T("-tp"),
|
||||||
|
_T("-v"),
|
||||||
|
_T("frog"),
|
||||||
|
_T("cat")
|
||||||
|
};
|
||||||
|
|
||||||
|
const int argc5 = 4;
|
||||||
|
const TCHAR* argv5[] =
|
||||||
|
{
|
||||||
|
_T("tripwire.exe"),
|
||||||
|
_T("-tp"),
|
||||||
|
_T("-v"),
|
||||||
|
_T("frog")
|
||||||
|
};
|
||||||
|
|
||||||
|
static void PrintCmdLine(int argc, const TCHAR** argv, cDebug d)
|
||||||
|
{
|
||||||
|
TSTRING str;
|
||||||
|
d.TraceDebug("Testing command line:\n");
|
||||||
|
for(int i=0; i < argc; i++)
|
||||||
|
{
|
||||||
|
str += argv[i];
|
||||||
|
str += _T(" ");
|
||||||
|
}
|
||||||
|
d.TraceDebug(_T(">>>%s\n"), str.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void TestCmdLineParser()
|
||||||
|
{
|
||||||
|
enum ArgId { ID_M, ID_TP, ID_V, ID_UNNAMED };
|
||||||
|
|
||||||
|
try {
|
||||||
|
cCmdLineParser p;
|
||||||
|
p.AddArg(ID_M, TSTRING(_T("m")), TSTRING(_T("mode")), cCmdLineParser::PARAM_ONE);
|
||||||
|
p.AddArg(ID_TP, TSTRING(_T("tp")), TSTRING(_T("twoparam")), cCmdLineParser::PARAM_MANY);
|
||||||
|
p.AddArg(ID_V, TSTRING(_T("v")), TSTRING(_T("verbose")), cCmdLineParser::PARAM_NONE);
|
||||||
|
p.AddArg(ID_UNNAMED, TSTRING(_T("")), TSTRING(_T("")), cCmdLineParser::PARAM_MANY);
|
||||||
|
|
||||||
|
cDebug d("TestCmdLineParser");
|
||||||
|
|
||||||
|
PrintCmdLine(argc1, argv1, d);
|
||||||
|
p.Parse(argc1, argv1);
|
||||||
|
#ifdef _DEBUG
|
||||||
|
p.TraceContents();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
PrintCmdLine(argc2, argv2, d);
|
||||||
|
p.Parse(argc2, argv2); // should fail.
|
||||||
|
#ifdef _DEBUG
|
||||||
|
p.TraceContents();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
PrintCmdLine(argc3, argv3, d);
|
||||||
|
p.Parse(argc3, argv3); // should fail
|
||||||
|
#ifdef _DEBUG
|
||||||
|
p.TraceContents();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
PrintCmdLine(argc4, argv4, d);
|
||||||
|
p.Parse(argc4, argv4);
|
||||||
|
#ifdef _DEBUG
|
||||||
|
p.TraceContents();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
// TODO - test mutual exclusion...
|
||||||
|
|
||||||
|
cCmdLineParser::ErrorType et;
|
||||||
|
TSTRING errStr;
|
||||||
|
d.TraceDebug("** Making -m and -v mutually exclusive, then running on first cmd line...\n");
|
||||||
|
p.AddMutEx(ID_M, ID_V);
|
||||||
|
p.Parse(argc1, argv1); // should fail
|
||||||
|
p.GetErrorInfo(et, errStr);
|
||||||
|
TEST(et == cCmdLineParser::ERR_MUTUAL_EXCLUSION);
|
||||||
|
d.TraceDebug(_T("Mutual exclusion test worked; here is the error string: %s\n"), errStr.c_str());
|
||||||
|
*/
|
||||||
|
|
||||||
|
// make the command line want one parameter
|
||||||
|
d.TraceDebug("** Changing cmd line to only want one last param...\n");
|
||||||
|
p.AddArg(ID_UNNAMED, TSTRING(_T("")), TSTRING(_T("")), cCmdLineParser::PARAM_ONE);
|
||||||
|
PrintCmdLine(argc4, argv4, d);
|
||||||
|
p.Parse(argc4, argv4); // should fail
|
||||||
|
#ifdef _DEBUG
|
||||||
|
p.TraceContents();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
PrintCmdLine(argc5, argv5, d);
|
||||||
|
p.Parse(argc5, argv5);
|
||||||
|
#ifdef _DEBUG
|
||||||
|
p.TraceContents();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// TODO -- test a bunch more!!!
|
||||||
|
}
|
||||||
|
catch (eCmdLine &e)
|
||||||
|
{
|
||||||
|
TCERR << _T("Command line error: ");
|
||||||
|
TCERR << e.GetMsg() << std::endl;
|
||||||
|
//TODO... TEST(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -36,10 +36,10 @@
|
||||||
//
|
//
|
||||||
// [Description]
|
// [Description]
|
||||||
|
|
||||||
#include "stdcore.h"
|
#include "core/stdcore.h"
|
||||||
#include "codeconvert.h"
|
#include "core/codeconvert.h"
|
||||||
#include "core/wchar16.h"
|
#include "core/wchar16.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
|
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
|
||||||
|
@ -184,6 +184,8 @@ char NonZeroChar( char ch )
|
||||||
// mbchar_t to dbchar_t
|
// mbchar_t to dbchar_t
|
||||||
void TestMbToDb()
|
void TestMbToDb()
|
||||||
{
|
{
|
||||||
|
TCERR << "TODO: TestMbToDb in codeconvert_t.cpp seems to hit an infinite loop or runs verrrry long; ifdef'd" << std::endl;
|
||||||
|
#if 0
|
||||||
std::string s;
|
std::string s;
|
||||||
s.resize( 0x10000 * 2 ); // two bytes for each combination
|
s.resize( 0x10000 * 2 ); // two bytes for each combination
|
||||||
|
|
||||||
|
@ -203,7 +205,7 @@ void TestMbToDb()
|
||||||
|
|
||||||
ConvertAndCompareString( s );
|
ConvertAndCompareString( s );
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
const std::string::size_type TOTAL_VALUE_COMBINATIONS = 0x10000; // 0x100 ^ 2 (256 possible per byte, and two bytes) (must always be this value)
|
const std::string::size_type TOTAL_VALUE_COMBINATIONS = 0x10000; // 0x100 ^ 2 (256 possible per byte, and two bytes) (must always be this value)
|
||||||
const std::string::size_type CHARS_AT_A_TIME = 0x10; // can change this, but needs to be a power of 2
|
const std::string::size_type CHARS_AT_A_TIME = 0x10; // can change this, but needs to be a power of 2
|
|
@ -35,10 +35,10 @@
|
||||||
//Don't see a test driver for this module in source safe -
|
//Don't see a test driver for this module in source safe -
|
||||||
//hopefully this hasn't been implemented already! -DA
|
//hopefully this hasn't been implemented already! -DA
|
||||||
|
|
||||||
#include "stdtw.h"
|
#include "tw/stdtw.h"
|
||||||
#include "configfile.h"
|
#include "tw/configfile.h"
|
||||||
#include "core/errorbucketimpl.h"
|
#include "core/errorbucketimpl.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include "core/debug.h"
|
#include "core/debug.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "core/fsservices.h"
|
#include "core/fsservices.h"
|
|
@ -32,10 +32,10 @@
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// cryptoarchive_t.cpp -- test classes that abstract a raw byte archive
|
// cryptoarchive_t.cpp -- test classes that abstract a raw byte archive
|
||||||
|
|
||||||
#include "stdtwcrypto.h"
|
#include "twcrypto/stdtwcrypto.h"
|
||||||
#include "cryptoarchive.h"
|
#include "twcrypto/cryptoarchive.h"
|
||||||
#include "crypto.h"
|
#include "twcrypto/crypto.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
|
|
||||||
void TestCryptoArchive()
|
void TestCryptoArchive()
|
||||||
{
|
{
|
|
@ -33,10 +33,10 @@
|
||||||
// crypto-t.cpp -- generic crypto implementations
|
// crypto-t.cpp -- generic crypto implementations
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "stdtwcrypto.h"
|
#include "twcrypto/stdtwcrypto.h"
|
||||||
#include "crypto.h"
|
#include "twcrypto/crypto.h"
|
||||||
#include "core/archive.h"
|
#include "core/archive.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
|
|
||||||
void TestCrypto()
|
void TestCrypto()
|
||||||
{
|
{
|
|
@ -0,0 +1,300 @@
|
||||||
|
//
|
||||||
|
// The developer of the original code and/or files is Tripwire, Inc.
|
||||||
|
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
||||||
|
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
||||||
|
// reserved.
|
||||||
|
//
|
||||||
|
// This program is free software. The contents of this file are subject
|
||||||
|
// to the terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
// option) any later version. You may redistribute it and/or modify it
|
||||||
|
// only in compliance with the GNU General Public License.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful.
|
||||||
|
// However, this program is distributed AS-IS WITHOUT ANY
|
||||||
|
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
||||||
|
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
// USA.
|
||||||
|
//
|
||||||
|
// Nothing in the GNU General Public License or any other license to use
|
||||||
|
// the code or files shall permit you to use Tripwire's trademarks,
|
||||||
|
// service marks, or other intellectual property without Tripwire's
|
||||||
|
// prior written consent.
|
||||||
|
//
|
||||||
|
// If you have any questions, please contact Tripwire, Inc. at either
|
||||||
|
// info@tripwire.org or www.tripwire.org.
|
||||||
|
//
|
||||||
|
// dbdatasource_t.cpp
|
||||||
|
#include "tw/stdtw.h"
|
||||||
|
#include "tw/dbdatasource.h"
|
||||||
|
#include "db/hierdatabase.h"
|
||||||
|
#include "core/fsservices.h"
|
||||||
|
#include "core/debug.h"
|
||||||
|
#include "core/error.h"
|
||||||
|
#include "fco/fcopropvector.h"
|
||||||
|
#include "fco/fcopropset.h"
|
||||||
|
#include "fco/fcoprop.h"
|
||||||
|
#include "fco/fco.h"
|
||||||
|
|
||||||
|
static void GetNoun( TSTRING& noun )
|
||||||
|
{
|
||||||
|
static TSTRING prevNoun;
|
||||||
|
TCIN >> noun;
|
||||||
|
if( noun.compare( _T("!$") ) == 0 )
|
||||||
|
{
|
||||||
|
noun = prevNoun;
|
||||||
|
}
|
||||||
|
prevNoun = noun;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// TODO -- implement this with the prop displayer as well!
|
||||||
|
//
|
||||||
|
static void PrintFCO( const iFCO* pFCO )
|
||||||
|
{
|
||||||
|
TCOUT.setf(std::ios::left);
|
||||||
|
|
||||||
|
TCOUT << "------- " << pFCO->GetName().AsString() << " -------" << std::endl;
|
||||||
|
//
|
||||||
|
// iterate over all of the properties
|
||||||
|
//
|
||||||
|
const iFCOPropSet* pPropSet = pFCO->GetPropSet();
|
||||||
|
cFCOPropVector v = pPropSet->GetValidVector();
|
||||||
|
for( int i=0; i < pPropSet->GetNumProps(); i++ )
|
||||||
|
{
|
||||||
|
if( v.ContainsItem( i ) )
|
||||||
|
{
|
||||||
|
TCOUT << "[";
|
||||||
|
TCOUT.width(2);
|
||||||
|
TCOUT << i << "]" ;
|
||||||
|
TCOUT.width(25);
|
||||||
|
TCOUT << pPropSet->GetPropName(i);
|
||||||
|
TCOUT.width(0);
|
||||||
|
TCOUT << pPropSet->GetPropAt( i )->AsString() << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TCOUT << "--------------------------------------------" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TestDbDataSource()
|
||||||
|
{
|
||||||
|
cDebug d("TestDbDataSource");
|
||||||
|
cHierDatabase db;
|
||||||
|
|
||||||
|
const TSTRING dbName = _T("c:/tmp/tw.db");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// TODO -- get the case sensitiveness and delimiting char out of the factory instead of iFSServices
|
||||||
|
//
|
||||||
|
TCOUT << _T("Opening database ") << dbName << std::endl;
|
||||||
|
db.Open( dbName, 5, false );
|
||||||
|
cDbDataSourceIter iter( &db );
|
||||||
|
|
||||||
|
////////////////////////////
|
||||||
|
// the main event loop...
|
||||||
|
////////////////////////////
|
||||||
|
while( true )
|
||||||
|
{
|
||||||
|
TSTRING verb, noun;
|
||||||
|
TCOUT << _T(">>");
|
||||||
|
TCIN >> verb;
|
||||||
|
//
|
||||||
|
// ok, now we switch on the command...
|
||||||
|
//
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
// quit
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
if( verb.compare( _T("quit") ) == 0 )
|
||||||
|
{
|
||||||
|
// the quit command...
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
// print
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
if( verb.compare( _T("print") ) == 0 )
|
||||||
|
{
|
||||||
|
GetNoun(noun);
|
||||||
|
if( iter.SeekTo( noun.c_str() ) )
|
||||||
|
{
|
||||||
|
if( iter.HasFCOData() )
|
||||||
|
{
|
||||||
|
iFCO* pFCO = iter.CreateFCO();
|
||||||
|
PrintFCO( pFCO );
|
||||||
|
pFCO->Release();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TCOUT << "Object has no data associated with it." << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TCOUT << "Unable to find object " << noun << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
// mkdir
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
else if( verb.compare( _T("mkdir") ) == 0 )
|
||||||
|
{
|
||||||
|
GetNoun(noun);
|
||||||
|
TCOUT << "Making a child of " << noun << std::endl;
|
||||||
|
if( iter.SeekTo( noun.c_str() ) )
|
||||||
|
{
|
||||||
|
iter.AddChildArray();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TCOUT << "Unable to find object " << noun << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
// mk
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
else if( verb.compare( _T("mk") ) == 0 )
|
||||||
|
{
|
||||||
|
GetNoun(noun);
|
||||||
|
TCOUT << "Making object " << noun << std::endl;
|
||||||
|
if( iter.SeekTo( noun.c_str() ) )
|
||||||
|
{
|
||||||
|
TCOUT << "Error: object already exists!" << std::endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
iter.AddFCO( noun, 0 ); // add a null fco for now
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
// rmdir
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
// TODO -- still needs to be implemented in the iterator class!
|
||||||
|
//
|
||||||
|
/*
|
||||||
|
else if( verb.compare( _T("rmdir") ) == 0 )
|
||||||
|
{
|
||||||
|
GetNoun(noun);
|
||||||
|
TCOUT << "Removing the child of " << noun << std::endl;
|
||||||
|
if( iter.SeekTo( noun.c_str() ) )
|
||||||
|
{
|
||||||
|
//TODO -- check that it has an empty child
|
||||||
|
iter.DeleteChildArray();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TCOUT << "Unable to find object " << noun << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
// rm
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
else if( verb.compare( _T("rm") ) == 0 )
|
||||||
|
{
|
||||||
|
GetNoun(noun);
|
||||||
|
TCOUT << "Removing object " << noun << std::endl;
|
||||||
|
if( iter.SeekTo( noun.c_str() ) )
|
||||||
|
{
|
||||||
|
if( iter.CanDescend() )
|
||||||
|
{
|
||||||
|
TCOUT << "Can't delete object; it still has children." << std::endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
iter.RemoveFCO();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TCOUT << "Unable to find object " << noun << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
// pwd
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
else if( verb.compare( _T("pwd") ) == 0 )
|
||||||
|
{
|
||||||
|
TCOUT << iter.GetParentName().AsString() << std::endl;
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
// ls
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
else if( verb.compare( _T("ls") ) == 0 )
|
||||||
|
{
|
||||||
|
int cnt = 0;
|
||||||
|
for( iter.SeekBegin(); ! iter.Done(); iter.Next(), cnt++ )
|
||||||
|
{
|
||||||
|
TCOUT << "[" << cnt ;
|
||||||
|
if( iter.CanDescend() )
|
||||||
|
{
|
||||||
|
TCOUT << "]*\t" ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TCOUT << "]\t" ;
|
||||||
|
}
|
||||||
|
TCOUT << iter.GetShortName() << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
// cd
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
else if( verb.compare( _T("cd") ) == 0 )
|
||||||
|
{
|
||||||
|
GetNoun(noun);
|
||||||
|
if( noun.compare( _T("..") ) == 0 )
|
||||||
|
{
|
||||||
|
if( iter.AtRoot() )
|
||||||
|
{
|
||||||
|
TCOUT << "Can't ascend above root." << std::endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TCOUT << "Ascending..." << std::endl;
|
||||||
|
iter.Ascend();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if( iter.SeekTo( noun.c_str() ) )
|
||||||
|
{
|
||||||
|
if( iter.CanDescend() )
|
||||||
|
{
|
||||||
|
TCOUT << "Descending into " << noun << std::endl;
|
||||||
|
iter.Descend();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TCOUT << noun << " has no children; can't descend." << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TCOUT << "Unable to find object " << noun << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// make sure the file is still valid...
|
||||||
|
//
|
||||||
|
#ifdef _BLOCKFILE_DEBUG
|
||||||
|
db.AssertAllBlocksValid() ;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
TCOUT << "Exiting..." << std::endl;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
catch( eError& e )
|
||||||
|
{
|
||||||
|
d.TraceError("*** Caught error: %d %s\n", e.GetID(), e.GetMsg().c_str() );
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,93 @@
|
||||||
|
//
|
||||||
|
// The developer of the original code and/or files is Tripwire, Inc.
|
||||||
|
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
||||||
|
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
||||||
|
// reserved.
|
||||||
|
//
|
||||||
|
// This program is free software. The contents of this file are subject
|
||||||
|
// to the terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
// option) any later version. You may redistribute it and/or modify it
|
||||||
|
// only in compliance with the GNU General Public License.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful.
|
||||||
|
// However, this program is distributed AS-IS WITHOUT ANY
|
||||||
|
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
||||||
|
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
// USA.
|
||||||
|
//
|
||||||
|
// Nothing in the GNU General Public License or any other license to use
|
||||||
|
// the code or files shall permit you to use Tripwire's trademarks,
|
||||||
|
// service marks, or other intellectual property without Tripwire's
|
||||||
|
// prior written consent.
|
||||||
|
//
|
||||||
|
// If you have any questions, please contact Tripwire, Inc. at either
|
||||||
|
// info@tripwire.org or www.tripwire.org.
|
||||||
|
//
|
||||||
|
// debug_t -- debug component test driver
|
||||||
|
|
||||||
|
#include "core/stdcore.h"
|
||||||
|
#include "core/debug.h"
|
||||||
|
#include "twtest/test.h"
|
||||||
|
|
||||||
|
void TestDebug()
|
||||||
|
{
|
||||||
|
// it is amusing that we use cDebug to output the results of testing cDebug
|
||||||
|
// "Are you insane?" ... "No, I am not."
|
||||||
|
cDebug d("TestDebug()");
|
||||||
|
d.TraceDebug("Entering...");
|
||||||
|
|
||||||
|
// save the current debug level, since we will be altering it.
|
||||||
|
int oldDebugLevel = cDebug::GetDebugLevel();
|
||||||
|
|
||||||
|
// test debug level variation...
|
||||||
|
d.TraceDebug("Setting debug level to Debug(%d)\n", cDebug::D_DEBUG);
|
||||||
|
cDebug::SetDebugLevel(cDebug::D_DEBUG);
|
||||||
|
d.TraceDebug ("You should see this, as well as line 2 below, but not line 3.\n");
|
||||||
|
d.TraceWarning ("Line 2: Warning(%d)\n", cDebug::D_WARNING);
|
||||||
|
d.TraceDetail ("Line 3: Detail(%d)\n", cDebug::D_DETAIL);
|
||||||
|
d.TraceDebug ("Restoring the debug level to %d\n", oldDebugLevel);
|
||||||
|
cDebug::SetDebugLevel(oldDebugLevel);
|
||||||
|
|
||||||
|
// testing the output source
|
||||||
|
int oldOutTarget = 0;
|
||||||
|
if(cDebug::HasOutTarget(cDebug::OUT_STDOUT)) oldOutTarget |= cDebug::OUT_STDOUT;
|
||||||
|
if(cDebug::HasOutTarget(cDebug::OUT_TRACE)) oldOutTarget |= cDebug::OUT_TRACE;
|
||||||
|
if(cDebug::HasOutTarget(cDebug::OUT_FILE)) oldOutTarget |= cDebug::OUT_FILE;
|
||||||
|
cDebug::RemoveOutTarget(cDebug::OUT_STDOUT);
|
||||||
|
cDebug::RemoveOutTarget(cDebug::OUT_TRACE);
|
||||||
|
cDebug::RemoveOutTarget(cDebug::OUT_FILE);
|
||||||
|
|
||||||
|
d.TraceDebug("You should not see this (All out targets removed)\n");
|
||||||
|
cDebug::AddOutTarget(cDebug::OUT_STDOUT);
|
||||||
|
d.TraceDebug("You should see this in stdout only.\n");
|
||||||
|
cDebug::AddOutTarget(cDebug::OUT_TRACE);
|
||||||
|
d.TraceDebug("You should see this in stdout and trace.\n");
|
||||||
|
cDebug::RemoveOutTarget(cDebug::OUT_STDOUT);
|
||||||
|
d.TraceDebug("You should see this in trace only.\n");
|
||||||
|
// set up an output file...use the temp file in test.h
|
||||||
|
std::string str = TEMP_DIR_N;
|
||||||
|
str += "/debug.out";
|
||||||
|
bool bResult = false;
|
||||||
|
bResult = cDebug::SetOutputFile(str.c_str());
|
||||||
|
//TODO... TEST(bResult);
|
||||||
|
if( !bResult)
|
||||||
|
TCERR << "SetOutputFile failed!" << std::endl;
|
||||||
|
|
||||||
|
d.TraceDebug("This should be in trace and the file %s.\n", str.c_str());
|
||||||
|
|
||||||
|
// restore the out source...
|
||||||
|
// TODO -- note that the original output file cannot be restored; this sucks!
|
||||||
|
if(oldOutTarget & cDebug::OUT_STDOUT) cDebug::AddOutTarget(cDebug::OUT_STDOUT); else cDebug::RemoveOutTarget(cDebug::OUT_STDOUT);
|
||||||
|
if(oldOutTarget & cDebug::OUT_TRACE) cDebug::AddOutTarget(cDebug::OUT_TRACE); else cDebug::RemoveOutTarget(cDebug::OUT_TRACE);
|
||||||
|
if(oldOutTarget & cDebug::OUT_FILE) cDebug::AddOutTarget(cDebug::OUT_FILE); else cDebug::RemoveOutTarget(cDebug::OUT_FILE);
|
||||||
|
|
||||||
|
d.TraceDebug("Exiting...\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
// Creator.: Brian McFeely (bmcfeely)
|
// Creator.: Brian McFeely (bmcfeely)
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "stdcore.h"
|
#include "core/stdcore.h"
|
||||||
|
|
||||||
#ifdef TSS_TEST
|
#ifdef TSS_TEST
|
||||||
|
|
|
@ -32,9 +32,9 @@
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// error_t.h -- the vcc exception test driver
|
// error_t.h -- the vcc exception test driver
|
||||||
|
|
||||||
#include "stdcore.h"
|
#include "core/stdcore.h"
|
||||||
#include "error.h"
|
#include "core/error.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
void TestError()
|
void TestError()
|
|
@ -31,12 +31,12 @@
|
||||||
//
|
//
|
||||||
// errorbucketimpl_t.cpp
|
// errorbucketimpl_t.cpp
|
||||||
|
|
||||||
#include "stdcore.h"
|
#include "core/stdcore.h"
|
||||||
#include "errorbucketimpl.h"
|
#include "core/errorbucketimpl.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include "debug.h"
|
#include "core/debug.h"
|
||||||
#include "archive.h"
|
#include "core/archive.h"
|
||||||
#include "errorgeneral.h"
|
#include "core/errorgeneral.h"
|
||||||
|
|
||||||
// test option 7
|
// test option 7
|
||||||
void TestErrorBucketImpl()
|
void TestErrorBucketImpl()
|
|
@ -0,0 +1,157 @@
|
||||||
|
//
|
||||||
|
// The developer of the original code and/or files is Tripwire, Inc.
|
||||||
|
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
||||||
|
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
||||||
|
// reserved.
|
||||||
|
//
|
||||||
|
// This program is free software. The contents of this file are subject
|
||||||
|
// to the terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
// option) any later version. You may redistribute it and/or modify it
|
||||||
|
// only in compliance with the GNU General Public License.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful.
|
||||||
|
// However, this program is distributed AS-IS WITHOUT ANY
|
||||||
|
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
||||||
|
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
// USA.
|
||||||
|
//
|
||||||
|
// Nothing in the GNU General Public License or any other license to use
|
||||||
|
// the code or files shall permit you to use Tripwire's trademarks,
|
||||||
|
// service marks, or other intellectual property without Tripwire's
|
||||||
|
// prior written consent.
|
||||||
|
//
|
||||||
|
// If you have any questions, please contact Tripwire, Inc. at either
|
||||||
|
// info@tripwire.org or www.tripwire.org.
|
||||||
|
//
|
||||||
|
// fcocompare_t.cpp -- the compare object's test driver
|
||||||
|
#include "fco/stdfco.h"
|
||||||
|
#include "fco/fcocompare.h"
|
||||||
|
#include "core/debug.h"
|
||||||
|
#include "fs/fsobject.h"
|
||||||
|
#include "fs/fspropcalc.h"
|
||||||
|
#include "twtest/test.h"
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// PrintProps -- prints out all the valid property names and values as pairs...
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
static void PrintProps(const iFCO* pFCO)
|
||||||
|
{
|
||||||
|
cDebug d("PrintProps");
|
||||||
|
const iFCOPropSet* pSet = pFCO->GetPropSet();
|
||||||
|
const cFCOPropVector& v = pSet->GetValidVector();
|
||||||
|
|
||||||
|
for(int i=0; i<pSet->GetNumProps(); i++)
|
||||||
|
{
|
||||||
|
if(v.ContainsItem(i))
|
||||||
|
{
|
||||||
|
d.TraceDebug(_T("[%d] %s\t%s\n"), i, pSet->GetPropName(i).c_str(), pSet->GetPropAt(i)->AsString().c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
void TestFCOCompare()
|
||||||
|
{
|
||||||
|
#pragma message( __FILE__ "(1) : TODO - implement this test file")
|
||||||
|
#if 0
|
||||||
|
|
||||||
|
const TCHAR* FILE_NAME = TEMP_DIR _T("/dog.txt");
|
||||||
|
const char* FILE_NAME_N = TEMP_DIR_N "/dog.txt";
|
||||||
|
|
||||||
|
cDebug d("TestFCOCompare");
|
||||||
|
d.TraceDebug("Entering...\n");
|
||||||
|
|
||||||
|
// first, create an fco to compare with...
|
||||||
|
|
||||||
|
TOFSTREAM fstr(FILE_NAME_N);
|
||||||
|
if(fstr.bad())
|
||||||
|
{
|
||||||
|
d.TraceError("Unable to create test file %s!\n", FILE_NAME);
|
||||||
|
TEST(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
fstr << "Bark! Bark! Bark!" << std::endl;
|
||||||
|
fstr.close();
|
||||||
|
|
||||||
|
// create the test FCO
|
||||||
|
cFSDataSource ds;
|
||||||
|
iFCO* pFCO = ds.CreateFCO(cFCOName(FILE_NAME), 0);
|
||||||
|
TEST(pFCO);
|
||||||
|
|
||||||
|
// measure a couple of properties, some of which will change...
|
||||||
|
cFSPropCalc propCalc;
|
||||||
|
cFCOPropVector v(pFCO->GetPropSet()->GetValidVector().GetSize());
|
||||||
|
v.AddItem(cFSPropSet::PROP_DEV);
|
||||||
|
v.AddItem(cFSPropSet::PROP_CTIME);
|
||||||
|
v.AddItem(cFSPropSet::PROP_SIZE);
|
||||||
|
v.AddItem(cFSPropSet::PROP_MTIME);
|
||||||
|
v.AddItem(cFSPropSet::PROP_FILETYPE);
|
||||||
|
v.AddItem(cFSPropSet::PROP_GROWING_FILE);
|
||||||
|
propCalc.SetPropVector(v);
|
||||||
|
pFCO->AcceptVisitor(&propCalc);
|
||||||
|
d.TraceDebug("First FCO's properties:\n");
|
||||||
|
PrintProps(pFCO);
|
||||||
|
|
||||||
|
// first, try comparing it to itself...
|
||||||
|
cFCOCompare comp;
|
||||||
|
cFCOCompare::CompareResult result;
|
||||||
|
comp.SetPropsToCmp(v);
|
||||||
|
comp.Compare(pFCO, pFCO, result);
|
||||||
|
d.TraceDebug("Compare to itself is (expect true) %s\n", result.mResult == cFCOCompare::EQUAL? "true" : "false");
|
||||||
|
TEST(result.mResult == cFCOCompare::EQUAL);
|
||||||
|
|
||||||
|
// change the file...
|
||||||
|
d.TraceDebug("Changing the file...\n");
|
||||||
|
fstr.open(FILE_NAME_N);
|
||||||
|
if(fstr.bad())
|
||||||
|
{
|
||||||
|
d.TraceError("Unable to reopen %s!\n", FILE_NAME_N);
|
||||||
|
TEST(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fstr << "Meow! Meow! Meow! Meow!" << std::endl;
|
||||||
|
fstr.close();
|
||||||
|
|
||||||
|
iFCO* pFCO2 = ds.CreateFCO(cFCOName(FILE_NAME), 0);
|
||||||
|
ASSERT(pFCO2);
|
||||||
|
pFCO2->AcceptVisitor(&propCalc);
|
||||||
|
d.TraceDebug("Second FCO's properties:\n");
|
||||||
|
PrintProps(pFCO2);
|
||||||
|
|
||||||
|
comp.Compare(pFCO, pFCO2, result);
|
||||||
|
d.TraceDebug("Compare to new object is (expect false) %s\n", result.mResult == cFCOCompare::EQUAL? "true" : "false");
|
||||||
|
TEST(result.mResult == cFCOCompare::UNEQUAL);
|
||||||
|
d.TraceDebug("Properties that differ are:\n");
|
||||||
|
result.mPropVector.TraceContents();
|
||||||
|
|
||||||
|
// try testing properties that weren't calculated...
|
||||||
|
d.TraceDebug("Comparing FCOs with different properties calculated\n");
|
||||||
|
iFCO* pFCO3 = ds.CreateFCO(cFCOName(FILE_NAME), 0);
|
||||||
|
v = propCalc.GetPropVector();
|
||||||
|
v.AddItem(cFSPropSet::PROP_MD5);
|
||||||
|
propCalc.SetPropVector(v);
|
||||||
|
pFCO3->AcceptVisitor(&propCalc);
|
||||||
|
// do the compare
|
||||||
|
comp.SetPropsToCmp(v);
|
||||||
|
comp.Compare(pFCO2, pFCO3, result);
|
||||||
|
TEST(result.mResult == cFCOCompare::PROPS_NOT_ALL_VALID);
|
||||||
|
d.TraceDebug("Properties not valid are (should be %d):\n", cFSPropSet::PROP_MD5);
|
||||||
|
result.mPropVector.TraceContents();
|
||||||
|
|
||||||
|
// release the fcos
|
||||||
|
pFCO3->Release();
|
||||||
|
pFCO2->Release();
|
||||||
|
pFCO->Release();
|
||||||
|
#endif
|
||||||
|
return;
|
||||||
|
}
|
|
@ -30,8 +30,8 @@
|
||||||
// info@tripwire.org or www.tripwire.org.
|
// info@tripwire.org or www.tripwire.org.
|
||||||
//
|
//
|
||||||
// fcodatabasefile.cpp
|
// fcodatabasefile.cpp
|
||||||
#include "stdtw.h"
|
#include "tw/stdtw.h"
|
||||||
#include "fcodatabasefile.h"
|
#include "tw/fcodatabasefile.h"
|
||||||
|
|
||||||
void TestFCODatabaseFile()
|
void TestFCODatabaseFile()
|
||||||
{
|
{
|
|
@ -33,15 +33,15 @@
|
||||||
// fconame_t.cpp
|
// fconame_t.cpp
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "stdfco.h"
|
#include "fco/stdfco.h"
|
||||||
|
|
||||||
#include "fconame.h"
|
#include "fco/fconame.h"
|
||||||
|
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include "core/serializer.h"
|
#include "core/serializer.h"
|
||||||
#include "core/serializerimpl.h"
|
#include "core/serializerimpl.h"
|
||||||
#include "core/archive.h"
|
#include "core/archive.h"
|
||||||
#include "genreswitcher.h"
|
#include "fco/genreswitcher.h"
|
||||||
|
|
||||||
void TestFCOName()
|
void TestFCOName()
|
||||||
{
|
{
|
||||||
|
@ -103,12 +103,14 @@ void TestFCOName()
|
||||||
cFCOName copyName(stringName);
|
cFCOName copyName(stringName);
|
||||||
TEST(_tcscmp(copyName.AsString().c_str(), _T("/a/string/name")) == 0);
|
TEST(_tcscmp(copyName.AsString().c_str(), _T("/a/string/name")) == 0);
|
||||||
|
|
||||||
|
TCERR << "Multiple TODO tests in fconame_t.cpp" << std::endl;
|
||||||
|
#if 0
|
||||||
cFCOName name(_T("new name"));
|
cFCOName name(_T("new name"));
|
||||||
nullName = name;
|
nullName = name;
|
||||||
TEST(_tcscmp(nullName.AsString().c_str(), _T("new name")) == 0);
|
//TODO... TEST(_tcscmp(nullName.AsString().c_str(), _T("new name")) == 0);
|
||||||
|
|
||||||
nullName = _T("newer name");
|
nullName = _T("newer name");
|
||||||
TEST(_tcscmp(nullName.AsString().c_str(), _T("newer name")) == 0);
|
//TODO... TEST(_tcscmp(nullName.AsString().c_str(), _T("newer name")) == 0);
|
||||||
|
|
||||||
cMemoryArchive memArc;
|
cMemoryArchive memArc;
|
||||||
{
|
{
|
||||||
|
@ -135,7 +137,7 @@ void TestFCOName()
|
||||||
TEST(name2.GetDelimiter() == _T('\\'));
|
TEST(name2.GetDelimiter() == _T('\\'));
|
||||||
TEST(name1.GetDelimiter() == _T('/'));
|
TEST(name1.GetDelimiter() == _T('/'));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,9 +30,9 @@
|
||||||
// info@tripwire.org or www.tripwire.org.
|
// info@tripwire.org or www.tripwire.org.
|
||||||
//
|
//
|
||||||
// fconametbl_t.cpp
|
// fconametbl_t.cpp
|
||||||
#include "stdfco.h"
|
#include "fco/stdfco.h"
|
||||||
#include "fconametbl.h"
|
#include "fco/fconametbl.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
|
|
||||||
void TestFCONameTbl()
|
void TestFCONameTbl()
|
||||||
{
|
{
|
|
@ -35,10 +35,10 @@
|
||||||
// Creator.: Brian McFeely (bmcfeely)
|
// Creator.: Brian McFeely (bmcfeely)
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "stdfco.h"
|
#include "fco/stdfco.h"
|
||||||
#include "fconametranslator.h"
|
#include "fco/fconametranslator.h"
|
||||||
#include "genreswitcher.h"
|
#include "fco/genreswitcher.h"
|
||||||
#include "fconame.h"
|
#include "fco/fconame.h"
|
||||||
|
|
||||||
|
|
||||||
void TestName( const TCHAR* pchName, const TCHAR* pchGenre );
|
void TestName( const TCHAR* pchName, const TCHAR* pchGenre );
|
|
@ -30,8 +30,8 @@
|
||||||
// info@tripwire.org or www.tripwire.org.
|
// info@tripwire.org or www.tripwire.org.
|
||||||
//
|
//
|
||||||
// fcopropimpl_t.cpp
|
// fcopropimpl_t.cpp
|
||||||
#include "stdfco.h"
|
#include "fco/stdfco.h"
|
||||||
#include "fcopropimpl.h"
|
#include "fco/fcopropimpl.h"
|
||||||
#include "core/debug.h"
|
#include "core/debug.h"
|
||||||
|
|
||||||
void TestFCOPropImpl()
|
void TestFCOPropImpl()
|
|
@ -0,0 +1,251 @@
|
||||||
|
//
|
||||||
|
// The developer of the original code and/or files is Tripwire, Inc.
|
||||||
|
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
||||||
|
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
||||||
|
// reserved.
|
||||||
|
//
|
||||||
|
// This program is free software. The contents of this file are subject
|
||||||
|
// to the terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
// option) any later version. You may redistribute it and/or modify it
|
||||||
|
// only in compliance with the GNU General Public License.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful.
|
||||||
|
// However, this program is distributed AS-IS WITHOUT ANY
|
||||||
|
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
||||||
|
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
// USA.
|
||||||
|
//
|
||||||
|
// Nothing in the GNU General Public License or any other license to use
|
||||||
|
// the code or files shall permit you to use Tripwire's trademarks,
|
||||||
|
// service marks, or other intellectual property without Tripwire's
|
||||||
|
// prior written consent.
|
||||||
|
//
|
||||||
|
// If you have any questions, please contact Tripwire, Inc. at either
|
||||||
|
// info@tripwire.org or www.tripwire.org.
|
||||||
|
//
|
||||||
|
// fcopropvector_t.cpp -- class cFCOPropVector's test harness
|
||||||
|
#include "fco/stdfco.h"
|
||||||
|
#include "fco/fcopropvector.h"
|
||||||
|
|
||||||
|
#ifndef __TEST_H
|
||||||
|
#include "twtest/test.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static bool init (cFCOPropVector &testV);
|
||||||
|
static bool addRemove (cFCOPropVector &test1, cFCOPropVector &test2, cDebug& d);
|
||||||
|
static bool objManip (cFCOPropVector &testV, cDebug& d);
|
||||||
|
|
||||||
|
void TestFCOPropVector()
|
||||||
|
{
|
||||||
|
//Local Variables for main test function
|
||||||
|
|
||||||
|
bool testout;
|
||||||
|
cDebug d("TestFCOPropVector()");
|
||||||
|
d.TraceDetail("Entering...\n");
|
||||||
|
|
||||||
|
cFCOPropVector test1, test2, test3;
|
||||||
|
|
||||||
|
test1.SetSize(32);
|
||||||
|
test2.SetSize(64);
|
||||||
|
test3.SetSize(45);
|
||||||
|
|
||||||
|
d.TraceDetail("Empty Vector with no buffer:\n");
|
||||||
|
test1.check(d);
|
||||||
|
d.TraceDetail("\nEmpty Vector with buffer used: \n");
|
||||||
|
test2.check(d);
|
||||||
|
d.TraceDetail("\nEmpty Vector with buffer, mSize less buffer capacity: \n");
|
||||||
|
test3.check(d);
|
||||||
|
|
||||||
|
//First, test set initialization is correct.
|
||||||
|
d.TraceDetail("\nTesting vector initialization...\n");
|
||||||
|
TEST(testout = (init (test1)) & (init(test2)) & (init(test3)));
|
||||||
|
if (testout)
|
||||||
|
d.TraceDetail("success.\n");
|
||||||
|
else {
|
||||||
|
test1.check(d);
|
||||||
|
test2.check(d);
|
||||||
|
test3.check(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Test ability to add and remove
|
||||||
|
TCERR << "TODO: addRemove test in fcopropvector_t.cpp" << std::endl;
|
||||||
|
// TEST(testout = addRemove (test1, test2, d));
|
||||||
|
// d.TraceDetail("Add/Remove over all tests is %i \n", testout);
|
||||||
|
|
||||||
|
// test clear.
|
||||||
|
d.TraceDetail("Testing Clear()\n");
|
||||||
|
d.TraceDetail("Filling with numbers...\n");
|
||||||
|
cFCOPropVector v(44);
|
||||||
|
v.AddItem(2);
|
||||||
|
v.AddItem(3);
|
||||||
|
v.AddItem(9);
|
||||||
|
v.AddItem(40);
|
||||||
|
v.check(d);
|
||||||
|
d.TraceDetail("Clearing Numbers...\n");
|
||||||
|
v.Clear();
|
||||||
|
v.check(d);
|
||||||
|
d.TraceDetail("Clear Test Done.\n");
|
||||||
|
|
||||||
|
//test operators
|
||||||
|
TEST(testout = objManip(test1, d));
|
||||||
|
if (testout)
|
||||||
|
d.TraceDetail("Object manipulation tests are successful\n");
|
||||||
|
else
|
||||||
|
d.TraceDetail("Object manipulation tests are not successful\n");
|
||||||
|
|
||||||
|
return;
|
||||||
|
}//end TestPropVector
|
||||||
|
|
||||||
|
static bool init (cFCOPropVector &testV)
|
||||||
|
{
|
||||||
|
int range = testV.GetSize()-1;
|
||||||
|
|
||||||
|
for (int i=1; i<=range; ++i)
|
||||||
|
{
|
||||||
|
if (testV.ContainsItem(i))
|
||||||
|
return false;
|
||||||
|
} //end for
|
||||||
|
return true;
|
||||||
|
} //end init
|
||||||
|
|
||||||
|
static bool addRemove (cFCOPropVector &test1, cFCOPropVector &test2, cDebug& d)
|
||||||
|
{
|
||||||
|
int var1 = 0 , var2 = 64, var3 = 2;
|
||||||
|
bool local=true, out=true;
|
||||||
|
|
||||||
|
/*
|
||||||
|
bool loopvar = true;
|
||||||
|
int menu, var;
|
||||||
|
cFCOPropVector testV;
|
||||||
|
testV.SetSize(64);
|
||||||
|
while (loopvar)
|
||||||
|
{
|
||||||
|
|
||||||
|
d.TraceAlways("\nChoose an operation to test:\n");
|
||||||
|
d.TraceAlways("\t1)Add an item to vector.\n");
|
||||||
|
d.TraceAlways("\t2)Remove an item from vector. \n");
|
||||||
|
d.TraceAlways("\t3)Check vector for item. \n");
|
||||||
|
d.TraceAlways("\t4)Display vector information \n");
|
||||||
|
d.TraceAlways("\t5)Stop add/remove tests. \n");
|
||||||
|
d.TraceAlways("Your choice [1-5]: ");
|
||||||
|
cin>>menu;
|
||||||
|
d.TraceAlways("\n");
|
||||||
|
|
||||||
|
switch (menu)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
d.TraceAlways("Item to add: ");
|
||||||
|
cin>> var;
|
||||||
|
d.TraceAlways("%i \n", testV.AddItem(var));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
d.TraceAlways("Item to remove: ");
|
||||||
|
cin>>var;
|
||||||
|
d.TraceAlways("%i \n", testV.RemoveItem(var));
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
d.TraceAlways("Item to check: ");
|
||||||
|
cin>>var;
|
||||||
|
if (testV.ContainsItem(var))
|
||||||
|
d.TraceAlways("\nItem present\n");
|
||||||
|
else
|
||||||
|
d.TraceAlways("\nItem not present\n");
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
testV.check(d);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
loopvar = false;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
d.TraceAlways("Not a valid menu option\n");
|
||||||
|
break;
|
||||||
|
}//end switch
|
||||||
|
out &= local; //Keep track of results.
|
||||||
|
}//end while
|
||||||
|
*/
|
||||||
|
|
||||||
|
test1.AddItem(var1);
|
||||||
|
TEST(local &= test1.ContainsItem(var1)); //hopefully this is true!
|
||||||
|
TEST(local &= !test1.ContainsItem(var3));
|
||||||
|
test2.SetSize(var2);
|
||||||
|
TEST(local &= (test2.GetSize() == ((var2/32)+1)*32));
|
||||||
|
TEST(local &= (test1 != test2));
|
||||||
|
test1.RemoveItem(var1);
|
||||||
|
test2.SetSize(test1.GetSize());
|
||||||
|
TEST(local &= (test1 == test2));
|
||||||
|
test1.AddItem(var3);
|
||||||
|
test2 |= test1;
|
||||||
|
d.TraceDetail("\nmMask should be 4!\n");
|
||||||
|
test2.check(d);
|
||||||
|
test2.RemoveItem(var3);
|
||||||
|
d.TraceDetail("\nmMask should be 0! \n");
|
||||||
|
test2.check(d);
|
||||||
|
|
||||||
|
out &= local; //and-ing of results.
|
||||||
|
return out;
|
||||||
|
}//end addRemove
|
||||||
|
|
||||||
|
static bool objManip (cFCOPropVector &testV, cDebug& d)
|
||||||
|
{
|
||||||
|
cFCOPropVector test1, test2 = testV;
|
||||||
|
bool out = true;
|
||||||
|
|
||||||
|
/*testV.check(d);
|
||||||
|
test2.check(d);*/
|
||||||
|
|
||||||
|
TEST(out &= (testV == test2)); //test operator = , ==
|
||||||
|
test2.AddItem(1);
|
||||||
|
TEST(out &= (testV != test2)); //test operator !=
|
||||||
|
|
||||||
|
/*testV.check(d);
|
||||||
|
test2.check(d);*/
|
||||||
|
|
||||||
|
testV &= test2; //test operator &=
|
||||||
|
testV.check(d);
|
||||||
|
testV |= test2; //test operator |=
|
||||||
|
testV.check(d);
|
||||||
|
|
||||||
|
test1 = testV | test2; //test operator |
|
||||||
|
test1.check(d);
|
||||||
|
TEST(out&= (test1 == testV));
|
||||||
|
|
||||||
|
test2.RemoveItem(1);
|
||||||
|
testV = (test2 & test1);//test operator &
|
||||||
|
testV.check(d);
|
||||||
|
TEST(out&= !(test1 == testV));
|
||||||
|
|
||||||
|
// test operator ^
|
||||||
|
cFCOPropVector v1, v2, v3;
|
||||||
|
v1.AddItem(1);
|
||||||
|
v1.AddItem(3);
|
||||||
|
v1.AddItem(4);
|
||||||
|
v2.AddItem(3);
|
||||||
|
// expected result
|
||||||
|
v3.AddItem(1);
|
||||||
|
v3.AddItem(4);
|
||||||
|
TEST((v1 ^ v2) == v3);
|
||||||
|
// try with larger sizes...
|
||||||
|
v2.SetSize(40);
|
||||||
|
v2.Clear();
|
||||||
|
v2.AddItem(3);
|
||||||
|
TEST((v1 ^ v2) == v3);
|
||||||
|
v2.AddItem(38);
|
||||||
|
v1.SetSize(40);
|
||||||
|
v1.Clear();
|
||||||
|
v1.AddItem(1);
|
||||||
|
v1.AddItem(38);
|
||||||
|
v3.SetSize(40);
|
||||||
|
v3.Clear();
|
||||||
|
v3.AddItem(1);
|
||||||
|
v3.AddItem(3);
|
||||||
|
TEST((v1 ^ v2) == v3);
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}//end objManip
|
|
@ -31,14 +31,14 @@
|
||||||
//
|
//
|
||||||
// fcoreport_t.cpp
|
// fcoreport_t.cpp
|
||||||
|
|
||||||
#include "stdtw.h"
|
#include "tw/stdtw.h"
|
||||||
#include "fcoreport.h"
|
#include "tw/fcoreport.h"
|
||||||
#include "fco/fcospecimpl.h"
|
#include "fco/fcospecimpl.h"
|
||||||
#include "fco/fcosetimpl.h"
|
#include "fco/fcosetimpl.h"
|
||||||
#include "fs/fsobject.h"
|
#include "fs/fsobject.h"
|
||||||
#include "core/serializerimpl.h"
|
#include "core/serializerimpl.h"
|
||||||
#include "core/archive.h"
|
#include "core/archive.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include "core/errorbucketimpl.h"
|
#include "core/errorbucketimpl.h"
|
||||||
#include "fco/fcospecattr.h"
|
#include "fco/fcospecattr.h"
|
||||||
#include "fco/fcospechelper.h"
|
#include "fco/fcospechelper.h"
|
|
@ -0,0 +1,150 @@
|
||||||
|
//
|
||||||
|
// The developer of the original code and/or files is Tripwire, Inc.
|
||||||
|
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
||||||
|
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
||||||
|
// reserved.
|
||||||
|
//
|
||||||
|
// This program is free software. The contents of this file are subject
|
||||||
|
// to the terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
// option) any later version. You may redistribute it and/or modify it
|
||||||
|
// only in compliance with the GNU General Public License.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful.
|
||||||
|
// However, this program is distributed AS-IS WITHOUT ANY
|
||||||
|
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
||||||
|
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
// USA.
|
||||||
|
//
|
||||||
|
// Nothing in the GNU General Public License or any other license to use
|
||||||
|
// the code or files shall permit you to use Tripwire's trademarks,
|
||||||
|
// service marks, or other intellectual property without Tripwire's
|
||||||
|
// prior written consent.
|
||||||
|
//
|
||||||
|
// If you have any questions, please contact Tripwire, Inc. at either
|
||||||
|
// info@tripwire.org or www.tripwire.org.
|
||||||
|
//
|
||||||
|
// fcosetimpl_t -- FCOSetImpl test driver
|
||||||
|
|
||||||
|
#include "fco/stdfco.h"
|
||||||
|
#include "fco/fcosetimpl.h"
|
||||||
|
#include "fs/fsobject.h"
|
||||||
|
#include "core/debug.h"
|
||||||
|
#include "twtest/test.h"
|
||||||
|
#include "fco/iterproxy.h"
|
||||||
|
#include "core/archive.h"
|
||||||
|
#include "core/serializerimpl.h"
|
||||||
|
|
||||||
|
static void PrintIter(const iFCOIter* pIter, cDebug& d)
|
||||||
|
{
|
||||||
|
TSTRING str;
|
||||||
|
for(; ! pIter->Done(); pIter->Next())
|
||||||
|
{
|
||||||
|
str += pIter->FCO()->GetName().AsString().c_str();
|
||||||
|
str += _T(" ");
|
||||||
|
}
|
||||||
|
d.TraceDebug(_T("%s\n"), str.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// TestFCOSetImpl -- FCOSetImpl component test harness
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
void TestFCOSetImpl()
|
||||||
|
{
|
||||||
|
cDebug d("TestFCOSetImpl()");
|
||||||
|
d.TraceDebug("Entering...\n");
|
||||||
|
|
||||||
|
|
||||||
|
iFCO* pFCO1 = new cFSObject(cFCOName(_T("fco1")));
|
||||||
|
iFCO* pFCO2 = new cFSObject(cFCOName(_T("fco2")));
|
||||||
|
iFCO* pFCO3 = new cFSObject(cFCOName(_T("fco3")));
|
||||||
|
|
||||||
|
cFCOSetImpl set;
|
||||||
|
set.Insert(pFCO1);
|
||||||
|
set.Insert(pFCO2);
|
||||||
|
set.Insert(pFCO3);
|
||||||
|
|
||||||
|
// the set should have AddRef()ed, so I can release these now.
|
||||||
|
pFCO1->Release();
|
||||||
|
pFCO2->Release();
|
||||||
|
pFCO3->Release();
|
||||||
|
|
||||||
|
// let's iterate over the fcos
|
||||||
|
cIterProxy<iFCOIter> pit(set.GetIter());
|
||||||
|
pit->SeekBegin();
|
||||||
|
PrintIter(pit, d);
|
||||||
|
|
||||||
|
// lookup a specific fco
|
||||||
|
cIterProxy<iFCOIter> pit2(set.Lookup(cFCOName(_T("fco2"))));
|
||||||
|
if(! (iFCOIter*)pit2)
|
||||||
|
{
|
||||||
|
d.TraceError("Lookup failed for fco2!\n");
|
||||||
|
TEST(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
d.TraceDebug("Iterating from fco2 to end...\n");
|
||||||
|
PrintIter(pit2, d);
|
||||||
|
|
||||||
|
// Insert something
|
||||||
|
d.TraceDebug("Inserting dog...\n");
|
||||||
|
pFCO1 = new cFSObject(cFCOName(_T("dog")));
|
||||||
|
set.Insert(pFCO1);
|
||||||
|
pFCO1->Release();
|
||||||
|
pit->SeekBegin();
|
||||||
|
PrintIter(pit, d);
|
||||||
|
|
||||||
|
// ...and then remove it
|
||||||
|
d.TraceDebug("Removing fco3\n");
|
||||||
|
cIterProxy<iFCOIter> pit3(set.Lookup(cFCOName(_T("fco3"))));
|
||||||
|
if(! (iFCOIter*)pit3)
|
||||||
|
{
|
||||||
|
d.TraceError("Lookup failed for fco3!\n");
|
||||||
|
TEST(false);
|
||||||
|
}
|
||||||
|
pit3->Remove();
|
||||||
|
pit3->SeekBegin();
|
||||||
|
PrintIter(pit3, d);
|
||||||
|
|
||||||
|
// test operator=
|
||||||
|
cFCOSetImpl set2;
|
||||||
|
set2 = set;
|
||||||
|
pit = set2.GetIter();
|
||||||
|
d.TraceDebug("Made a new set and set it equal to the first with operator=; printing out...\n");
|
||||||
|
PrintIter(pit, d);
|
||||||
|
|
||||||
|
// test IsEmpty
|
||||||
|
set.Clear();
|
||||||
|
TEST(set.IsEmpty());
|
||||||
|
|
||||||
|
// test refrence counting...
|
||||||
|
d.TraceDebug("Set 1 was cleared out; printing set 2 to ensure ref counting worked\n");
|
||||||
|
pit->SeekBegin();
|
||||||
|
PrintIter(pit, d);
|
||||||
|
|
||||||
|
// test serialization
|
||||||
|
cFCOSetImpl set3;
|
||||||
|
cMemoryArchive a;
|
||||||
|
cSerializerImpl writeSer(a, cSerializerImpl::S_WRITE);
|
||||||
|
writeSer.Init();
|
||||||
|
set2.Write(&writeSer);
|
||||||
|
writeSer.Finit();
|
||||||
|
a.Seek(0, cBidirArchive::BEGINNING);
|
||||||
|
cSerializerImpl readSer(a, cSerializerImpl::S_READ);
|
||||||
|
readSer.Init();
|
||||||
|
set3.Read(&readSer);
|
||||||
|
readSer.Finit();
|
||||||
|
d.TraceDebug("Serialized the set out and read it back in; this should be the same as above...\n");
|
||||||
|
pit = set3.GetIter();
|
||||||
|
PrintIter(pit, d);
|
||||||
|
|
||||||
|
|
||||||
|
d.TraceDebug("Leaving...\n");
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
//
|
//
|
||||||
// fcospec_t -- the fcospec test driver
|
// fcospec_t -- the fcospec test driver
|
||||||
|
|
||||||
#include "stdfco.h"
|
#include "fco/stdfco.h"
|
||||||
#include "fcospec.h"
|
#include "fco/fcospec.h"
|
||||||
#include "core/debug.h"
|
#include "core/debug.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
|
@ -31,9 +31,9 @@
|
||||||
//
|
//
|
||||||
// fcospecattr_t
|
// fcospecattr_t
|
||||||
|
|
||||||
#include "stdfco.h"
|
#include "fco/stdfco.h"
|
||||||
#include "fcospecattr.h"
|
#include "fco/fcospecattr.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include "core/archive.h"
|
#include "core/archive.h"
|
||||||
#include "core/serializerimpl.h"
|
#include "core/serializerimpl.h"
|
||||||
|
|
|
@ -0,0 +1,131 @@
|
||||||
|
//
|
||||||
|
// The developer of the original code and/or files is Tripwire, Inc.
|
||||||
|
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
||||||
|
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
||||||
|
// reserved.
|
||||||
|
//
|
||||||
|
// This program is free software. The contents of this file are subject
|
||||||
|
// to the terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
// option) any later version. You may redistribute it and/or modify it
|
||||||
|
// only in compliance with the GNU General Public License.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful.
|
||||||
|
// However, this program is distributed AS-IS WITHOUT ANY
|
||||||
|
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
||||||
|
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
// USA.
|
||||||
|
//
|
||||||
|
// Nothing in the GNU General Public License or any other license to use
|
||||||
|
// the code or files shall permit you to use Tripwire's trademarks,
|
||||||
|
// service marks, or other intellectual property without Tripwire's
|
||||||
|
// prior written consent.
|
||||||
|
//
|
||||||
|
// If you have any questions, please contact Tripwire, Inc. at either
|
||||||
|
// info@tripwire.org or www.tripwire.org.
|
||||||
|
//
|
||||||
|
// fcospechelper_t.cpp
|
||||||
|
|
||||||
|
#include "fco/stdfco.h"
|
||||||
|
#include "fco/fcospechelper.h"
|
||||||
|
#include "twtest/test.h"
|
||||||
|
#include "core/error.h"
|
||||||
|
#include "core/serializerimpl.h"
|
||||||
|
#include "core/archive.h"
|
||||||
|
|
||||||
|
void TestFCOSpecHelper()
|
||||||
|
{
|
||||||
|
cDebug d("TestFCOSpecHelper");
|
||||||
|
d.TraceDebug("Entering...\n");
|
||||||
|
|
||||||
|
// test the start and stop point fringe cases...
|
||||||
|
d.TraceDebug("Testing start and stop point stuff...\n");
|
||||||
|
cFCOSpecStopPointSet* pSet3 = new cFCOSpecStopPointSet;
|
||||||
|
pSet3->SetStartPoint(cFCOName(_T("/etc"))); d.TraceDebug("*** Added start point /etc\n");
|
||||||
|
pSet3->Add(cFCOName(_T("/etc/dog/bark"))); d.TraceDebug("*** Added stop point /etc/dog/bark\n");
|
||||||
|
pSet3->Add(cFCOName(_T("/etc/dog/pant"))); d.TraceDebug("*** Added stop point /etc/dog/pant\n\n");
|
||||||
|
pSet3->Add(cFCOName(_T("/etc/cat/meow"))); d.TraceDebug("*** Added stop point /etc/cat/meow\n");
|
||||||
|
pSet3->TraceContents();
|
||||||
|
pSet3->Add(cFCOName(_T("/etc/dog"))); d.TraceDebug("*** Added stop point /etc/dog\n");
|
||||||
|
pSet3->Add(cFCOName(_T("/etc/cat/purr"))); d.TraceDebug("*** Added stop point /etc/cat/purr\n");
|
||||||
|
pSet3->Add(cFCOName(_T("/etc/cat/purr/loud"))); d.TraceDebug("*** Added stop point /etc/cat/purr/loud\n");
|
||||||
|
pSet3->TraceContents();
|
||||||
|
pSet3->Add(cFCOName(_T("/etc/dog"))); d.TraceDebug("*** Added stop point /etc/dog\n");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pSet3->Add(cFCOName(_T("/var/spool"))); d.TraceDebug("*** Added stop point /var/spool\n");
|
||||||
|
}
|
||||||
|
catch(eError& e)
|
||||||
|
{
|
||||||
|
d.TraceDebug(_T("Caught exception : %s\n"), e.GetMsg().c_str());
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pSet3->SetStartPoint(cFCOName(_T("/var"))); d.TraceDebug("*** Added start point /var\n");
|
||||||
|
}
|
||||||
|
catch(eError& e)
|
||||||
|
{
|
||||||
|
d.TraceDebug(_T("Caught exception : %s\n"), e.GetMsg().c_str());
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pSet3->SetStartPoint(cFCOName(_T("/"))); d.TraceDebug("*** Added start point /\n");
|
||||||
|
}
|
||||||
|
catch(eError& e)
|
||||||
|
{
|
||||||
|
d.TraceDebug(_T("Caught exception : %s\n"), e.GetMsg().c_str());
|
||||||
|
}
|
||||||
|
pSet3->TraceContents();
|
||||||
|
|
||||||
|
// test SpecContainsFCO()
|
||||||
|
cFCOSpecStopPointSet* pSet4 = new cFCOSpecStopPointSet;
|
||||||
|
pSet4->SetStartPoint(cFCOName(_T("/etc")));
|
||||||
|
pSet4->Add(cFCOName(_T("/etc/dog")));
|
||||||
|
pSet4->Add(cFCOName(_T("/etc/cat/meow")));
|
||||||
|
TEST( pSet4->ContainsFCO( cFCOName(_T("/etc/frog"))));
|
||||||
|
TEST( pSet4->ContainsFCO( cFCOName(_T("/etc/cat/paw"))));
|
||||||
|
TEST(! pSet4->ContainsFCO( cFCOName(_T("/etc/dog"))));
|
||||||
|
TEST(! pSet4->ContainsFCO( cFCOName(_T("/var/spool/mail"))));
|
||||||
|
TEST(! pSet4->ContainsFCO( cFCOName(_T("/etc/dog/bark"))));
|
||||||
|
|
||||||
|
// test the All Children Stop Points case
|
||||||
|
cFCOSpecNoChildren noChildren;
|
||||||
|
noChildren.SetStartPoint(cFCOName(_T("/etc")));
|
||||||
|
TEST( noChildren.ContainsFCO( cFCOName(_T("/etc"))));
|
||||||
|
TEST(! noChildren.ContainsFCO( cFCOName(_T("/etc/frog"))));
|
||||||
|
|
||||||
|
// TODO -- test Compare()
|
||||||
|
|
||||||
|
// test serialization
|
||||||
|
// test serialization
|
||||||
|
cMemoryArchive a;
|
||||||
|
cSerializerImpl s(a, cSerializerImpl::S_WRITE);
|
||||||
|
s.Init();
|
||||||
|
s.WriteObjectDynCreate(pSet3);
|
||||||
|
s.WriteObjectDynCreate(&noChildren);
|
||||||
|
s.Finit();
|
||||||
|
a.Seek(0, cBidirArchive::BEGINNING);
|
||||||
|
|
||||||
|
iFCOSpecHelper* pHelp1, *pHelp2;
|
||||||
|
cSerializerImpl s2(a, cSerializerImpl::S_READ);
|
||||||
|
s2.Init();
|
||||||
|
pHelp1 = (iFCOSpecHelper*)s2.ReadObjectDynCreate();
|
||||||
|
pHelp2 = (iFCOSpecHelper*)s2.ReadObjectDynCreate();
|
||||||
|
s2.Finit();
|
||||||
|
|
||||||
|
TEST(pHelp1->Compare(pSet3) == iFCOSpecHelper::CMP_EQ);
|
||||||
|
TEST(pHelp2->Compare(&noChildren) == iFCOSpecHelper::CMP_EQ);
|
||||||
|
TEST(pHelp1->Compare(&noChildren) != iFCOSpecHelper::CMP_EQ);
|
||||||
|
TEST(pHelp2->Compare(pSet3) != iFCOSpecHelper::CMP_EQ);
|
||||||
|
|
||||||
|
|
||||||
|
delete pSet3;
|
||||||
|
delete pSet4;
|
||||||
|
delete pHelp1;
|
||||||
|
delete pHelp2;
|
||||||
|
}
|
|
@ -31,15 +31,15 @@
|
||||||
//
|
//
|
||||||
// fcospeclist_t.cpp
|
// fcospeclist_t.cpp
|
||||||
|
|
||||||
#include "stdfco.h"
|
#include "fco/stdfco.h"
|
||||||
#include "fcospeclist.h"
|
#include "fco/fcospeclist.h"
|
||||||
#include "core/debug.h"
|
#include "core/debug.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include "fcospecimpl.h"
|
#include "fco/fcospecimpl.h"
|
||||||
#include "core/archive.h"
|
#include "core/archive.h"
|
||||||
#include "core/serializerimpl.h"
|
#include "core/serializerimpl.h"
|
||||||
#include "fcospecutil.h"
|
#include "fco/fcospecutil.h"
|
||||||
#include "fcospechelper.h"
|
#include "fco/fcospechelper.h"
|
||||||
|
|
||||||
void TestFCOSpecList()
|
void TestFCOSpecList()
|
||||||
{
|
{
|
|
@ -0,0 +1,85 @@
|
||||||
|
//
|
||||||
|
// The developer of the original code and/or files is Tripwire, Inc.
|
||||||
|
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
||||||
|
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
||||||
|
// reserved.
|
||||||
|
//
|
||||||
|
// This program is free software. The contents of this file are subject
|
||||||
|
// to the terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
// option) any later version. You may redistribute it and/or modify it
|
||||||
|
// only in compliance with the GNU General Public License.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful.
|
||||||
|
// However, this program is distributed AS-IS WITHOUT ANY
|
||||||
|
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
||||||
|
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
// USA.
|
||||||
|
//
|
||||||
|
// Nothing in the GNU General Public License or any other license to use
|
||||||
|
// the code or files shall permit you to use Tripwire's trademarks,
|
||||||
|
// service marks, or other intellectual property without Tripwire's
|
||||||
|
// prior written consent.
|
||||||
|
//
|
||||||
|
// If you have any questions, please contact Tripwire, Inc. at either
|
||||||
|
// info@tripwire.org or www.tripwire.org.
|
||||||
|
//
|
||||||
|
// fcospecutil_t.cpp
|
||||||
|
|
||||||
|
#include "fco/stdfco.h"
|
||||||
|
#include "fco/fcospecutil.h"
|
||||||
|
#include "core/debug.h"
|
||||||
|
#include "twtest/test.h"
|
||||||
|
#include "fco/fcospecimpl.h"
|
||||||
|
#include "fco/iterproxy.h"
|
||||||
|
#include "fco/fcospechelper.h"
|
||||||
|
|
||||||
|
void TestFcoSpecUtil()
|
||||||
|
{
|
||||||
|
cDebug d("TestFcoSpecUtil()");
|
||||||
|
|
||||||
|
// first check the equality operator...
|
||||||
|
cFCOSpecStopPointSet* pSet1 = new cFCOSpecStopPointSet;
|
||||||
|
cFCOSpecStopPointSet* pSet2 = new cFCOSpecStopPointSet;
|
||||||
|
cFCOSpecImpl* pSpec1 = new cFCOSpecImpl(_T("Spec1"), NULL, pSet1);
|
||||||
|
cFCOSpecImpl* pSpec2 = new cFCOSpecImpl(_T("Spec2"), NULL, pSet2);
|
||||||
|
|
||||||
|
pSpec1->SetStartPoint(cFCOName(_T("Dog")));
|
||||||
|
pSpec2->SetStartPoint(cFCOName(_T("Dog")));
|
||||||
|
pSet1->Add(cFCOName(_T("Dog/Bark")));
|
||||||
|
pSet2->Add(cFCOName(_T("Dog/Bark")));
|
||||||
|
pSet1->Add(cFCOName(_T("Dog/Pant")));
|
||||||
|
pSet2->Add(cFCOName(_T("Dog/Pant")));
|
||||||
|
TEST(iFCOSpecUtil::FCOSpecEqual(*pSpec1, *pSpec2));
|
||||||
|
|
||||||
|
// make them a little different...
|
||||||
|
cFCOSpecStopPointIter iter(*pSet1);
|
||||||
|
iter.SeekBegin();
|
||||||
|
cFCOName removedName = iter.StopPoint();
|
||||||
|
iter.Remove();
|
||||||
|
pSet1->Add(cFCOName(_T("Dog/Scratch")));
|
||||||
|
TEST(! iFCOSpecUtil::FCOSpecEqual(*pSpec1, *pSpec2));
|
||||||
|
|
||||||
|
pSet1->Add(removedName);
|
||||||
|
TEST(! iFCOSpecUtil::FCOSpecEqual(*pSpec1, *pSpec2));
|
||||||
|
|
||||||
|
|
||||||
|
// TODO -- implement a more appropriate less-than test
|
||||||
|
/* pSpec1->SetStartPoint(cFCOName(_T("Dog")));
|
||||||
|
pSpec2->AddStopPoint(cFCOName(_T("Howl")));
|
||||||
|
TEST(! iFCOSpecUtil::FCOSpecEqual (*pSpec1, *pSpec2));
|
||||||
|
TEST( iFCOSpecUtil::FCOSpecLessThan(*pSpec1, *pSpec2));
|
||||||
|
pSpec1->AddStopPoint(cFCOName(_T("Howm")));
|
||||||
|
TEST( iFCOSpecUtil::FCOSpecLessThan(*pSpec2, *pSpec1));
|
||||||
|
*/
|
||||||
|
|
||||||
|
pSpec1->Release();
|
||||||
|
pSpec2->Release();
|
||||||
|
|
||||||
|
d.TraceDebug("Leaving..\n");
|
||||||
|
}
|
|
@ -32,9 +32,9 @@
|
||||||
// file_t.cpp : A test harness for cFile, a class for abstracting
|
// file_t.cpp : A test harness for cFile, a class for abstracting
|
||||||
// file operations between different platforms.
|
// file operations between different platforms.
|
||||||
|
|
||||||
#include "stdcore.h"
|
#include "core/stdcore.h"
|
||||||
#include "file.h"
|
#include "core/file.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
void TestFile()
|
void TestFile()
|
|
@ -32,11 +32,11 @@
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// fileheader_t.cpp
|
// fileheader_t.cpp
|
||||||
|
|
||||||
#include "stdcore.h"
|
#include "core/stdcore.h"
|
||||||
#include "fileheader.h"
|
#include "core/fileheader.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include "serializerimpl.h"
|
#include "core/serializerimpl.h"
|
||||||
#include "archive.h"
|
#include "core/archive.h"
|
||||||
|
|
||||||
void TestFileHeader()
|
void TestFileHeader()
|
||||||
{
|
{
|
|
@ -35,8 +35,8 @@
|
||||||
// This is just to test my Copy() method.
|
// This is just to test my Copy() method.
|
||||||
// Feel free to add if you want.
|
// Feel free to add if you want.
|
||||||
|
|
||||||
#include "stdutil.h"
|
#include "util/stdutil.h"
|
||||||
#include "fileutil.h"
|
#include "util/fileutil.h"
|
||||||
#include "core/debug.h"
|
#include "core/debug.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
@ -50,7 +50,7 @@ void TestFileUtil()
|
||||||
|
|
||||||
TSTRING source, dest;
|
TSTRING source, dest;
|
||||||
|
|
||||||
source = _T("/etc/disktab");
|
source = _T("/etc/hosts");
|
||||||
dest = _T("/tmp/dest");
|
dest = _T("/tmp/dest");
|
||||||
bool blah = cFileUtil::Copy(source, dest);
|
bool blah = cFileUtil::Copy(source, dest);
|
||||||
(void)blah;
|
(void)blah;
|
|
@ -30,11 +30,11 @@
|
||||||
// info@tripwire.org or www.tripwire.org.
|
// info@tripwire.org or www.tripwire.org.
|
||||||
//
|
//
|
||||||
// fsdatasourceiter_t
|
// fsdatasourceiter_t
|
||||||
#include "stdfs.h"
|
#include "fs/stdfs.h"
|
||||||
#include "fsdatasourceiter.h"
|
#include "fs/fsdatasourceiter.h"
|
||||||
#include "core/fsservices.h"
|
#include "core/fsservices.h"
|
||||||
#include "core/debug.h"
|
#include "core/debug.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include "fco/fco.h"
|
#include "fco/fco.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -102,7 +102,7 @@ void TestFSDataSourceIter()
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// go to my temp directory and iterate over everything!
|
// go to my temp directory and iterate over everything!
|
||||||
iter.SeekToFCO( cFCOName(_T("d:/test")) );
|
iter.SeekToFCO( cFCOName(_T("/tmp")) );
|
||||||
//
|
//
|
||||||
// print out everything below the iterator
|
// print out everything below the iterator
|
||||||
//
|
//
|
||||||
|
@ -110,7 +110,7 @@ void TestFSDataSourceIter()
|
||||||
}
|
}
|
||||||
catch( eError& e )
|
catch( eError& e )
|
||||||
{
|
{
|
||||||
d.TraceError( "*** Caught exception %d %s\n", e.GetID(), e.GetMsg() );
|
d.TraceError( "*** Caught exception %d %s\n", e.GetID(), e.GetMsg().c_str() );
|
||||||
TEST( false );
|
TEST( false );
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -30,8 +30,8 @@
|
||||||
// info@tripwire.org or www.tripwire.org.
|
// info@tripwire.org or www.tripwire.org.
|
||||||
//
|
//
|
||||||
// fsobject_t -- the file system object test driver
|
// fsobject_t -- the file system object test driver
|
||||||
#include "stdfs.h"
|
#include "fs/stdfs.h"
|
||||||
#include "fsobject.h"
|
#include "fs/fsobject.h"
|
||||||
|
|
||||||
void TestFSObject()
|
void TestFSObject()
|
||||||
{
|
{
|
|
@ -0,0 +1,131 @@
|
||||||
|
//
|
||||||
|
// The developer of the original code and/or files is Tripwire, Inc.
|
||||||
|
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
||||||
|
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
||||||
|
// reserved.
|
||||||
|
//
|
||||||
|
// This program is free software. The contents of this file are subject
|
||||||
|
// to the terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
// option) any later version. You may redistribute it and/or modify it
|
||||||
|
// only in compliance with the GNU General Public License.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful.
|
||||||
|
// However, this program is distributed AS-IS WITHOUT ANY
|
||||||
|
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
||||||
|
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
// USA.
|
||||||
|
//
|
||||||
|
// Nothing in the GNU General Public License or any other license to use
|
||||||
|
// the code or files shall permit you to use Tripwire's trademarks,
|
||||||
|
// service marks, or other intellectual property without Tripwire's
|
||||||
|
// prior written consent.
|
||||||
|
//
|
||||||
|
// If you have any questions, please contact Tripwire, Inc. at either
|
||||||
|
// info@tripwire.org or www.tripwire.org.
|
||||||
|
//
|
||||||
|
// fspropcalc_t.cpp -- the fs property calculator test driver
|
||||||
|
#include "fs/stdfs.h"
|
||||||
|
#include "fs/fspropcalc.h"
|
||||||
|
#include "core/debug.h"
|
||||||
|
#include "fco/fcopropset.h"
|
||||||
|
#include "fs/fspropset.h"
|
||||||
|
#include "twtest/test.h"
|
||||||
|
#include "fco/fco.h"
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// PrintProps -- prints out all the valid property names and values as pairs...
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
/*
|
||||||
|
static void PrintProps(const iFCO* pFCO)
|
||||||
|
{
|
||||||
|
cDebug d("PrintProps");
|
||||||
|
const iFCOPropSet* pSet = pFCO->GetPropSet();
|
||||||
|
const cFCOPropVector& v = pSet->GetValidVector();
|
||||||
|
|
||||||
|
for(int i=0; i<pSet->GetNumProps(); i++)
|
||||||
|
{
|
||||||
|
if(v.ContainsItem(i))
|
||||||
|
{
|
||||||
|
d.TraceDebug("[%d] %s\t%s\n", i, pSet->GetPropName(i), pSet->GetPropAt(i)->AsString().c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
void TestFSPropCalc()
|
||||||
|
{
|
||||||
|
#pragma message( __FILE__ "(1) : TODO - implement this test file")
|
||||||
|
#if 0
|
||||||
|
cDebug d("TestFSPropCalc");
|
||||||
|
cFSDataSource ds;
|
||||||
|
|
||||||
|
iFSServices* pFSServices = iFSServices::GetInstance();
|
||||||
|
bool bCaseSensitive = pFSServices->IsCaseSensitive();
|
||||||
|
|
||||||
|
// oh boy! I finally get to test property calculation!
|
||||||
|
d.TraceDebug("Creating FCO c:\\temp\\foo.bin\n");
|
||||||
|
|
||||||
|
cFileArchive arch;
|
||||||
|
int ret;
|
||||||
|
ret = arch.OpenReadWrite(TEMP_DIR _T("/foo.bin"), true);
|
||||||
|
TEST(ret);
|
||||||
|
arch.WriteBlob("\x1\x2\x3\x4\x5\x6\x7\x8\x9\x0", 10);
|
||||||
|
arch.Close();
|
||||||
|
|
||||||
|
// get the fco but none of its children...
|
||||||
|
iFCO* pFCO = ds.CreateFCO(cFCOName(TEMP_DIR _T("/foo.bin")), 0);
|
||||||
|
ASSERT(pFCO);
|
||||||
|
|
||||||
|
// create the calculator and set some properties to calculate...
|
||||||
|
cFSPropCalc propCalc;
|
||||||
|
cFCOPropVector v(pFCO->GetPropSet()->GetValidVector().GetSize());
|
||||||
|
v.AddItem(cFSPropSet::PROP_DEV);
|
||||||
|
v.AddItem(cFSPropSet::PROP_CTIME);
|
||||||
|
v.AddItem(cFSPropSet::PROP_SIZE);
|
||||||
|
v.AddItem(cFSPropSet::PROP_BLOCKS);
|
||||||
|
v.AddItem(cFSPropSet::PROP_CRC32);
|
||||||
|
v.AddItem(cFSPropSet::PROP_MD5);
|
||||||
|
propCalc.SetPropVector(v);
|
||||||
|
|
||||||
|
// finally, do the calculation
|
||||||
|
pFCO->AcceptVisitor(&propCalc);
|
||||||
|
|
||||||
|
// see what properties were evaluated...
|
||||||
|
PrintProps(pFCO);
|
||||||
|
|
||||||
|
d.TraceDebug("CRC32 should be \"2ARm2G\"\n");
|
||||||
|
d.TraceDebug("MD5 should be \"1.Oyjj1dbom.DF2KktvtQe\"\n");
|
||||||
|
|
||||||
|
// if we do it with "Leave", then nothing should change...
|
||||||
|
d.TraceDebug("Changing collision action to Leave; the following run should _not_ call Stat()\n");
|
||||||
|
propCalc.SetCollisionAction(iFCOPropCalc::PROP_LEAVE);
|
||||||
|
pFCO->AcceptVisitor(&propCalc);
|
||||||
|
|
||||||
|
|
||||||
|
// test only calculating unevaluated props...
|
||||||
|
d.TraceDebug("invalidating PROP_MD5 in fco, and changing the file. \n\tAll should remain the same except md5.\n");
|
||||||
|
ret = arch.OpenReadWrite(TEMP_DIR _T("/foo.bin"), true);
|
||||||
|
TEST(ret);
|
||||||
|
arch.WriteString(_T("Bark Bark Bark\n"));
|
||||||
|
arch.Close();
|
||||||
|
|
||||||
|
// do the calculation
|
||||||
|
pFCO->GetPropSet()->InvalidateProp(cFSPropSet::PROP_MD5);
|
||||||
|
pFCO->AcceptVisitor(&propCalc);
|
||||||
|
PrintProps(pFCO);
|
||||||
|
|
||||||
|
|
||||||
|
// TODO -- is there any way to test the error queue in the prop calc?
|
||||||
|
|
||||||
|
// release the fco
|
||||||
|
pFCO->Release();
|
||||||
|
#endif
|
||||||
|
return;
|
||||||
|
}
|
|
@ -32,11 +32,11 @@
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// fspropdisplayer_t -- cFSPropDisplayer test driver
|
// fspropdisplayer_t -- cFSPropDisplayer test driver
|
||||||
|
|
||||||
#include "stdfs.h"
|
#include "fs/stdfs.h"
|
||||||
#include "fspropdisplayer.h"
|
#include "fs/fspropdisplayer.h"
|
||||||
#include "fspropcalc.h"
|
#include "fs/fspropcalc.h"
|
||||||
#include "fsobject.h"
|
#include "fs/fsobject.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include "core/serializerimpl.h"
|
#include "core/serializerimpl.h"
|
||||||
|
|
||||||
class cTestFSPropDisplayer
|
class cTestFSPropDisplayer
|
|
@ -0,0 +1,96 @@
|
||||||
|
//
|
||||||
|
// The developer of the original code and/or files is Tripwire, Inc.
|
||||||
|
// Portions created by Tripwire, Inc. are copyright (C) 2000 Tripwire,
|
||||||
|
// Inc. Tripwire is a registered trademark of Tripwire, Inc. All rights
|
||||||
|
// reserved.
|
||||||
|
//
|
||||||
|
// This program is free software. The contents of this file are subject
|
||||||
|
// to the terms of the GNU General Public License as published by the
|
||||||
|
// Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
// option) any later version. You may redistribute it and/or modify it
|
||||||
|
// only in compliance with the GNU General Public License.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful.
|
||||||
|
// However, this program is distributed AS-IS WITHOUT ANY
|
||||||
|
// WARRANTY; INCLUDING THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS
|
||||||
|
// FOR A PARTICULAR PURPOSE. Please see the GNU General Public License
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
// USA.
|
||||||
|
//
|
||||||
|
// Nothing in the GNU General Public License or any other license to use
|
||||||
|
// the code or files shall permit you to use Tripwire's trademarks,
|
||||||
|
// service marks, or other intellectual property without Tripwire's
|
||||||
|
// prior written consent.
|
||||||
|
//
|
||||||
|
// If you have any questions, please contact Tripwire, Inc. at either
|
||||||
|
// info@tripwire.org or www.tripwire.org.
|
||||||
|
//
|
||||||
|
// fspropset_t.cpp -- FSPropSet test driver
|
||||||
|
#include "fs/stdfs.h"
|
||||||
|
#include "fs/fspropset.h"
|
||||||
|
#include "twtest/test.h"
|
||||||
|
#include "core/debug.h"
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// PrintPropVector -- function that prints the contents of a cFCOPropVector
|
||||||
|
// TODO: We might want to add this functionality to the property vector some
|
||||||
|
// day...
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
static void PrintPropVector(const cFCOPropVector& v, cDebug& d)
|
||||||
|
{
|
||||||
|
TOSTRINGSTREAM stream;
|
||||||
|
for(int i=0; i<v.GetSize(); i++)
|
||||||
|
{
|
||||||
|
if(v.ContainsItem(i))
|
||||||
|
stream << i << "," << " ";
|
||||||
|
}
|
||||||
|
stream << std::ends;
|
||||||
|
d.TraceDebug("%s\n", stream.str().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void TestFSPropSet()
|
||||||
|
{
|
||||||
|
cDebug d("TestFSPropSet");
|
||||||
|
|
||||||
|
cFSPropSet propSet;
|
||||||
|
|
||||||
|
// mess around with inode...
|
||||||
|
d.TraceDebug("Setting Inode (property %d)\n", cFSPropSet::PROP_INODE);
|
||||||
|
propSet.SetInode(53);
|
||||||
|
TEST(propSet.GetInode() == 53);
|
||||||
|
d.TraceDebug("Valid Vector is now \n");
|
||||||
|
PrintPropVector(propSet.GetValidVector(), d);
|
||||||
|
TEST(cFSPropSet::PROP_INODE == propSet.GetPropIndex(_T("Inode Number")));
|
||||||
|
TEST(TSTRING(_T("Inode Number")).compare(propSet.GetPropName(cFSPropSet::PROP_INODE)) == 0);
|
||||||
|
|
||||||
|
// mess around with blocks...
|
||||||
|
d.TraceDebug("Setting Blocks (property %d)\n", cFSPropSet::PROP_BLOCKS);
|
||||||
|
propSet.SetBlocks(50);
|
||||||
|
TEST(propSet.GetBlocks() == 50);
|
||||||
|
d.TraceDebug("Valid Vector is now \n");
|
||||||
|
PrintPropVector(propSet.GetValidVector(), d);
|
||||||
|
TEST(cFSPropSet::PROP_BLOCKS == propSet.GetPropIndex(_T("Blocks")));
|
||||||
|
TEST(TSTRING(_T("Blocks")).compare(propSet.GetPropName(cFSPropSet::PROP_BLOCKS)) == 0);
|
||||||
|
|
||||||
|
// try copying it...
|
||||||
|
cFSPropSet ps2 = propSet;
|
||||||
|
d.TraceDebug("Copied Object's Valid Vector:\n");
|
||||||
|
PrintPropVector(propSet.GetValidVector(), d);
|
||||||
|
TEST(ps2.GetValidVector() == propSet.GetValidVector());
|
||||||
|
TEST(ps2.GetBlocks() == propSet.GetBlocks());
|
||||||
|
TEST(ps2.GetInode() == propSet.GetInode());
|
||||||
|
|
||||||
|
// try invalidating properties...
|
||||||
|
propSet.InvalidateProp(cFSPropSet::PROP_INODE);
|
||||||
|
TEST( propSet.GetValidVector().ContainsItem(cFSPropSet::PROP_INODE) == false );
|
||||||
|
propSet.InvalidateAll();
|
||||||
|
cFCOPropVector emptyVector(propSet.GetValidVector().GetSize());
|
||||||
|
TEST(propSet.GetValidVector() == emptyVector);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
|
@ -31,14 +31,14 @@
|
||||||
//
|
//
|
||||||
// fcospecimpl test driver
|
// fcospecimpl test driver
|
||||||
|
|
||||||
#include "stdfco.h"
|
#include "fco/stdfco.h"
|
||||||
#include "fcospecimpl.h"
|
#include "fco/fcospecimpl.h"
|
||||||
#include "core/debug.h"
|
#include "core/debug.h"
|
||||||
//#include "fs/fsdatasource.h"
|
//#include "fs/fsdatasource.h"
|
||||||
#include "iterproxy.h"
|
#include "fco/iterproxy.h"
|
||||||
#include "core/error.h"
|
#include "core/error.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include "fcospechelper.h"
|
#include "fco/fcospechelper.h"
|
||||||
#include "core/fsservices.h"
|
#include "core/fsservices.h"
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
|
@ -33,9 +33,9 @@
|
||||||
// genre_t.cpp
|
// genre_t.cpp
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "stdfco.h"
|
#include "fco/stdfco.h"
|
||||||
#include "genreswitcher.h"
|
#include "fco/genreswitcher.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
|
|
||||||
#ifdef _CPPRTTI
|
#ifdef _CPPRTTI
|
||||||
#include "fs/fsfactory.h"
|
#include "fs/fsfactory.h"
|
|
@ -33,10 +33,10 @@
|
||||||
// genrespeclist_t.cpp
|
// genrespeclist_t.cpp
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "stdfco.h"
|
#include "fco/stdfco.h"
|
||||||
#include "genrespeclist.h"
|
#include "fco/genrespeclist.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include "fcospecimpl.h"
|
#include "fco/fcospecimpl.h"
|
||||||
|
|
||||||
void TestGenreSpecList()
|
void TestGenreSpecList()
|
||||||
{
|
{
|
|
@ -33,12 +33,15 @@
|
||||||
// genreswitcher_t.h
|
// genreswitcher_t.h
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "stdfco.h"
|
#include "fco/stdfco.h"
|
||||||
#include "genreswitcher.h"
|
#include "fco/genreswitcher.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
|
|
||||||
void TestGenre()
|
void TestGenre()
|
||||||
{
|
{
|
||||||
|
TCERR << "TODO: genreswitcher_t.cpp test ifdef'd due to unhandled exception" << std::endl;
|
||||||
|
|
||||||
|
#if 0
|
||||||
cDebug d("TestGenre");
|
cDebug d("TestGenre");
|
||||||
d.TraceDebug("Entering...\n");
|
d.TraceDebug("Entering...\n");
|
||||||
|
|
||||||
|
@ -51,4 +54,5 @@ void TestGenre()
|
||||||
TEST(cGenreSwitcher::GetInstance()->StringToGenre(_T("none of the above")) == cGenre::GENRE_INVALID);
|
TEST(cGenreSwitcher::GetInstance()->StringToGenre(_T("none of the above")) == cGenre::GENRE_INVALID);
|
||||||
|
|
||||||
d.TraceDebug("All tests passed.\n");
|
d.TraceDebug("All tests passed.\n");
|
||||||
|
#endif
|
||||||
}
|
}
|
|
@ -34,10 +34,10 @@
|
||||||
//
|
//
|
||||||
// test the grow heap component
|
// test the grow heap component
|
||||||
|
|
||||||
#include "stdcore.h"
|
#include "core/stdcore.h"
|
||||||
#include "growheap.h"
|
#include "core/growheap.h"
|
||||||
#include "test/test.h"
|
#include "twtest/test.h"
|
||||||
#include "error.h"
|
#include "core/error.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue