HuntnGather – Rev 43
?pathlinks?
///////////////////////////////////////////////////////////////////////////
// Copyright (C) 2021 Wizardry and Steamworks - License: MIT //
///////////////////////////////////////////////////////////////////////////
#if !defined TRUE
#define TRUE 1;
#endif
#if !defined FALSE
#define FALSE 0;
#endif
/* 32768b empirically shows a doubling of speed compared to lower values */
#define ASYNC_BUF 32768
#define MAX_MEM 262144
#define LINE_BUF 256
#define DEFAULT_DATABASE_FILE "S:gather.db"
typedef struct {
void **array;
int length;
} VECTOR;
typedef enum FS_TYPE {
UNKNOWN,
REGULAR,
DIRECTORY
} FS_TYPE;
typedef struct {
int dirs;
int files;
int lines;
int size;
} dbStats;
typedef struct {
char *name;
char *path;
} dbEntry;
typedef struct {
char *string;
int length;
} dbLine;
typedef enum OPERATION {
NONE,
GATHER,
REMOVE,
CREATE
} OPERATION;
extern int PROGRAM_RUN;
extern int PROGRAM_VERBOSE;
#if defined ___AmigaOS___
extern LONG StringLenMax(char *a, char *b);
extern BOOL PathCompare(char *path, char *look);
extern BOOL RemoveFile(char *name);
extern BOOL StringMatch(char *a, char *b);
extern void StrUpr(UBYTE *s);
#else
extern int StrlenMax(char *a, char *b);
extern int PathCompare(char *path, char *look);
extern int RemoveFile(char *name);
extern int StringMatch(char *a, char *b);
extern void StrUpr(char *s);
#endif
#if defined ___AsyncIO___
extern void SkipLine(struct AsyncFile *fp);
extern dbLine *PeekLine(struct AsyncFile *fp);
extern dbLine *ReadLine(struct AsyncFile *fp);
#else
extern void SkipLine(FILE *fp);
extern dbLine *PeekLine(FILE *fp);
extern dbLine *ReadLine(FILE *fp);
#endif
extern FS_TYPE GetFsType(char *path);
extern int CountFileLines(char *dbFile);
extern int GetFileSize(char *dbFile);
extern char *PathToAbsolute(char *path);
extern char *CreateTemporaryFile(void);
extern VECTOR *CreateTemporaryFiles(int files);
extern void RemoveFiles(VECTOR *names);
extern void CopyLines(char *a, char *b);
extern dbEntry* CreateDatabaseEntry(dbLine *line);