diff options
Diffstat (limited to '')
-rw-r--r-- | private/nw/convert/nwconv/filesel.h | 130 |
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 + + |