Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

341 lines
9.0 KiB

4 years ago
  1. /*** list.h
  2. *
  3. */
  4. #define BLOCKSIZE (4*1024) /* Bytes of data in each block */
  5. /* WARNING: This value is also in the *.asm listing */
  6. #define STACKSIZE 3096 /* Stack size for threads */
  7. #define MAXLINES 200 /* Max lines on a CRT */
  8. #define PLINES (65536/4) /* # of line lens per page */
  9. #define MAXTPAGE 100 /* ??? lines max (PLINES*MAXTPAGE) */
  10. #define MINBLKS 10 /* Min blocks allowed */
  11. #define MINTHRES 4 /* Min threshold */
  12. #define DEFBLKS 40 /* Default blocks allowed */
  13. #define DEFTHRES 17 /* Default threshold */
  14. #define CMDPOS 9
  15. #define ERR_IN_WINDOW 494 /* Vio wincompat error */
  16. #define NOLASTLINE 0x7fffffffL
  17. /************ Handy Defs ************/
  18. #define CFP char *
  19. #define LFP long *
  20. #define CP char *
  21. #define Ushort unsigned short
  22. #define Uslong unsigned long
  23. #define Uchar unsigned char
  24. #define SEMPT (HSEM)
  25. #define WAITFOREVER ((unsigned)-1L)
  26. #define DONTWAIT 0L
  27. #ifndef NTSTATUS
  28. #define NTSTATUS unsigned long
  29. #endif
  30. #define SIGNALED TRUE
  31. #define NOT_SIGNALED FALSE
  32. #define MANUAL_RESET TRUE
  33. #define T_HEATHH 0
  34. extern char MEMERR[];
  35. #ifndef DEBUG
  36. #define ckdebug(rcode,mess) { \
  37. if (rcode) { \
  38. ListErr (__FILE__, __LINE__, #rcode, rcode, mess); \
  39. } \
  40. }
  41. #else
  42. #define ckdebug(rcode,mess) ;
  43. #endif
  44. #define ckerr(rcode,mess) { \
  45. if (rcode) { \
  46. ListErr (__FILE__, __LINE__, #rcode, rcode, mess); \
  47. } \
  48. }
  49. /****************** Declerations ********************/
  50. void main_loop (void);
  51. void init_list (void);
  52. void FindIni (void);
  53. void CleanUp ();
  54. DWORD ReaderThread (DWORD);
  55. DWORD RedrawWait (LPVOID);
  56. unsigned xtoi (char *);
  57. struct Block *alloc_block (long);
  58. void MoveBlk (struct Block **, struct Block **);
  59. char *alloc_page (void);
  60. void AddFileToList (char *);
  61. void AddOneName (char *);
  62. void ReadDirect (long);
  63. void ReadNext (void);
  64. void add_more_lines (struct Block *, struct Block *);
  65. void ReadPrev (void);
  66. void ReadBlock (struct Block *, long);
  67. void GoToMark (void);
  68. void GoToLine (void);
  69. void SlimeTOF (void);
  70. void QuickHome (void);
  71. void QuickEnd (void);
  72. void QuickRestore (void);
  73. void ToggleWrap (void);
  74. void SetUpdate (int);
  75. void ShowHelp (void);
  76. void GetInput (char *, char *, int);
  77. void beep (void);
  78. int _abort (void);
  79. void ClearScr (void);
  80. int set_mode (int, int, int);
  81. void ListErr (char *, int, char *, int, char *);
  82. void PerformUpdate (void);
  83. void fancy_percent (void);
  84. // void update_display (void);
  85. void Update_head (void);
  86. int InfoReady (void);
  87. void DrawBar (void);
  88. void DisLn (int, int, char*);
  89. void dis_str (Uchar, Uchar, char *);
  90. void setattr (int, char);
  91. int GetNewFile (void);
  92. void NewFile (void);
  93. void SyncReader (void);
  94. void ScrUnLock (void);
  95. int ScrLock (int);
  96. void SpScrUnLock (void);
  97. void Update_display (void);
  98. void setattr1 (int, char);
  99. void setattr2 (int, int, int, char);
  100. void UpdateHighClear (void);
  101. void MarkSpot (void);
  102. void UpdateHighNoLock (void);
  103. void FileHighLighted (void);
  104. int SearchText (char);
  105. void GetSearchString (void);
  106. void InitSearchReMap (void);
  107. void FindString (void);
  108. void HUp (void);
  109. void HDn (void);
  110. void HPgDn (void);
  111. void HPgUp (void);
  112. void HSUp (void);
  113. void HSDn (void);
  114. char *GetErrorCode (int);
  115. struct Block {
  116. long offset; /* Offset in file which this block starts */
  117. USHORT size; /* No of bytes in this block */
  118. struct Block *next; /* Next block */
  119. struct Block *prev; /* Previous block */
  120. char *Data; /* The data in the block */
  121. char flag; /* End of file flag */
  122. struct Flist *pFile; /* File which this buff is associated with */
  123. } ; /* The structure used by *.asm */
  124. #define F_EOF 1
  125. extern HANDLE vhConsoleOutput;
  126. extern struct Block *vpHead;
  127. extern struct Block *vpTail;
  128. extern struct Block *vpCur;
  129. extern struct Block *vpBFree;
  130. extern struct Block *vpBCache;
  131. extern struct Block *vpBOther;
  132. extern int vCntBlks;
  133. extern int vAllocBlks;
  134. extern int vMaxBlks;
  135. extern long vThreshold;
  136. extern HANDLE vSemBrief;
  137. extern HANDLE vSemReader;
  138. extern HANDLE vSemMoreData;
  139. extern HANDLE vSemSync;
  140. extern USHORT vReadPriNormal;
  141. extern unsigned vReadPriBoost;
  142. extern char vReaderFlag;
  143. #define F_DOWN 1
  144. #define F_UP 2
  145. #define F_HOME 3
  146. #define F_DIRECT 4
  147. #define F_END 5
  148. #define F_NEXT 6
  149. #define F_SYNC 7
  150. #define F_CHECK 8
  151. #define U_NMODE 4
  152. #define U_ALL 3
  153. #define U_HEAD 2
  154. #define U_CLEAR 1
  155. #define U_NONE 0
  156. #define SetUpdateM(a) { \
  157. while (vUpdate>a) \
  158. PerformUpdate (); \
  159. vUpdate=a; \
  160. }
  161. #define S_NEXT 0x01 /* Searching for next */
  162. #define S_PREV 0x02 /* Searching for prev */
  163. #define S_NOCASE 0x04 /* Searching in any case */
  164. #define S_UPDATE 0x08
  165. #define S_CLEAR 0x10 /* Redisplay last line */
  166. #define S_WAIT 0x80 /* 'wait' is displayed on last line */
  167. #define S_MFILE 0x20 /* muti-file search selected */
  168. #define S_INSEARCH 0x40 /* in search */
  169. /* Init flags */
  170. #define I_SLIME 0x01 /* Allow alt-o to work */
  171. #define I_NOBEEP 0x02 /* Don't beep about things */
  172. #define I_SEARCH 0x04 /* Cmd line search */
  173. #define I_GOTO 0x08 /* Cmd line goto */
  174. struct Flist {
  175. char *fname, *rootname;
  176. struct Flist *prev, *next;
  177. /*
  178. * Data to save for each file.
  179. * (saved so when the file is "re-looked" at this information
  180. * is remembered.) In progress.. this is not done.
  181. * This data all has corrisponding "v" (global) values.
  182. *
  183. * Warning: In most places the reader thread must be frozen
  184. * before manipulating this data.
  185. */
  186. Uchar Wrap; /* Wrap setting for this file */
  187. long HighTop; /* Current topline of hightlighting */
  188. int HighLen; /* Current bottom line of hightlighting */
  189. long TopLine; /* Top Line number for offset */
  190. long Loffset; /* Offset of last block processed into line */
  191. /* table */
  192. long LastLine; /* Absolute last line */
  193. long NLine; /* Next line to process into line table */
  194. long *prgLineTable [MAXTPAGE]; /* Number of pages for line table */
  195. FILETIME FileTime; /* Used to determine if info is out of date */
  196. long SlimeTOF; /* Hack to adjust idea of TOF for this file */
  197. /*
  198. * Used to buffer reads across files
  199. */
  200. } ;
  201. // These macros translate the DosSem* calls into 'event' calls
  202. #define DosSemClear(handle) SetEvent(handle)
  203. #define DosSemSet(handle) ResetEvent(handle)
  204. #define DosSemWait(handle,timeout) WaitForSingleObject(handle,timeout)
  205. #define DosSemRequest(handle,timeout) WaitForSingleObject(handle,timeout); \
  206. ResetEvent(handle)
  207. extern struct Flist *vpFlCur;
  208. int NextFile (int, struct Flist *);
  209. void FreePages (struct Flist *);
  210. extern HANDLE vFhandle;
  211. extern long vCurOffset;
  212. extern char vpFname[];
  213. extern USHORT vFType;
  214. extern WIN32_FIND_DATA vFInfo;
  215. extern char vDate [];
  216. #define ST_SEARCH 0
  217. #define ST_MEMORY 2
  218. #define ST_ADJUST 25-2 // NT - jaimes - 03/04/91
  219. // -2: Year is represeted by 4 digits
  220. // instead instead of 2
  221. extern char vSearchString[];
  222. extern char vStatCode;
  223. extern long vHighTop;
  224. extern int vHighLen;
  225. extern char vHLTop;
  226. extern char vHLBot;
  227. extern char vLastBar;
  228. extern int vMouHandle;
  229. extern char *vpOrigScreen;
  230. extern int vOrigSize;
  231. extern USHORT vVioOrigRow;
  232. extern USHORT vVioOrigCol;
  233. extern USHORT vOrigAnsi;
  234. extern int vSetBlks;
  235. extern long vSetThres;
  236. extern int vSetLines;
  237. extern int vSetWidth;
  238. extern CONSOLE_SCREEN_BUFFER_INFO vConsoleCurScrBufferInfo;
  239. extern CONSOLE_SCREEN_BUFFER_INFO vConsoleOrigScrBufferInfo;
  240. extern char vcntScrLock;
  241. extern char vSpLockFlag;
  242. extern HANDLE vSemLock;
  243. extern char vUpdate;
  244. extern int vLines;
  245. extern int vWidth;
  246. extern int vCurLine;
  247. extern Uchar vWrap;
  248. extern Uchar vIndent;
  249. extern Uchar vDisTab;
  250. extern Uchar vIniFlag;
  251. extern unsigned vVirtOFF;
  252. extern unsigned vVirtLEN;
  253. extern unsigned vPhysSelec;
  254. extern unsigned vPhysLen;
  255. extern LPSTR vpSavRedraw;
  256. extern Uchar vrgLen [];
  257. extern Uchar vrgNewLen[];
  258. extern char *vScrBuf;
  259. extern ULONG vSizeScrBuf;
  260. extern int vOffTop;
  261. extern unsigned vScrMass;
  262. extern struct Block *vpBlockTop;
  263. extern struct Block *vpCalcBlock;
  264. extern long vTopLine;
  265. extern WORD vAttrTitle;
  266. extern WORD vAttrList;
  267. extern WORD vAttrHigh;
  268. extern WORD vAttrCmd;
  269. extern WORD vAttrKey;
  270. extern WORD vAttrBar;
  271. extern WORD vSaveAttrTitle;
  272. extern WORD vSaveAttrList;
  273. extern WORD vSaveAttrHigh;
  274. extern WORD vSaveAttrCmd;
  275. extern WORD vSaveAttrKey;
  276. extern WORD vSaveAttrBar;
  277. extern char vChar;
  278. extern char *vpReaderStack;
  279. extern long vDirOffset;
  280. long GetLoffset(void);
  281. void SetLoffset(long);
  282. extern long vLastLine;
  283. extern long vNLine;
  284. extern long *vprgLineTable[];
  285. extern HANDLE vStdOut;
  286. extern HANDLE vStdIn;