summaryrefslogtreecommitdiffstats
path: root/private/nw/convert/nwconv/servlist.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--private/nw/convert/nwconv/servlist.h311
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