#include <string>
#include <iostream>
#include <Windows.h>
bool shouldCreate(std::string inFile, std::string outfile) {
HANDLE inputFileHandle = CreateFileA(inFile.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (!inputFileHandle) return false; //If I can't open the input File I also can't convert it.
HANDLE outputFileHandle = CreateFileA(outfile.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (!outputFileHandle) return true; //If output file doesn't exist I'll create it.
FILETIME LastWriteTimeInputFile;
FILETIME LastWriteTimeOutputFile;
if (!GetFileTime(inputFileHandle, NULL, NULL, &LastWriteTimeInputFile)) return true; //If we can't get time just convert it anyway
if (!GetFileTime(outputFileHandle, NULL, NULL, &LastWriteTimeOutputFile)) return true;
//If input file was lastEdited after output file
if (
_ULARGE_INTEGER{ LastWriteTimeInputFile.dwLowDateTime, LastWriteTimeInputFile.dwHighDateTime }.QuadPart
>
_ULARGE_INTEGER{ LastWriteTimeOutputFile.dwLowDateTime, LastWriteTimeOutputFile.dwHighDateTime }.QuadPart
) return true;
return false;
}
int main(int argc, char* argv[]) {
bool should = shouldCreate(argv[1],argv[2]);
std::cout << should;
return should;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8V2luZG93cy5oPgoKYm9vbCBzaG91bGRDcmVhdGUoc3RkOjpzdHJpbmcgaW5GaWxlLCBzdGQ6OnN0cmluZyBvdXRmaWxlKSB7CiAgICBIQU5ETEUgaW5wdXRGaWxlSGFuZGxlID0gQ3JlYXRlRmlsZUEoaW5GaWxlLmNfc3RyKCksIEdFTkVSSUNfUkVBRCwgRklMRV9TSEFSRV9SRUFELCBOVUxMLCBPUEVOX0VYSVNUSU5HLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIE5VTEwpOwogICAgaWYgKCFpbnB1dEZpbGVIYW5kbGUpIHJldHVybiBmYWxzZTsgLy9JZiBJIGNhbid0IG9wZW4gdGhlIGlucHV0IEZpbGUgSSBhbHNvIGNhbid0IGNvbnZlcnQgaXQuCiAgICBIQU5ETEUgb3V0cHV0RmlsZUhhbmRsZSA9IENyZWF0ZUZpbGVBKG91dGZpbGUuY19zdHIoKSwgR0VORVJJQ19SRUFELCBGSUxFX1NIQVJFX1JFQUQsIE5VTEwsIE9QRU5fRVhJU1RJTkcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgTlVMTCk7CiAgICBpZiAoIW91dHB1dEZpbGVIYW5kbGUpIHJldHVybiB0cnVlOyAvL0lmIG91dHB1dCBmaWxlIGRvZXNuJ3QgZXhpc3QgSSdsbCBjcmVhdGUgaXQuCiAgICBGSUxFVElNRSBMYXN0V3JpdGVUaW1lSW5wdXRGaWxlOwogICAgRklMRVRJTUUgTGFzdFdyaXRlVGltZU91dHB1dEZpbGU7CiAgICBpZiAoIUdldEZpbGVUaW1lKGlucHV0RmlsZUhhbmRsZSwgTlVMTCwgTlVMTCwgJkxhc3RXcml0ZVRpbWVJbnB1dEZpbGUpKSByZXR1cm4gdHJ1ZTsgLy9JZiB3ZSBjYW4ndCBnZXQgdGltZSBqdXN0IGNvbnZlcnQgaXQgYW55d2F5CiAgICBpZiAoIUdldEZpbGVUaW1lKG91dHB1dEZpbGVIYW5kbGUsIE5VTEwsIE5VTEwsICZMYXN0V3JpdGVUaW1lT3V0cHV0RmlsZSkpIHJldHVybiB0cnVlOwogICAgLy9JZiBpbnB1dCBmaWxlIHdhcyBsYXN0RWRpdGVkIGFmdGVyIG91dHB1dCBmaWxlCiAgICBpZiAoCiAgICAgICAgX1VMQVJHRV9JTlRFR0VSeyBMYXN0V3JpdGVUaW1lSW5wdXRGaWxlLmR3TG93RGF0ZVRpbWUsIExhc3RXcml0ZVRpbWVJbnB1dEZpbGUuZHdIaWdoRGF0ZVRpbWUgfS5RdWFkUGFydAogICAgICAgID4KICAgICAgICBfVUxBUkdFX0lOVEVHRVJ7IExhc3RXcml0ZVRpbWVPdXRwdXRGaWxlLmR3TG93RGF0ZVRpbWUsIExhc3RXcml0ZVRpbWVPdXRwdXRGaWxlLmR3SGlnaERhdGVUaW1lIH0uUXVhZFBhcnQKICAgICAgICApIHJldHVybiB0cnVlOwoKICAgIHJldHVybiBmYWxzZTsKfQoKCmludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKCWJvb2wgc2hvdWxkID0gc2hvdWxkQ3JlYXRlKGFyZ3ZbMV0sYXJndlsyXSk7CglzdGQ6OmNvdXQgPDwgc2hvdWxkOwoJcmV0dXJuIHNob3VsZDsKfQ==