windows-nt/Source/XPSP1/NT/sdktools/list/list.h
2020-09-26 16:20:57 +08:00

336 lines
8.8 KiB
C

/*** list.h
*
*/
#define BLOCKSIZE (4*1024) /* Bytes of data in each block */
/* WARNING: This value is also in the *.asm listing */
#define STACKSIZE 3096 /* Stack size for threads */
#define MAXLINES 200 /* Max lines on a CRT */
#define PLINES (65536/4) /* # of line lens per page */
#define MAXTPAGE 500 /* ??? lines max (PLINES*MAXTPAGE) */
#define MINBLKS 10 /* Min blocks allowed */
#define MINTHRES 4 /* Min threshold */
#define DEFBLKS 40 /* Default blocks allowed */
#define DEFTHRES 17 /* Default threshold */
#define CMDPOS 9
#define ERR_IN_WINDOW 494 /* Vio wincompat error */
#define NOLASTLINE 0x7fffffffL
/************ Handy Defs ************/
#define CFP char *
#define LFP long *
#define CP char *
#define Ushort unsigned short
#define Uslong unsigned long
#define Uchar unsigned char
#define SEMPT (HSEM)
#define WAITFOREVER ((unsigned)-1L)
#define DONTWAIT 0L
#ifndef NTSTATUS
#define NTSTATUS unsigned long
#endif
#define SIGNALED TRUE
#define NOT_SIGNALED FALSE
#define MANUAL_RESET TRUE
#define T_HEATHH 0
extern char MEMERR[];
#ifndef DEBUG
#define ckdebug(rcode,mess) { \
if (rcode) { \
ListErr (__FILE__, __LINE__, #rcode, rcode, mess); \
} \
}
#else
#define ckdebug(rcode,mess) ;
#endif
#define ckerr(rcode,mess) { \
if (rcode) { \
ListErr (__FILE__, __LINE__, #rcode, rcode, mess); \
} \
}
/****************** Declerations ********************/
void main_loop (void);
void init_list (void);
void FindIni (void);
void CleanUp ();
DWORD ReaderThread (DWORD);
DWORD RedrawWait (LPVOID);
unsigned xtoi (char *);
struct Block *alloc_block (long);
void MoveBlk (struct Block **, struct Block **);
char *alloc_page (void);
void AddFileToList (char *);
void AddOneName (char *);
void ReadDirect (long);
void ReadNext (void);
void add_more_lines (struct Block *, struct Block *);
void ReadPrev (void);
void ReadBlock (struct Block *, long);
void GoToMark (void);
void GoToLine (void);
void SlimeTOF (void);
void QuickHome (void);
void QuickEnd (void);
void QuickRestore (void);
void ToggleWrap (void);
void SetUpdate (int);
void ShowHelp (void);
void GetInput (char *, char *, int);
void beep (void);
int _abort (void);
void ClearScr (void);
int set_mode (int, int, int);
void ListErr (char *, int, char *, int, char *);
void PerformUpdate (void);
void fancy_percent (void);
// void update_display (void);
void Update_head (void);
int InfoReady (void);
void DrawBar (void);
void DisLn (int, int, char*);
void dis_str (Uchar, Uchar, char *);
void setattr (int, char);
int GetNewFile (void);
void NewFile (void);
void SyncReader (void);
void ScrUnLock (void);
int ScrLock (int);
void SpScrUnLock (void);
void Update_display (void);
void setattr1 (int, char);
void setattr2 (int, int, int, char);
void UpdateHighClear (void);
void MarkSpot (void);
void UpdateHighNoLock (void);
void FileHighLighted (void);
int SearchText (char);
void GetSearchString (void);
void InitSearchReMap (void);
void FindString (void);
void HUp (void);
void HDn (void);
void HPgDn (void);
void HPgUp (void);
void HSUp (void);
void HSDn (void);
char *GetErrorCode (int);
struct Block {
long offset; /* Offset in file which this block starts */
USHORT size; /* No of bytes in this block */
struct Block *next; /* Next block */
struct Block *prev; /* Previous block */
char *Data; /* The data in the block */
char flag; /* End of file flag */
struct Flist *pFile; /* File which this buff is associated with */
} ; /* The structure used by *.asm */
#define F_EOF 1
extern HANDLE vhConsoleOutput;
extern struct Block *vpHead;
extern struct Block *vpTail;
extern struct Block *vpCur;
extern struct Block *vpBFree;
extern struct Block *vpBCache;
extern struct Block *vpBOther;
extern int vCntBlks;
extern int vAllocBlks;
extern int vMaxBlks;
extern long vThreshold;
extern HANDLE vSemBrief;
extern HANDLE vSemReader;
extern HANDLE vSemMoreData;
extern HANDLE vSemSync;
extern USHORT vReadPriNormal;
extern unsigned vReadPriBoost;
extern char vReaderFlag;
#define F_DOWN 1
#define F_UP 2
#define F_HOME 3
#define F_DIRECT 4
#define F_END 5
#define F_NEXT 6
#define F_SYNC 7
#define F_CHECK 8
#define U_NMODE 4
#define U_ALL 3
#define U_HEAD 2
#define U_CLEAR 1
#define U_NONE 0
#define SetUpdateM(a) { \
while (vUpdate>a) \
PerformUpdate (); \
vUpdate=a; \
}
#define S_NEXT 0x01 /* Searching for next */
#define S_PREV 0x02 /* Searching for prev */
#define S_NOCASE 0x04 /* Searching in any case */
#define S_UPDATE 0x08
#define S_CLEAR 0x10 /* Redisplay last line */
#define S_WAIT 0x80 /* 'wait' is displayed on last line */
#define S_MFILE 0x20 /* muti-file search selected */
#define S_INSEARCH 0x40 /* in search */
/* Init flags */
#define I_SLIME 0x01 /* Allow alt-o to work */
#define I_NOBEEP 0x02 /* Don't beep about things */
#define I_SEARCH 0x04 /* Cmd line search */
#define I_GOTO 0x08 /* Cmd line goto */
struct Flist {
char *fname, *rootname;
struct Flist *prev, *next;
/*
* Data to save for each file.
* (saved so when the file is "re-looked" at this information
* is remembered.) In progress.. this is not done.
* This data all has corrisponding "v" (global) values.
*
* Warning: In most places the reader thread must be frozen
* before manipulating this data.
*/
Uchar Wrap; /* Wrap setting for this file */
long HighTop; /* Current topline of hightlighting */
int HighLen; /* Current bottom line of hightlighting */
long TopLine; /* Top Line number for offset */
long Loffset; /* Offset of last block processed into line */
/* table */
long LastLine; /* Absolute last line */
long NLine; /* Next line to process into line table */
long *prgLineTable [MAXTPAGE]; /* Number of pages for line table */
FILETIME FileTime; /* Used to determine if info is out of date */
long SlimeTOF; /* Hack to adjust idea of TOF for this file */
/*
* Used to buffer reads across files
*/
} ;
extern struct Flist *vpFlCur;
int NextFile (int, struct Flist *);
void FreePages (struct Flist *);
extern HANDLE vFhandle;
extern long vCurOffset;
extern char vpFname[];
extern USHORT vFType;
extern WIN32_FIND_DATA vFInfo;
extern char vDate [];
#define ST_SEARCH 0
#define ST_MEMORY 2
#define ST_ADJUST 25-2 // NT - jaimes - 03/04/91
// -2: Year is represeted by 4 digits
// instead instead of 2
extern char vSearchString[];
extern char vStatCode;
extern long vHighTop;
extern int vHighLen;
extern char vHLTop;
extern char vHLBot;
extern char vLastBar;
extern int vMouHandle;
extern char *vpOrigScreen;
extern int vOrigSize;
extern USHORT vVioOrigRow;
extern USHORT vVioOrigCol;
extern USHORT vOrigAnsi;
extern int vSetBlks;
extern long vSetThres;
extern int vSetLines;
extern int vSetWidth;
extern CONSOLE_SCREEN_BUFFER_INFO vConsoleCurScrBufferInfo;
extern CONSOLE_SCREEN_BUFFER_INFO vConsoleOrigScrBufferInfo;
extern char vcntScrLock;
extern char vSpLockFlag;
extern HANDLE vSemLock;
extern char vUpdate;
extern int vLines;
extern int vWidth;
extern int vCurLine;
extern Uchar vWrap;
extern Uchar vIndent;
extern Uchar vDisTab;
extern Uchar vIniFlag;
extern unsigned vVirtOFF;
extern unsigned vVirtLEN;
extern unsigned vPhysSelec;
extern unsigned vPhysLen;
extern LPSTR vpSavRedraw;
extern Uchar vrgLen [];
extern Uchar vrgNewLen[];
extern char *vScrBuf;
extern ULONG vSizeScrBuf;
extern int vOffTop;
extern unsigned vScrMass;
extern struct Block *vpBlockTop;
extern struct Block *vpCalcBlock;
extern long vTopLine;
extern WORD vAttrTitle;
extern WORD vAttrList;
extern WORD vAttrHigh;
extern WORD vAttrCmd;
extern WORD vAttrKey;
extern WORD vAttrBar;
extern WORD vSaveAttrTitle;
extern WORD vSaveAttrList;
extern WORD vSaveAttrHigh;
extern WORD vSaveAttrCmd;
extern WORD vSaveAttrKey;
extern WORD vSaveAttrBar;
extern char vChar;
extern char *vpReaderStack;
extern long vDirOffset;
long GetLoffset(void);
void SetLoffset(long);
extern long vLastLine;
extern long vNLine;
extern long *vprgLineTable[];
extern HANDLE vStdOut;
extern HANDLE vStdIn;
extern char szScrollBarUp[2];
extern char szScrollBarDown[2];
extern char szScrollBarOff[2];
extern char szScrollBarOn[2];