// AVLINDEX.cpp : Defines the entry point for the dll application.
//
#include "stdafx.h"
#include <stdio.h>
#include <direct.h>
#include "reg.h"
#include "tagEquiv.h"

#define _CRT_SECURE_NO_WARNINGS

char szFileName[256];


void GetFicheroDatos(char * lpszFicheroDatos, int cbMax, int * pcbMax)
{
	//Valor por defecto de la ubicación del archivo de datos:
	char szPath[256];
	char szValue[1024];
	long lMax;
	int nMaxLength = 0;
	int nLengthValue = 0;

	lMax = 1024;
	memset(szValue, 0, sizeof(szValue));
	strcpy(szPath, "HKEY_LOCAL_MACHINE/Software/Libro/XPArchivoDatos");
	GetReg(szValue, szPath, &lMax, REG_SZ);
	if (strlen(szValue)==0)
	{
		//Escribir la ubicación por defecto en el registry, 
		//tomando el directorio de trabajo actual como referencia
		//de la ubicación del archivo de datos:
		memset(szFileName, 0, sizeof(szFileName));
		_getcwd(szFileName, 1000);
		strcat(szFileName, "\\espchi.dat");
		SetReg(szFileName, szPath);
		strcpy(szValue, szFileName);
	}
	nLengthValue = strlen(szValue);
	nMaxLength = (nLengthValue > cbMax) ? cbMax : nLengthValue;
	memcpy(lpszFicheroDatos, szValue, nMaxLength);
}

//Cargar el árbol cuando se carga la DLL
//Esto puede llevar minutos...
int CargarArbol(char *lpszFilePath);

bool ExistsFile(char * lpszFileName)
{
	FILE * pFile;
	bool bExists = false;

	pFile = fopen(lpszFileName, "r");
	if (pFile)
	{
		bExists = true;
		fclose(pFile);
	}
	return bExists;
}

