//========================================================================================================
// Directory compare tool
//
// AUTHOR:  Gabor Nagy
// DATE:    2024-Aug-15 18:23:25
//
// Copyright (C) 1996-2026 By Gabor Nagy. All rights reserved.
//========================================================================================================
#ifndef _EDirCompare_h
#define _EDirCompare_h

#if defined (__cplusplus) && (!(defined (__CPLUSLIBS)))
extern "C" {
#endif

#define EDirCompareCore\
	EList(, char*, FileExtensions);\
	EList(, char*, IgnoreDirs);\
	char*     Dir0;size_t  Dir0NameLen;\
	char*     Dir1;size_t  Dir1NameLen;\
	uint16_t  DoSymlinks : 1, FollowSymlinks : 1,\
            CheckContent : 1, CheckMissing : 1, CheckTimes : 1, PreserveTimestamps : 1, CreateTargetDirs : 1,\
            IgnoreWhiteSpace : 1, CompareBinaryFiles : 1


typedef struct
{
	EDirCompareCore;
} EDirCompare;


extern int  EDirCompare_WalkDir(EDirCompare* PTool, const EBool PDoNFS, const EBool PDoSymlinks, const EBool PFollowSymlinks, unsigned long* PFullSizeRet, unsigned long* PNumOfFilesRet, unsigned long* PNumOfDirsRet, int (*PFunc)(EDirCompare*, char*, struct stat*, EBool));


#if defined (__cplusplus) && (!(defined (__CPLUSLIBS)))
}	// Close scope of 'extern "C"' declaration
#endif

#endif // _EDirCompare_h
