#include <stdio.h>
#include <string.h>
#include "commun.h"

#define false 0
#define true  1
#define bool int

char * cBufferSrc;
int iTailleSrc;
char * cBufferDest;
int iTailleDest;

char * cBufferSrcTrt=0;
char * cBufferDestTrt=0;
char * cBufferDirExclus=0;

int iTailleSrcTrt=0;
int iTailleDestTrt=0;
int iTailleDirExclus=0;

bool InitDirExclus (char* cBuffer, int iTaille)
{
	cBufferDirExclus = cBuffer;
	iTailleDirExclus = iTaille;
	return true;
}

bool TstDirExclus (char * szPath)
{
	char szWarning[400];

	char * cBufferTrt;
	char resultat[1000];
	int iTaille, iTailleResult;
	bool bResult, bLigneNonVide;

	if (iTailleDirExclus != 0 && cBufferDirExclus != 0) // Il existe une section direxclus
	{
		iTaille = iTailleDirExclus;
		cBufferTrt = cBufferDirExclus;
 		do
		{		
			iTailleResult = sizeof(resultat);
            memset (resultat, 0, sizeof(resultat));
			bResult = ExtraireLigne(&cBufferTrt, resultat, &iTaille, &iTailleResult);

			if (bResult) // Il y a une ligne extraite;
			{
				bLigneNonVide = SupprimeEspaceAvAp (resultat, &iTailleResult);
				// Verifions que le r�pertoire n'est pas exclus
				if (bLigneNonVide)
				{
					if (strcmp (szPath, resultat) == 0)
					{
						sprintf (szWarning, "Attention r�pertoire exclus: %s", szPath);
						GenereErreur (szWarning);
						return true;
					}
				}
            }
		} while (bResult);
	}
	return false;
}

bool InitDirSrc(char* cBuffer, int iTaille)
{
	cBufferSrc = cBuffer;
	cBufferSrcTrt = cBuffer;
	iTailleSrc = iTaille;
	iTailleSrcTrt = iTaille;
	return true;
}

bool InitDirDest(char* cBuffer, int iTaille)
{
	cBufferDest = cBuffer;
	cBufferDestTrt = cBuffer;
	iTailleDest = iTaille;
	iTailleDestTrt = iTaille;
	return true;
}

bool FindFirstNextDirSrc(char* szPath)
{
	char resultat[1000];
	int iTailleResult;

	bool bResult, bLigneNonVide;

	bLigneNonVide = true;

	*szPath = 0;
	do
	{
		iTailleResult = sizeof(resultat);
		bResult = ExtraireLigne(&cBufferSrcTrt, resultat, &iTailleSrcTrt, &iTailleResult);

		if (bResult)
		{
			bLigneNonVide = SupprimeEspaceAvAp (resultat, &iTailleResult);
			// Maintenant, ne r�cup�rer que le chemin src
			if (bLigneNonVide)
			{
				strcpy (szPath, resultat);
			}
		}
	} while (!bResult && iTailleSrcTrt > 0);

	return bResult;
}

bool FindFirstNextDirDest(char* szPath)
{
	char resultat[1000];
	int iTailleResult;

	bool bResult, bLigneNonVide;

	bLigneNonVide = true;

	do
	{
		iTailleResult = sizeof(resultat);
		bResult = ExtraireLigne(&cBufferDestTrt, resultat, &iTailleDestTrt, &iTailleResult);

		if (bResult)
		{
			bLigneNonVide = SupprimeEspaceAvAp (resultat, &iTailleResult);
			// Maintenant, ne r�cup�rer que le chemin src
			if (bLigneNonVide)
			{
				strcpy (szPath, resultat);

			}
		}
	} while (!bResult && iTailleDestTrt > 0);

	return bResult;
}