void GenerarArchivoPruebas(char * lpszFileName)
{
	FILE * pFile;
	tagEquiv myEquiv;
	unsigned char szBOM[3];

	szBOM[0] = 0xFF;
	szBOM[1] = 0xFE;
	szBOM[2] = 0x00;

	pFile = fopen(lpszFileName, "wb+");
	if (pFile)
	{
		fwrite(szBOM, 2, 1, pFile);
		memset(&myEquiv, 0, sizeof(tagEquiv));
		wcscpy(myEquiv.wszORG, L"China"); wcscpy(myEquiv.wszDST, L"中国");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"paz"); wcscpy(myEquiv.wszDST, L"安");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"centro"); wcscpy(myEquiv.wszDST, L"中");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"país"); wcscpy(myEquiv.wszDST, L"国");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"cero"); wcscpy(myEquiv.wszDST, L"");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"uno"); wcscpy(myEquiv.wszDST, L"一");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"dos"); wcscpy(myEquiv.wszDST, L"二");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"tres"); wcscpy(myEquiv.wszDST, L"三");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"cuatro"); wcscpy(myEquiv.wszDST, L"四");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"cinco"); wcscpy(myEquiv.wszDST, L"五");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"seis"); wcscpy(myEquiv.wszDST, L"六");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"siete"); wcscpy(myEquiv.wszDST, L"七");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"ocho"); wcscpy(myEquiv.wszDST, L"八");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"nueve"); wcscpy(myEquiv.wszDST, L"九");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"diez"); wcscpy(myEquiv.wszDST, L"十");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"yo"); wcscpy(myEquiv.wszDST, L"我");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"tú"); wcscpy(myEquiv.wszDST, L"你");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"él"); wcscpy(myEquiv.wszDST, L"他");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"ella"); wcscpy(myEquiv.wszDST, L"她");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"nosotros"); wcscpy(myEquiv.wszDST, L"我们");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"nosotras"); wcscpy(myEquiv.wszDST, L"我们");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"vosotros"); wcscpy(myEquiv.wszDST, L"你们");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"vosotras"); wcscpy(myEquiv.wszDST, L"你们");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"ellos"); wcscpy(myEquiv.wszDST, L"他们");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"ellas"); wcscpy(myEquiv.wszDST, L"她们");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"soy"); wcscpy(myEquiv.wszDST, L"是");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"eres"); wcscpy(myEquiv.wszDST, L"是");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"es"); wcscpy(myEquiv.wszDST, L"是");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"somos"); wcscpy(myEquiv.wszDST, L"是");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"sois"); wcscpy(myEquiv.wszDST, L"是");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"son"); wcscpy(myEquiv.wszDST, L"是");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"España"); wcscpy(myEquiv.wszDST, L"西班牙");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"español"); wcscpy(myEquiv.wszDST, L"西班牙的");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"española"); wcscpy(myEquiv.wszDST, L"西班牙的");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"chino"); wcscpy(myEquiv.wszDST, L"中国的");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"china"); wcscpy(myEquiv.wszDST, L"中国的");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"persona"); wcscpy(myEquiv.wszDST, L"人");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"ciudadano"); wcscpy(myEquiv.wszDST, L"人");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"ciudadano chino"); wcscpy(myEquiv.wszDST, L"中国人");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"ciudadana china"); wcscpy(myEquiv.wszDST, L"中国人");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"ciudadano español"); wcscpy(myEquiv.wszDST, L"西班牙人");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"ciudadana española"); wcscpy(myEquiv.wszDST, L"西班牙人");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"yo soy ciudadano chino"); wcscpy(myEquiv.wszDST, L"我是中国人");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"yo soy ciudadana china"); wcscpy(myEquiv.wszDST, L"我是中国人");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"yo soy ciudadano español"); wcscpy(myEquiv.wszDST, L"我是西班牙人");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"yo soy ciudadana española"); wcscpy(myEquiv.wszDST, L"我是西班牙人");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Yo soy ciudadano chino"); wcscpy(myEquiv.wszDST, L"我是中国人");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Yo soy ciudadana china"); wcscpy(myEquiv.wszDST, L"我是中国人");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Yo soy ciudadano español"); wcscpy(myEquiv.wszDST, L"我是西班牙人");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Yo soy ciudadana española"); wcscpy(myEquiv.wszDST, L"我是西班牙人");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"usuario"); wcscpy(myEquiv.wszDST, L"用户");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Usuario"); wcscpy(myEquiv.wszDST, L"用户");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);
		
		wcscpy(myEquiv.wszORG, L"código de usuario"); wcscpy(myEquiv.wszDST, L"用户代码");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);
		
		wcscpy(myEquiv.wszORG, L"contraseña"); wcscpy(myEquiv.wszDST, L"密码");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"usuario no registrado"); wcscpy(myEquiv.wszDST, L" 非注册用户");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"error en código de usuario"); wcscpy(myEquiv.wszDST, L"在用户错误代码");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"error en contraseña"); wcscpy(myEquiv.wszDST, L"密码错误");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"código de usuario incorrecto"); wcscpy(myEquiv.wszDST, L"在用户错误代码");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"contraseña incorrecta"); wcscpy(myEquiv.wszDST, L"密码错误");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Código de usuario"); wcscpy(myEquiv.wszDST, L"用户代码");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);
		
		wcscpy(myEquiv.wszORG, L"Contraseña"); wcscpy(myEquiv.wszDST, L"密码");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Usuario no registrado"); wcscpy(myEquiv.wszDST, L" 非注册用户");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Error en código de usuario"); wcscpy(myEquiv.wszDST, L"在用户错误代码");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Error en contraseña"); wcscpy(myEquiv.wszDST, L"密码错误");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Código de usuario incorrecto"); wcscpy(myEquiv.wszDST, L"在用户错误代码");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Contraseña incorrecta"); wcscpy(myEquiv.wszDST, L"密码错误");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"acceso denegado"); wcscpy(myEquiv.wszDST, L"访问被拒绝");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Acceso denegado"); wcscpy(myEquiv.wszDST, L"访问被拒绝");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		/********************************/
		wcscpy(myEquiv.wszORG, L"código"); wcscpy(myEquiv.wszDST, L"代码");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Código"); wcscpy(myEquiv.wszDST, L"代码");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"código de producto"); wcscpy(myEquiv.wszDST, L"零件编号");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Código de producto"); wcscpy(myEquiv.wszDST, L"零件编号");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"descripción"); wcscpy(myEquiv.wszDST, L"描述");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Descripción"); wcscpy(myEquiv.wszDST, L"描述");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"precio"); wcscpy(myEquiv.wszDST, L"单位价格");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Precio"); wcscpy(myEquiv.wszDST, L"单位价格");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Cola Cao"); wcscpy(myEquiv.wszDST, L"高乐高");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Cola-Cao"); wcscpy(myEquiv.wszDST, L"高乐高");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"cola cao"); wcscpy(myEquiv.wszDST, L"高乐高");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"cola-cao"); wcscpy(myEquiv.wszDST, L"高乐高");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"colonia Padre 10"); wcscpy(myEquiv.wszDST, L"香水 88亲吻");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Colonia Padre 10"); wcscpy(myEquiv.wszDST, L"香水 88亲吻");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Colonia \"Padre 10\""); wcscpy(myEquiv.wszDST, L"香水 88亲吻");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		wcscpy(myEquiv.wszORG, L"Colonia \"Padre 10\""); wcscpy(myEquiv.wszDST, L"香水 88亲吻");
		fwrite(&myEquiv, sizeof(tagEquiv),1,pFile);

		fclose(pFile);
	}
}

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
	int len = 0;
	int nRegistros = 0;

	switch(ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH: 
			memset(szFileName, 0, sizeof(szFileName));
			GetFicheroDatos(szFileName, sizeof(szFileName), &len);
			if (!ExistsFile(szFileName))
			{
				GenerarArchivoPruebas(szFileName);
			}
			nRegistros = CargarArbol(szFileName);
			break;
	}//del switch

    return TRUE;
}

