summaryrefslogtreecommitdiffstats
path: root/private/nw/convert/nwconv/filesel.h
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/nw/convert/nwconv/filesel.h
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/nw/convert/nwconv/filesel.h')
-rw-r--r--private/nw/convert/nwconv/filesel.h130
1 files changed, 130 insertions, 0 deletions
diff --git a/private/nw/convert/nwconv/filesel.h b/private/nw/convert/nwconv/filesel.h
new file mode 100644
index 000000000..f09ac1676
--- /dev/null
+++ b/private/nw/convert/nwconv/filesel.h
@@ -0,0 +1,130 @@
+/*+-------------------------------------------------------------------------+
+ | Copyright 1993-1994 (C) Microsoft Corporation - All rights reserved. |
+ +-------------------------------------------------------------------------+*/
+
+#ifndef _HFILESEL_
+#define _HFILESEL_
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+// Forward references as the structures are recursively linked
+struct _DIR_BUFFER;
+struct _DIR_LIST;
+struct _FILE_BUFFER;
+struct _FILE_LIST;
+struct SHARE_BUFFER;
+
+/*+-------------------------------------------------------------------------+
+ |
+ | The dir/file lists contain all the information used when working with
+ | a file tree. The naming convention is that a buffer (I.E.
+ | DIR_BUFFER) contains the information for one entry (one directory
+ | or one file). A List is an array of buffers of the appropriate
+ | type (DIR_LIST contains an array of DIR_BUFFERS).
+ |
+ | The whole mess starts with a root DIR_BUFFER, the DIR_BUFFER then
+ | points to a cascading chain of DIR and FILE LISTS.
+ |
+ | Almost all of the structures are a doubly linked list with a pointer back
+ | to their parent. A buffer parent pointer, points to it's parent list
+ | structure. The List structure then has a back pointer to the parent
+ | DIR_BUFFER. This facilitates recursing up and down the chain when
+ | an item is checked/un-checked and it's parent and/or children are affected.
+ |
+ | +--------+ +----------+
+ | | Dir |<--->| Dir List |
+ | | Buffer |<-+ +----------+
+ | +--------+ | | Dir |-->Dir List...
+ | | | Buffer |-->File List...
+ | | + - - - - -+
+ | | | |
+ | | + - - - - -+
+ | | | |
+ | |
+ | |
+ | | +-----------+
+ | +->| File List |
+ | +-----------+
+ | | File |
+ | | Buffer |
+ | + - - - - - +
+ | | |
+ | + - - - - - +
+ | | |
+ |
+ +-------------------------------------------------------------------------+*/
+#define CONVERT_NONE 0
+#define CONVERT_ALL 1
+#define CONVERT_PARTIAL 2
+
+// A dir buffer holds a directory or sub-directory entry, with pointers to the
+// files and other dirs within it.
+typedef struct _DIR_BUFFER {
+ TCHAR Name[MAX_PATH];
+ struct _DIR_LIST *parent;
+ BOOL Last; // Flag is last dir-buffer in list
+ DWORD Attributes;
+ BYTE Convert; // None, All or Partial
+ BOOL Special;
+
+ struct _DIR_LIST *DirList; // Directory List structure
+ struct _FILE_LIST *FileList; // File List structure
+} DIR_BUFFER;
+
+// A dir list contains the sub-directories in a directory - basically a count
+// and then array of sub-dirs.
+typedef struct _DIR_LIST {
+ ULONG Count;
+ DIR_BUFFER *parent;
+ UINT Level; // how deeply nested in file tree (nesting level)
+ DIR_BUFFER DirBuffer[];
+} DIR_LIST;
+
+
+// Structures to hold information on individual files selected/de-selected for
+// conversion
+typedef struct _FILE_BUFFER {
+ TCHAR Name[MAX_PATH];
+ struct _FILE_LIST *parent;
+ BOOL Convert;
+ DWORD Attributes;
+ ULONG Size;
+} FILE_BUFFER;
+
+typedef struct _FILE_LIST {
+ ULONG Count;
+ DIR_BUFFER *parent;
+ FILE_BUFFER FileBuffer[];
+} FILE_LIST;
+
+
+typedef struct _FILE_PATH_BUFFER {
+ LPTSTR Server;
+ LPTSTR Share;
+ LPTSTR Path;
+ TCHAR FullPath[MAX_PATH + 1];
+} FILE_PATH_BUFFER;
+
+
+/*+-------------------------------------------------------------------------+
+ | Function Prototypes |
+ +-------------------------------------------------------------------------+*/
+void TreeDelete(DIR_BUFFER *Dir);
+void TreePrune(DIR_BUFFER *Dir);
+ULONG TreeCount(DIR_BUFFER *Dir);
+DIR_BUFFER *TreeCopy(DIR_BUFFER *Dir);
+
+FILE_PATH_BUFFER *FilePathInit();
+void FilePathServerSet(FILE_PATH_BUFFER *fpBuf, LPTSTR Server);
+void FilePathShareSet(FILE_PATH_BUFFER *fpBuf, LPTSTR Share);
+void FilePathPathSet(FILE_PATH_BUFFER *fpBuf, LPTSTR Path);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+