HuntnGather – Rev 41

Subversion Repositories:
Rev:
///////////////////////////////////////////////////////////////////////////
//    Copyright (C) 2021 Wizardry and Steamworks - License: MIT          //
///////////////////////////////////////////////////////////////////////////

#if !defined TRUE
#define TRUE 1;
#endif

#if !defined FALSE
#define FALSE 0;
#endif

#define ASYNC_BUF 8192
#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);
#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);
#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 void StrUpr(char *);
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 CopyFile(char *a, char *b);

extern dbEntry* CreateDatabaseEntry(dbLine *line);