|
|
1.1 ! root 1: /* This header file does all the necessary includes and defines all the ! 2: structures and constants needed for the nead program */ ! 3: ! 4: #define INCL_WIN ! 5: #define INCL_WINHEAP ! 6: #define INCL_WINDIALOGS ! 7: #define INCL_GPIPRIMITIVES ! 8: ! 9: #include <os2.h> ! 10: #include <dos.h> ! 11: #include <malloc.h> ! 12: #include <stdio.h> ! 13: #include <string.h> ! 14: ! 15: /* The HoldFEA is used to hold individual EAs. The member names correspond ! 16: directly to those of the FEA structure. Note however, that both szName ! 17: and aValue are pointers to the values. An additional field, next, is ! 18: used to link the HoldFEA's together to form a linked list. */ ! 19: ! 20: struct _HoldFEA ! 21: { ! 22: BYTE fEA; /* Flag byte */ ! 23: BYTE cbName; ! 24: USHORT cbValue; ! 25: CHAR *szName; ! 26: CHAR *aValue; ! 27: struct _HoldFEA *next; ! 28: }; ! 29: typedef struct _HoldFEA HOLDFEA; ! 30: ! 31: /* The DeleteList is used to hold the names of EAs that need to be explicitly ! 32: deleted before the current EAs are written. This is necessary because ! 33: there does not exist a way to automatically delete all existing EAs ! 34: associated with a file. The next field allows the structures to be ! 35: linked. */ ! 36: ! 37: struct _DeleteList ! 38: { ! 39: CHAR *EAName; ! 40: struct _DeleteList *next; ! 41: }; ! 42: typedef struct _DeleteList DELETELIST; ! 43: ! 44: /* The PassData struct is used to pass data, especially as the user data ! 45: parameter for dialog box calls. The Point field points to several types ! 46: of data throughout the program. Usually it points to either an asciiz ! 47: name or a HoldData structure. The rest of the fields are used for m-m ! 48: recursive calls. cbMulti is the length of the m-m field currently being ! 49: considered. usMultiOffset is the offset from the beginning of the ! 50: EA (->aValue) to the start of the current m-m field. usIndex is a count ! 51: of the number of sub-fields in the current m-m. */ ! 52: ! 53: struct _PassData ! 54: { ! 55: CHAR *Point; ! 56: USHORT cbMulti; ! 57: USHORT usMultiOffset; ! 58: USHORT usIndex; ! 59: BYTE fFlag; ! 60: }; ! 61: typedef struct _PassData PASSDATA; ! 62: ! 63: /* The ReEnter structure is used to keep track of the static data for ! 64: MultiTypeProc. This structure is necessary since the proc is recursive ! 65: and the static data is only available during the initialize message. ! 66: The structure holds the two static variables and has a next field to ! 67: allow the list to be linked. */ ! 68: ! 69: struct _ReEnter ! 70: { ! 71: HOLDFEA *pFEA; ! 72: PASSDATA FAR *pPDat; ! 73: struct _ReEnter *next; ! 74: }; ! 75: typedef struct _ReEnter REENTER; ! 76: ! 77: /* This struct holds the static data that allows translation between the ! 78: EA type and descriptor string, etc. Data is global. */ ! 79: ! 80: struct _EADATA ! 81: { ! 82: USHORT usPrefix; ! 83: CHAR szFormat[36]; ! 84: USHORT usFldType; ! 85: }; ! 86: typedef struct _EADATA EADATA; ! 87: ! 88: BOOL OpenFile(HWND,USHORT); ! 89: BOOL AddEA(HWND); ! 90: BOOL QueryEAs(CHAR *); ! 91: BOOL EditEAValue(HWND, PASSDATA *); ! 92: BOOL EAExists(CHAR *); ! 93: BOOL EditEA(HWND); ! 94: BOOL CheckEAIntegrity(CHAR *,USHORT); ! 95: MRESULT EXPENTRY OpenFileProc (HWND, USHORT, MPARAM, MPARAM); ! 96: MRESULT EXPENTRY MainDlgProc (HWND, USHORT, MPARAM, MPARAM); ! 97: MRESULT EXPENTRY AddEAProc (HWND, USHORT, MPARAM, MPARAM); ! 98: MRESULT EXPENTRY AsciiEditProc (HWND, USHORT, MPARAM, MPARAM); ! 99: MRESULT EXPENTRY IconDlgProc (HWND, USHORT, MPARAM, MPARAM); ! 100: MRESULT EXPENTRY MultiTypeProc (HWND, USHORT, MPARAM, MPARAM); ! 101: VOID FillDirListBox (HWND,CHAR *); ! 102: VOID FillFileListBox (HWND); ! 103: VOID Free_FEAList(HOLDFEA *,DELETELIST *); ! 104: VOID ShowEAType(HWND); ! 105: VOID DeleteCurEA(HWND); ! 106: VOID WriteEAs(VOID); ! 107: VOID ChangeName(HOLDFEA *,CHAR *); ! 108: VOID MultiAdd(HWND, HOLDFEA *, PASSDATA FAR *); ! 109: SHORT ParseFileName (CHAR *, CHAR *); ! 110: USHORT LookupEAType(USHORT); ! 111: USHORT CurEAType(HOLDFEA *); ! 112: USHORT GetUSHORT(HOLDFEA *,USHORT); ! 113: HOLDFEA *GetCurFEA(HWND, HOLDFEA *); ! 114: CHAR *MultiTypeIndex(CHAR *, USHORT); ! 115: CHAR *EAValueString(CHAR *); ! 116: VOID GetMem(PPVOID, ULONG); ! 117: VOID ResizeMem(PVOID, ULONG, ULONG); ! 118: ! 119: #define FreeMem(p) DosFreeMem(p) ! 120: ! 121: #define ARGFILE 1 ! 122: #define MAX_GEA 500L /* Max size for a GEA List */ ! 123: #define Ref_ASCIIZ 1 /* Reference type for DosEnumAttribute */ ! 124: #define MAXEANAME 255 /* Maximum length an EA Name can be */ ! 125: #define MAXEAVALUE 2048 /* Arbitrary max edit fld len of EA Val */ ! 126: #define EATABLESIZE 12 /* Number of entries in ConvTable */ ! 127: #define GROWSIZE 512 /* Minimum size to increase the heap by */ ! 128: #define FILE_ALL 0x0007 /* Read-only, sys, hidden, & normal */ ! 129: #define MAXSHOWSIZE 34 /* Number of chars to place in desc lbox*/ ! 130: #define LENUSHORTBUF 6 /* Buf size needed to for ascii USHORT */ ! 131: ! 132: /* Return values from ParseFileName */ ! 133: #define FILE_INVALID 0 /* The filename was invalid */ ! 134: #define FILE_PATH 1 /* The filename was a path */ ! 135: #define FILE_VALID 2 /* The filename was valid */ ! 136: ! 137: /* definition of level specifiers. required for File Info */ ! 138: ! 139: #define GetInfoLevel1 1 /* Get info from SFT */ ! 140: #define GetInfoLevel2 2 /* Get size of FEAlist */ ! 141: #define GetInfoLevel3 3 /* Get FEAlist given the GEAlist */ ! 142: #define GetInfoLevel4 4 /* Get whole FEAlist */ ! 143: #define GetInfoLevel5 5 /* Get FSDname */ ! 144: ! 145: #define SetInfoLevel1 1 /* Set info in SFT */ ! 146: #define SetInfoLevel2 2 /* Set FEAlist */ ! 147: ! 148: #define OPENMODE OM_DENY_NONE+OM_READ_WRITE ! 149: #define OPENFLAG OF_OPEN_FILE ! 150: #define CREATFLAG OF_CREATE_FILE+OF_FAIL ! 151: #define REPLFLG OF_REPLACE_FILE ! 152: ! 153: #define EA_LPBINARY 0xfffe /* Length preceeded binary */ ! 154: #define EA_LPASCII 0xfffd /* Length preceeded ascii */ ! 155: #define EA_ASCIIZ 0xfffc /* Asciiz */ ! 156: #define EA_LPBITMAP 0xfffb /* Length preceeded bitmap */ ! 157: #define EA_LPMETAFILE 0xfffa /* metafile */ ! 158: #define EA_LPICON 0xfff9 /* Length preceeded icon */ ! 159: #define EA_ASCIIZFN 0xffef /* Asciiz file name of associated dat */ ! 160: #define EA_ASCIIZEA 0xffee /* Asciiz EA of associated data */ ! 161: #define EA_MVMT 0xffdf /* Multi-value multi-typed field */ ! 162: #define EA_MVST 0xffde /* Multy value single type field */ ! 163: #define EA_ASN1 0xffdd /* ASN.1 field */ ! 164: ! 165: #define HM_VALIDFLAGS 0x0003 ! 166: ! 167: /****** Resource IDs *****/ ! 168: ! 169: #define IDR_EAD 1 ! 170: #define IDD_MULTILIST 2 ! 171: #define IDD_BITMAP 3 ! 172: #define IDD_ASCIIZ 4 ! 173: #define ID_MENU_MAIN 5 ! 174: #define IDD_OPENBOX 6 ! 175: #define IDD_PATH 7 ! 176: #define IDD_FILEEDIT 8 ! 177: #define IDD_DIRLIST 9 ! 178: #define IDD_FILELIST 10 ! 179: #define IDD_MAIN 11 ! 180: #define IDD_FNAME 12 ! 181: #define IDD_LBOX 13 ! 182: #define IDD_EATYPE 14 ! 183: #define IDD_ADD 15 ! 184: #define IDD_DELETE 16 ! 185: #define IDD_COPY 17 ! 186: #define IDD_EDIT 18 ! 187: #define IDD_PASTE 19 ! 188: #define IDD_NEWFILE 20 ! 189: #define IDD_WRITE 21 ! 190: #define IDD_QUIT 22 ! 191: #define IDD_ADDEA 23 ! 192: #define IDD_EANAME 24 ! 193: #define IDD_NEW 25 ! 194: #define IDD_EXISTING 26 ! 195: #define IDD_ASCIIEDIT 27 ! 196: #define IDD_EAVALUE 28 ! 197: #define IDD_ICONWIN 29 ! 198: #define BMP_EMPTY 30 ! 199: #define IDD_ICON 31 ! 200: #define IDD_MULTIBOX 32 ! 201: #define DID_DONE 33 ! 202: #define IDD_TITLE 34 ! 203: #define IDD_LPDATA 35 ! 204: #define IDD_NEEDBIT 36 ! 205: #define IDD_CODEPAGE 37 ! 206: ! 207:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.