Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // xmlfix.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- HANDLE hFile;
- DWORD size;
- DWORD filedata, filedatafixed;
- DWORD origfiledata, origfiledatafixed;
- DWORD bytesWritten, BytesRead;
- DWORD patternaddr;
- char countrycode[4];
- char pattern1[] = " CountryOrigin=\x22";
- char pattern2[] = "</SerialNo>";
- if (argc != 2) {
- printf("Ni vhodnih parametrov!\n");
- return -1;
- }
- countrycode[0] = '-';
- hFile = CreateFile(argv[1], GENERIC_READ | GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- if (hFile == INVALID_HANDLE_VALUE) {
- printf("Odpiranje datoteke ni uspelo!\n");
- return -1;
- }
- size = GetFileSize(hFile, NULL);
- size += 10;
- filedata = (DWORD)VirtualAlloc(0, (SIZE_T)size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
- filedatafixed = (DWORD)VirtualAlloc(0, (SIZE_T)(size+(size/4)), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
- origfiledata = filedata;
- origfiledatafixed = filedatafixed;
- if(!(ReadFile(hFile, (DWORD*)filedata, size, &BytesRead, 0))) {
- printf("Branje datoteke neuspešno!\n");
- return -1;
- }
- while(1)
- {
- patternaddr = (DWORD)StrStr((LPSTR)filedata, pattern1);
- if (!patternaddr) {
- StringCbCat(STRSAFE_LPSTR(filedatafixed), (size+(size/2)), (STRSAFE_LPCSTR)filedata);
- break;
- }
- StringCbCopy(countrycode+1, 3, STRSAFE_LPCSTR(patternaddr+(sizeof(pattern1)-1)));
- patternaddr = (DWORD)StrStr((LPSTR)patternaddr, pattern2);
- StringCbCopy(STRSAFE_LPSTR(filedatafixed+(strlen((char*)filedatafixed))), (patternaddr-filedata)+1, STRSAFE_LPCSTR(filedata));
- if (StrCmpN((LPCSTR)(patternaddr-3), countrycode, 3)) {
- StringCbCat(STRSAFE_LPSTR(filedatafixed), (size+(size/2)), countrycode);
- }
- filedata = patternaddr;
- }
- SetFilePointer(hFile, NULL, NULL, FILE_BEGIN);
- WriteFile(hFile, (LPCVOID)filedatafixed, strlen((char*)filedatafixed), &bytesWritten, NULL);
- VirtualFree((LPVOID)origfiledata, size, MEM_DECOMMIT | MEM_RELEASE);
- VirtualFree((LPVOID)origfiledatafixed, (size+(size/4)), MEM_DECOMMIT | MEM_RELEASE);
- CloseHandle(hFile);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement