diff options
Diffstat (limited to '')
-rw-r--r-- | private/nw/convert/nwconv/servlist.h | 311 |
1 files changed, 311 insertions, 0 deletions
diff --git a/private/nw/convert/nwconv/servlist.h b/private/nw/convert/nwconv/servlist.h new file mode 100644 index 000000000..ec4075e91 --- /dev/null +++ b/private/nw/convert/nwconv/servlist.h @@ -0,0 +1,311 @@ +/*+-------------------------------------------------------------------------+ + | Copyright 1993-1994 (C) Microsoft Corporation - All rights reserved. | + +-------------------------------------------------------------------------+*/ + +#ifndef _HSERVLIST_ +#define _HSERVLIST_ + +#ifdef __cplusplus +extern "C"{ +#endif + +/*+-------------------------------------------------------------------------+ + | User List | + +-------------------------------------------------------------------------+*/ +typedef struct _USER_BUFFER { + TCHAR Name[MAX_USER_NAME_LEN + 1]; + TCHAR NewName[MAX_USER_NAME_LEN + MAX_UCONST_LEN]; + TCHAR Password[MAX_PW_LEN + 1]; + + USHORT err; + BOOL Overwrite; + BOOL IsNewName; +} USER_BUFFER; + +typedef struct _USER_LIST { + ULONG Count; + USER_BUFFER UserBuffer[]; +} USER_LIST; + + +/*+-------------------------------------------------------------------------+ + | Group List | + +-------------------------------------------------------------------------+*/ +typedef struct _GROUP_BUFFER { + TCHAR Name[MAX_GROUP_NAME_LEN + 1]; + TCHAR NewName[MAX_GROUP_NAME_LEN + MAX_UCONST_LEN]; + + USHORT err; + BOOL IsNewName; +} GROUP_BUFFER; + +typedef struct _GROUP_LIST { + ULONG Count; + GROUP_BUFFER GroupBuffer[]; +} GROUP_LIST; + + +/*+-------------------------------------------------------------------------+ + | Drive Lists | + +-------------------------------------------------------------------------+*/ + +// Drive type of 1 is okay to set perms on, all others are not... +#define DRIVE_TYPE_NTFS 1 + +// Drive list is only kept for destination servers and is mainly used to track +// remaining free space on the drive. +typedef struct _DRIVE_BUFFER { + UINT Type; + TCHAR Drive[2]; + TCHAR DriveType[20]; + TCHAR Name[20]; + ULONG TotalSpace; + ULONG FreeSpace; // Free space before stuff we are transfering + ULONG AllocSpace; // Approx size of stuff we are transferring +} DRIVE_BUFFER; + +typedef struct _DRIVE_LIST { + ULONG Count; + DRIVE_BUFFER DList[]; +} DRIVE_LIST; + + +// Stores a server share and a link to the structures describing the files +// to convert +typedef struct _SHARE_BUFFER { + BOOL VFlag; // to distinguish between virtual and normal share + + USHORT Index; + + TCHAR Name[MAX_SHARE_NAME_LEN + 1]; + BOOL Convert; + BOOL HiddenFiles; + BOOL SystemFiles; + BOOL ToFat; // Flag if user says OK to go to a FAT drive + DIR_BUFFER *Root; + DRIVE_BUFFER *Drive; // Used only for dest shares - for free space calcs. + ULONG Size; // Used for source shares - approx allocated space + TCHAR Path[MAX_PATH + 1]; + TCHAR SubDir[MAX_PATH + 1]; // for source - subdir to copy to + + // Following only used for source shares - describes destination share. + // Virtual tells whether data pointed to is a SHARE_BUFFER or + // VIRTUAL_SHARE_BUFFER. (Note: Use struct SHARE_BUFFER even though + // it may be VIRTUAL to simplify logic if it is a SHARE_BUFFER). + BOOL Virtual; + struct _SHARE_BUFFER *DestShare; +} SHARE_BUFFER; + +// List of all server shares and files under them to convert. +typedef struct _SHARE_LIST { + ULONG Count; + ULONG ConvertCount; + BOOL Fixup; + SHARE_BUFFER SList[]; +} SHARE_LIST; + + +// Virtual shares are ones that we need to create - these are only for +// destination shares as all source shares must obviously already exist. +// This must be a linked list as it can be dynamically added to / deleted from. +typedef struct _VIRTUAL_SHARE_BUFFER { + BOOL VFlag; + + struct _VIRTUAL_SHARE_BUFFER *next; + struct _VIRTUAL_SHARE_BUFFER *prev; + + USHORT Index; + + LPTSTR Name; + LONG UseCount; // How many things going to it (so can del if unused) + TCHAR Path[MAX_PATH + 1]; + DRIVE_BUFFER *Drive; +} VIRTUAL_SHARE_BUFFER; + + +// Keep the domain buffers for when servers are part of a domain to point +// to the PDC and also when you choose a trusted domain. It contains an +// abreviated form of a server buffer for the PDC info. +typedef struct _DOMAIN_BUFFER { + struct _DOMAIN_BUFFER *next; + struct _DOMAIN_BUFFER *prev; + + USHORT Index; + + LPTSTR Name; + + // PDC Info + LPTSTR PDCName; + DWORD Type; + DWORD VerMaj; + DWORD VerMin; + LONG UseCount; +} DOMAIN_BUFFER; + + +#define SERV_TYPE_NETWARE 1 +#define SERV_TYPE_NT 2 +/*+-------------------------------------------------------------------------+ + | Server Lists + | + | The source and destination SERVER_BUFFER lists are kept independantly + | of the conversion list as multiple conversions can be done to one server. + | This allows easier tracking of virtual shares that need to be created and + | total free space on the server after all of the conversions are counted in + | (to see if there is enough free space to transfer files). + | + | Source server has no use count as a source server can only be included once + | in a conversion. Also no drive list as we can't get the info (on NetWare + | at least) and it isn't needed. + | + +-------------------------------------------------------------------------+*/ +typedef struct _SOURCE_SERVER_BUFFER { + struct _SOURCE_SERVER_BUFFER *next; + struct _SOURCE_SERVER_BUFFER *prev; + + USHORT Index; + + UINT Type; // Type of server (NetWare only for now) + BYTE VerMaj; + BYTE VerMin; + LPTSTR LName; + LPTSTR Name; + SHARE_LIST *ShareList; +} SOURCE_SERVER_BUFFER; + + +// Destination server must contain useage count as several source servers can +// be merged into it. If UseCount goes to 0, then we can purge this record +// out as it is no longer needed. +typedef struct _DEST_SERVER_BUFFER { + struct _DEST_SERVER_BUFFER *next; + struct _DEST_SERVER_BUFFER *prev; + + USHORT Index; + + DWORD Type; + DWORD VerMaj; + DWORD VerMin; + LPTSTR LName; // Name with double whack pre-pended + LPTSTR Name; + SHARE_LIST *ShareList; + + ULONG NumVShares; + VIRTUAL_SHARE_BUFFER *VShareStart; + VIRTUAL_SHARE_BUFFER *VShareEnd; + ULONG UseCount; + BOOL IsNTAS; + BOOL IsFPNW; + BOOL InDomain; + DOMAIN_BUFFER *Domain; + DRIVE_LIST *DriveList; +} DEST_SERVER_BUFFER; + + +/*+-------------------------------------------------------------------------+ + | Convert List + | + | This is the main data structure that everything links off of. The + | ConvertOptions is a void type to allow it to be based on the type + | of server being converted. This allows the program to be (relatively) + | easily modified to work with other source server types (like + | LAN Server). + | + | The Server list constructs (SOURCE_SERVER_BUFFER and + | DEST_SERVER_BUFFER) are kept in addition to this, but this contains + | some links to those structures. + | + +-------------------------------------------------------------------------+*/ +typedef struct _CONVERT_LIST { + struct _CONVERT_LIST *next; + struct _CONVERT_LIST *prev; + SOURCE_SERVER_BUFFER *SourceServ; + DEST_SERVER_BUFFER *FileServ; + + void *ConvertOptions; + void *FileOptions; +} CONVERT_LIST; + + +/*+-------------------------------------------------------------------------+ + | Function Prototypes | + +-------------------------------------------------------------------------+*/ +void TreeSave(HANDLE hFile, DIR_BUFFER *Dir); +void TreeLoad(HANDLE hFile, DIR_BUFFER **pDir); + +int __cdecl UserListCompare(const void *arg1, const void *arg2); + +void ShareListDelete(SHARE_LIST *ShareList); +void DestShareListFixup(DEST_SERVER_BUFFER *DServ); +void ShareListSave(HANDLE hFile, SHARE_LIST *ShareList); +void ShareListLoad(HANDLE hFile, SHARE_LIST **lpShareList); + +SOURCE_SERVER_BUFFER *SServListAdd(LPTSTR ServerName); +void SServListDelete(SOURCE_SERVER_BUFFER *tmpPtr); +void SServListDeleteAll(); +SOURCE_SERVER_BUFFER *SServListFind(LPTSTR ServerName); +void SServListIndex(); +void SServListIndexMapGet(DWORD **pMap); +void SServListFixup(); +void SServListSave(HANDLE hFile); +void SServListLoad(HANDLE hFile); + +DEST_SERVER_BUFFER *DServListAdd(LPTSTR ServerName); +void DServListDelete(DEST_SERVER_BUFFER *tmpPtr); +void DServListDeleteAll(); +DEST_SERVER_BUFFER *DServListFind(LPTSTR ServerName); +void DServListIndex(); +void DServListIndexMapGet(DWORD **pMap); +void DServListFixup(); +void DServListSave(HANDLE hFile); +void DServListLoad(HANDLE hFile); +void DServListSpaceFree(); + +VIRTUAL_SHARE_BUFFER *VShareListAdd(DEST_SERVER_BUFFER *DServ, LPTSTR ShareName, LPTSTR Path); +void VShareListDelete(DEST_SERVER_BUFFER *DServ, VIRTUAL_SHARE_BUFFER *tmpPtr); +void VShareListDeleteAll(DEST_SERVER_BUFFER *DServ); +void VShareListIndex(DEST_SERVER_BUFFER *DServ) ; +void VShareListIndexMapGet(DEST_SERVER_BUFFER *DServ, DWORD **pMap); +void VShareListSave(HANDLE hFile, DEST_SERVER_BUFFER *DServ); +void VShareListLoad(HANDLE hFile, DEST_SERVER_BUFFER *DServ); + +DOMAIN_BUFFER *DomainListAdd(LPTSTR DomainName, LPTSTR PDCName); +void DomainListDelete(DOMAIN_BUFFER *tmpPtr); +void DomainListDeleteAll(); +DOMAIN_BUFFER *DomainListFind(LPTSTR DomainName); +void DomainListIndex(); +void DomainListIndexMapGet(DWORD **pMap); +void DomainListSave(HANDLE hFile); +void DomainListLoad(HANDLE hFile); + +CONVERT_LIST *ConvertListAdd(SOURCE_SERVER_BUFFER *SourceServer, DEST_SERVER_BUFFER *DestServer); +void ConvertListDelete(CONVERT_LIST *tmpPtr); +void ConvertListDeleteAll(); +void ConvertListSaveAll(HANDLE hFile); +void ConvertListLoadAll(HANDLE hFile); +void ConvertListFixup(HWND hWnd); +void ConvertListLog(); + +LPTSTR UserServerNameGet(DEST_SERVER_BUFFER *DServ, void *ConvOpt); + +// Internal Data Structures +extern UINT NumServerPairs; +extern CONVERT_LIST *ConvertListStart; +extern CONVERT_LIST *ConvertListEnd; +extern CONVERT_LIST ConvertListDefault; +extern CONVERT_LIST *CurrentConvertList; + +extern SOURCE_SERVER_BUFFER *SServListStart; +extern SOURCE_SERVER_BUFFER *SServListEnd; +extern SOURCE_SERVER_BUFFER *SServListCurrent; +extern DEST_SERVER_BUFFER *DServListStart; +extern DEST_SERVER_BUFFER *DServListEnd; +extern DEST_SERVER_BUFFER *DServListCurrent; +extern DOMAIN_BUFFER *DomainListStart; +extern DOMAIN_BUFFER *DomainListEnd; + +#ifdef __cplusplus +} +#endif + +#endif |