336 lines
8.8 KiB
C
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];
|