You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
3.2 KiB
126 lines
3.2 KiB
// Basic constants and structures
|
|
// Copyright (c) 2001 Microsoft Corporation
|
|
// Jun 2001 lucios
|
|
|
|
#ifndef CONSTANTS_HPP
|
|
#define CONSTANTS_HPP
|
|
|
|
#include <stdlib.h>
|
|
#include <set>
|
|
|
|
struct AnalysisResults;
|
|
class CSVDSReader;
|
|
|
|
using namespace std;
|
|
|
|
// Variables kept from analysis to repair
|
|
extern bool goodAnalysis;
|
|
extern AnalysisResults results;
|
|
extern String targetDomainControllerName;
|
|
extern String completeDcName;
|
|
extern String csvFileName;
|
|
extern String csv409Name;
|
|
extern CSVDSReader csvReaderIntl;
|
|
extern CSVDSReader csvReader409;
|
|
extern String rootContainerDn;
|
|
extern String ldapPrefix;
|
|
extern String domainName;
|
|
|
|
// Used to hold the latest error
|
|
extern String error;
|
|
|
|
// Used in WinGetVLFilePointer. Declared in constants.cpp as ={0};
|
|
extern LARGE_INTEGER zero;
|
|
|
|
enum TYPE_OF_CHANGE
|
|
{
|
|
// NOP stands for no operation.
|
|
// It gives an alternative way to limit the
|
|
// enumeration of CHANGE_LIST
|
|
NOP,
|
|
ADD_ALL_CSV_VALUES,
|
|
ADD_VALUE,
|
|
ADD_GUID,
|
|
REPLACE_W2K_SINGLE_VALUE,
|
|
REPLACE_W2K_MULTIPLE_VALUE,
|
|
REMOVE_GUID,
|
|
REPLACE_GUID,
|
|
ADD_OBJECT
|
|
|
|
};
|
|
|
|
struct sChange
|
|
{
|
|
String object;
|
|
String property;
|
|
String firstArg;
|
|
String secondArg;
|
|
TYPE_OF_CHANGE type;
|
|
};
|
|
|
|
typedef list <
|
|
sChange,
|
|
Burnslib::Heap::Allocator< sChange >
|
|
> changeList;
|
|
|
|
|
|
typedef map <
|
|
long, // locale
|
|
changeList,
|
|
less< long > ,
|
|
Burnslib::Heap::Allocator< changeList >
|
|
> objectChanges;
|
|
|
|
// designed to be used as a less<GUID> operator in a map like
|
|
// std::map< GUID,abc,GUIDLess<GUID> > mpGUID;
|
|
template<class T>
|
|
struct GUIDLess
|
|
{
|
|
bool operator()(const T& x, const T& y) const
|
|
{
|
|
if(x.Data1 != y.Data1) return (x.Data1 < y.Data1);
|
|
if(x.Data2 != y.Data2) return (x.Data2 < y.Data2);
|
|
if(x.Data3 != y.Data3) return (x.Data3 < y.Data3);
|
|
if(x.Data4[0] != y.Data4[0]) return (x.Data4[0] < y.Data4[0]);
|
|
if(x.Data4[1] != y.Data4[1]) return (x.Data4[1] < y.Data4[1]);
|
|
if(x.Data4[2] != y.Data4[2]) return (x.Data4[2] < y.Data4[2]);
|
|
if(x.Data4[3] != y.Data4[3]) return (x.Data4[3] < y.Data4[3]);
|
|
if(x.Data4[4] != y.Data4[4]) return (x.Data4[4] < y.Data4[4]);
|
|
if(x.Data4[5] != y.Data4[5]) return (x.Data4[5] < y.Data4[5]);
|
|
if(x.Data4[6] != y.Data4[6]) return (x.Data4[6] < y.Data4[6]);
|
|
return (x.Data4[7] < y.Data4[7]);
|
|
}
|
|
};
|
|
|
|
|
|
typedef map <
|
|
GUID,
|
|
objectChanges,
|
|
GUIDLess<GUID>,
|
|
Burnslib::Heap::Allocator<objectChanges>
|
|
> allChanges;
|
|
|
|
extern allChanges changes;
|
|
|
|
|
|
extern const long LOCALEIDS[];
|
|
extern const long LOCALE409[];
|
|
|
|
void addChange
|
|
(
|
|
const GUID guid,
|
|
const long locale,
|
|
const wchar_t *object,
|
|
const wchar_t *property,
|
|
const wchar_t *firstArg,
|
|
const wchar_t *secondArg,
|
|
const enum TYPE_OF_CHANGE type
|
|
);
|
|
|
|
// implemented in guids.cpp
|
|
void setChanges();
|
|
|
|
extern GUID guids[];
|
|
|
|
|
|
#endif;
|