mirror of
https://github.com/aaru-dps/fstester.git
synced 2025-12-16 19:24:39 +00:00
Set win32 timestamps using a for loop instead of repeating code.
This commit is contained in:
@@ -7,7 +7,7 @@ project(
|
|||||||
DESCRIPTION "Filesystem test creator for 32-bit and 64-bit Windows"
|
DESCRIPTION "Filesystem test creator for 32-bit and 64-bit Windows"
|
||||||
LANGUAGES C)
|
LANGUAGES C)
|
||||||
|
|
||||||
set(PLATFORM_SOURCES attr.c deleted.c dirdepth.c filename.c files.c frag.c links.c os.c perms.c rsrcfork.c sparse.c time.c volume.c xattr.c attr.h rsrcfork.h xattr.h links.h volume.h)
|
set(PLATFORM_SOURCES attr.c deleted.c dirdepth.c filename.c files.c frag.c links.c os.c perms.c rsrcfork.c sparse.c time.c volume.c xattr.c attr.h rsrcfork.h xattr.h links.h volume.h time.h)
|
||||||
|
|
||||||
set(EXECUTABLE_NAME "fssetter-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
set(EXECUTABLE_NAME "fssetter-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,9 @@ Copyright (C) 2011-2021 Natalia Portillo
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "win32.h"
|
#include "win32.h"
|
||||||
|
|
||||||
|
#include "time.h"
|
||||||
|
|
||||||
#include "../include/defs.h"
|
#include "../include/defs.h"
|
||||||
|
|
||||||
void Timestamps(const char* path)
|
void Timestamps(const char* path)
|
||||||
@@ -50,12 +53,10 @@ void Timestamps(const char* path)
|
|||||||
DWORD error;
|
DWORD error;
|
||||||
LPSTR lpRootPathName;
|
LPSTR lpRootPathName;
|
||||||
size_t pathSize = strlen(path);
|
size_t pathSize = strlen(path);
|
||||||
FILETIME ftCreationTime;
|
|
||||||
FILETIME ftLastAccessTime;
|
|
||||||
FILETIME ftLastWriteTime;
|
|
||||||
HANDLE h;
|
HANDLE h;
|
||||||
DWORD rc, wRc, cRc, tRc;
|
DWORD rc, wRc, cRc, tRc;
|
||||||
DWORD dwNumberOfBytesWritten;
|
DWORD dwNumberOfBytesWritten;
|
||||||
|
int i;
|
||||||
|
|
||||||
lpRootPathName = malloc(dwMaxNameSize);
|
lpRootPathName = malloc(dwMaxNameSize);
|
||||||
|
|
||||||
@@ -99,293 +100,46 @@ void Timestamps(const char* path)
|
|||||||
|
|
||||||
printf("Creating timestamped files.\n");
|
printf("Creating timestamped files.\n");
|
||||||
|
|
||||||
h = CreateFileA("MAXCTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
for(i = 0; i < KNOWN_WIN32_TIMESTAMPS; i++)
|
||||||
rc = 0;
|
|
||||||
wRc = 0;
|
|
||||||
cRc = 0;
|
|
||||||
tRc = 0;
|
|
||||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
memset(message, 0, 300);
|
h = CreateFileA(
|
||||||
sprintf(message, DATETIME_FORMAT, MAXDATETIME, "creation");
|
win32_timestamps[i].filename, dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
ftCreationTime.dwHighDateTime = MAXTIMESTAMP;
|
rc = 0;
|
||||||
ftCreationTime.dwLowDateTime = MAXTIMESTAMP;
|
wRc = 0;
|
||||||
|
cRc = 0;
|
||||||
|
tRc = 0;
|
||||||
|
|
||||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
||||||
if(!ret) wRc = GetLastError();
|
else
|
||||||
|
{
|
||||||
|
memset(message, 0, 300);
|
||||||
|
sprintf(message, DATETIME_FORMAT, win32_timestamps[i].message, win32_timestamps[i].type);
|
||||||
|
|
||||||
ret = SetFileTime(h, &ftCreationTime, NULL, NULL);
|
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
||||||
if(!ret) tRc = GetLastError();
|
if(!ret) wRc = GetLastError();
|
||||||
|
|
||||||
ret = CloseHandle(h);
|
if(strcmp(win32_timestamps[i].type, "creation") == 0)
|
||||||
if(!ret) cRc = GetLastError();
|
ret = SetFileTime(h, &win32_timestamps[i].ftCreationTime, NULL, NULL);
|
||||||
|
else if(strcmp(win32_timestamps[i].type, "access") == 0)
|
||||||
|
ret = SetFileTime(h, NULL, &win32_timestamps[i].ftLastAccessTime, NULL);
|
||||||
|
else if(strcmp(win32_timestamps[i].type, "modification") == 0)
|
||||||
|
ret = SetFileTime(h, NULL, NULL, &win32_timestamps[i].ftLastWriteTime);
|
||||||
|
else
|
||||||
|
tRc = -1;
|
||||||
|
|
||||||
|
if(!ret) tRc = GetLastError();
|
||||||
|
|
||||||
|
ret = CloseHandle(h);
|
||||||
|
if(!ret) cRc = GetLastError();
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n",
|
||||||
|
win32_timestamps[i].filename,
|
||||||
|
rc,
|
||||||
|
wRc,
|
||||||
|
cRc,
|
||||||
|
tRc);
|
||||||
}
|
}
|
||||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "MAXCTIME", rc, wRc, cRc, tRc);
|
|
||||||
|
|
||||||
h = CreateFileA("MAXATIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
rc = 0;
|
|
||||||
wRc = 0;
|
|
||||||
cRc = 0;
|
|
||||||
tRc = 0;
|
|
||||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(message, 0, 300);
|
|
||||||
sprintf(message, DATETIME_FORMAT, MAXDATETIME, "access");
|
|
||||||
ftLastAccessTime.dwHighDateTime = MAXTIMESTAMP;
|
|
||||||
ftLastAccessTime.dwLowDateTime = MAXTIMESTAMP;
|
|
||||||
|
|
||||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
|
||||||
if(!ret) wRc = GetLastError();
|
|
||||||
|
|
||||||
ret = SetFileTime(h, NULL, &ftLastAccessTime, NULL);
|
|
||||||
if(!ret) tRc = GetLastError();
|
|
||||||
|
|
||||||
ret = CloseHandle(h);
|
|
||||||
if(!ret) cRc = GetLastError();
|
|
||||||
}
|
|
||||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "MAXATIME", rc, wRc, cRc, tRc);
|
|
||||||
|
|
||||||
h = CreateFileA("MAXMTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
rc = 0;
|
|
||||||
wRc = 0;
|
|
||||||
cRc = 0;
|
|
||||||
tRc = 0;
|
|
||||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(message, 0, 300);
|
|
||||||
sprintf(message, DATETIME_FORMAT, MAXDATETIME, "modification");
|
|
||||||
ftLastWriteTime.dwHighDateTime = MAXTIMESTAMP;
|
|
||||||
ftLastWriteTime.dwLowDateTime = MAXTIMESTAMP;
|
|
||||||
|
|
||||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
|
||||||
if(!ret) wRc = GetLastError();
|
|
||||||
|
|
||||||
ret = SetFileTime(h, NULL, NULL, &ftLastWriteTime);
|
|
||||||
if(!ret) tRc = GetLastError();
|
|
||||||
|
|
||||||
ret = CloseHandle(h);
|
|
||||||
if(!ret) cRc = GetLastError();
|
|
||||||
}
|
|
||||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "MAXMTIME", rc, wRc, cRc, tRc);
|
|
||||||
|
|
||||||
h = CreateFileA("MINCTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
rc = 0;
|
|
||||||
wRc = 0;
|
|
||||||
cRc = 0;
|
|
||||||
tRc = 0;
|
|
||||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(message, 0, 300);
|
|
||||||
sprintf(message, DATETIME_FORMAT, MINDATETIME, "creation");
|
|
||||||
ftCreationTime.dwHighDateTime = MINTIMESTAMP;
|
|
||||||
ftCreationTime.dwLowDateTime = MINTIMESTAMP;
|
|
||||||
|
|
||||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
|
||||||
if(!ret) wRc = GetLastError();
|
|
||||||
|
|
||||||
ret = SetFileTime(h, &ftCreationTime, NULL, NULL);
|
|
||||||
if(!ret) tRc = GetLastError();
|
|
||||||
|
|
||||||
ret = CloseHandle(h);
|
|
||||||
if(!ret) cRc = GetLastError();
|
|
||||||
}
|
|
||||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "MINCTIME", rc, wRc, cRc, tRc);
|
|
||||||
|
|
||||||
h = CreateFileA("MINATIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
rc = 0;
|
|
||||||
wRc = 0;
|
|
||||||
cRc = 0;
|
|
||||||
tRc = 0;
|
|
||||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(message, 0, 300);
|
|
||||||
sprintf(message, DATETIME_FORMAT, MINDATETIME, "access");
|
|
||||||
ftLastAccessTime.dwHighDateTime = MINTIMESTAMP;
|
|
||||||
ftLastAccessTime.dwLowDateTime = MINTIMESTAMP;
|
|
||||||
|
|
||||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
|
||||||
if(!ret) wRc = GetLastError();
|
|
||||||
|
|
||||||
ret = SetFileTime(h, NULL, &ftLastAccessTime, NULL);
|
|
||||||
if(!ret) tRc = GetLastError();
|
|
||||||
|
|
||||||
ret = CloseHandle(h);
|
|
||||||
if(!ret) cRc = GetLastError();
|
|
||||||
}
|
|
||||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "MINATIME", rc, wRc, cRc, tRc);
|
|
||||||
|
|
||||||
h = CreateFileA("MINMTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
rc = 0;
|
|
||||||
wRc = 0;
|
|
||||||
cRc = 0;
|
|
||||||
tRc = 0;
|
|
||||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(message, 0, 300);
|
|
||||||
sprintf(message, DATETIME_FORMAT, MINDATETIME, "modification");
|
|
||||||
ftLastWriteTime.dwHighDateTime = MINTIMESTAMP;
|
|
||||||
ftLastWriteTime.dwLowDateTime = MINTIMESTAMP;
|
|
||||||
|
|
||||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
|
||||||
if(!ret) wRc = GetLastError();
|
|
||||||
|
|
||||||
ret = SetFileTime(h, NULL, NULL, &ftLastWriteTime);
|
|
||||||
if(!ret) tRc = GetLastError();
|
|
||||||
|
|
||||||
ret = CloseHandle(h);
|
|
||||||
if(!ret) cRc = GetLastError();
|
|
||||||
}
|
|
||||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "MINMTIME", rc, wRc, cRc, tRc);
|
|
||||||
|
|
||||||
h = CreateFileA("Y1KCTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
rc = 0;
|
|
||||||
wRc = 0;
|
|
||||||
cRc = 0;
|
|
||||||
tRc = 0;
|
|
||||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(message, 0, 300);
|
|
||||||
sprintf(message, DATETIME_FORMAT, Y1KDATETIME, "creation");
|
|
||||||
ftCreationTime.dwHighDateTime = TIMESTAMP_HI;
|
|
||||||
ftCreationTime.dwLowDateTime = Y1KTIMESTAMP_LO;
|
|
||||||
|
|
||||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
|
||||||
if(!ret) wRc = GetLastError();
|
|
||||||
|
|
||||||
ret = SetFileTime(h, &ftCreationTime, NULL, NULL);
|
|
||||||
if(!ret) tRc = GetLastError();
|
|
||||||
|
|
||||||
ret = CloseHandle(h);
|
|
||||||
if(!ret) cRc = GetLastError();
|
|
||||||
}
|
|
||||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "Y1KCTIME", rc, wRc, cRc, tRc);
|
|
||||||
|
|
||||||
h = CreateFileA("Y1KATIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
rc = 0;
|
|
||||||
wRc = 0;
|
|
||||||
cRc = 0;
|
|
||||||
tRc = 0;
|
|
||||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(message, 0, 300);
|
|
||||||
sprintf(message, DATETIME_FORMAT, Y1KDATETIME, "access");
|
|
||||||
ftLastAccessTime.dwHighDateTime = TIMESTAMP_HI;
|
|
||||||
ftLastAccessTime.dwLowDateTime = Y1KTIMESTAMP_LO;
|
|
||||||
|
|
||||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
|
||||||
if(!ret) wRc = GetLastError();
|
|
||||||
|
|
||||||
ret = SetFileTime(h, NULL, &ftLastAccessTime, NULL);
|
|
||||||
if(!ret) tRc = GetLastError();
|
|
||||||
|
|
||||||
ret = CloseHandle(h);
|
|
||||||
if(!ret) cRc = GetLastError();
|
|
||||||
}
|
|
||||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "Y1KATIME", rc, wRc, cRc, tRc);
|
|
||||||
|
|
||||||
h = CreateFileA("Y1KMTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
rc = 0;
|
|
||||||
wRc = 0;
|
|
||||||
cRc = 0;
|
|
||||||
tRc = 0;
|
|
||||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(message, 0, 300);
|
|
||||||
sprintf(message, DATETIME_FORMAT, Y1KDATETIME, "modification");
|
|
||||||
ftLastWriteTime.dwHighDateTime = TIMESTAMP_HI;
|
|
||||||
ftLastWriteTime.dwLowDateTime = Y1KTIMESTAMP_LO;
|
|
||||||
|
|
||||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
|
||||||
if(!ret) wRc = GetLastError();
|
|
||||||
|
|
||||||
ret = SetFileTime(h, NULL, NULL, &ftLastWriteTime);
|
|
||||||
if(!ret) tRc = GetLastError();
|
|
||||||
|
|
||||||
ret = CloseHandle(h);
|
|
||||||
if(!ret) cRc = GetLastError();
|
|
||||||
}
|
|
||||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "Y1KMTIME", rc, wRc, cRc, tRc);
|
|
||||||
|
|
||||||
h = CreateFileA("Y2KCTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
rc = 0;
|
|
||||||
wRc = 0;
|
|
||||||
cRc = 0;
|
|
||||||
tRc = 0;
|
|
||||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(message, 0, 300);
|
|
||||||
sprintf(message, DATETIME_FORMAT, Y2KDATETIME, "creation");
|
|
||||||
ftCreationTime.dwHighDateTime = TIMESTAMP_HI;
|
|
||||||
ftCreationTime.dwLowDateTime = Y2KTIMESTAMP_LO;
|
|
||||||
|
|
||||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
|
||||||
if(!ret) wRc = GetLastError();
|
|
||||||
|
|
||||||
ret = SetFileTime(h, &ftCreationTime, NULL, NULL);
|
|
||||||
if(!ret) tRc = GetLastError();
|
|
||||||
|
|
||||||
ret = CloseHandle(h);
|
|
||||||
if(!ret) cRc = GetLastError();
|
|
||||||
}
|
|
||||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "Y2KCTIME", rc, wRc, cRc, tRc);
|
|
||||||
|
|
||||||
h = CreateFileA("Y2KATIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
rc = 0;
|
|
||||||
wRc = 0;
|
|
||||||
cRc = 0;
|
|
||||||
tRc = 0;
|
|
||||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(message, 0, 300);
|
|
||||||
sprintf(message, DATETIME_FORMAT, Y2KDATETIME, "access");
|
|
||||||
ftLastAccessTime.dwHighDateTime = TIMESTAMP_HI;
|
|
||||||
ftLastAccessTime.dwLowDateTime = Y2KTIMESTAMP_LO;
|
|
||||||
|
|
||||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
|
||||||
if(!ret) wRc = GetLastError();
|
|
||||||
|
|
||||||
ret = SetFileTime(h, NULL, &ftLastAccessTime, NULL);
|
|
||||||
if(!ret) tRc = GetLastError();
|
|
||||||
|
|
||||||
ret = CloseHandle(h);
|
|
||||||
if(!ret) cRc = GetLastError();
|
|
||||||
}
|
|
||||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "Y2KATIME", rc, wRc, cRc, tRc);
|
|
||||||
|
|
||||||
h = CreateFileA("Y2KMTIME", dwFilePermissions, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
||||||
rc = 0;
|
|
||||||
wRc = 0;
|
|
||||||
cRc = 0;
|
|
||||||
tRc = 0;
|
|
||||||
if(h == INVALID_HANDLE_VALUE) rc = GetLastError();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
memset(message, 0, 300);
|
|
||||||
sprintf(message, DATETIME_FORMAT, Y1KDATETIME, "modification");
|
|
||||||
ftLastWriteTime.dwHighDateTime = TIMESTAMP_HI;
|
|
||||||
ftLastWriteTime.dwLowDateTime = Y2KTIMESTAMP_LO;
|
|
||||||
|
|
||||||
ret = WriteFile(h, message, strlen(message), &dwNumberOfBytesWritten, NULL);
|
|
||||||
if(!ret) wRc = GetLastError();
|
|
||||||
|
|
||||||
ret = SetFileTime(h, NULL, NULL, &ftLastWriteTime);
|
|
||||||
if(!ret) tRc = GetLastError();
|
|
||||||
|
|
||||||
ret = CloseHandle(h);
|
|
||||||
if(!ret) cRc = GetLastError();
|
|
||||||
}
|
|
||||||
printf("\tFile name = \"%s\", rc = %lu, wRc = %lu, cRc = %lu, tRc = %lu\n", "Y2KMTIME", rc, wRc, cRc, tRc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
48
setter/src/win32/time.h
Normal file
48
setter/src/win32/time.h
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
//
|
||||||
|
// Created by claunia on 11/3/21.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef SETTER_SRC_WIN32_TIME_H_
|
||||||
|
#define SETTER_SRC_WIN32_TIME_H_
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
#define DATETIME_FORMAT "This file is dated %s for %s\r"
|
||||||
|
#define MAXDATETIME "60056/05/28 05:36:11"
|
||||||
|
#define MINDATETIME "1601/01/01 00:00:00"
|
||||||
|
#define Y2KDATETIME "2000/01/01 00:00:00"
|
||||||
|
#define Y1KDATETIME "1999/12/31 23:59:59"
|
||||||
|
#define MAXTIMESTAMP 0xFFFFFFFF
|
||||||
|
#define MINTIMESTAMP 0x00000000
|
||||||
|
#define TIMESTAMP_HI 0x01BF53EB
|
||||||
|
#define Y2KTIMESTAMP_LO 0x256D4000
|
||||||
|
#define Y1KTIMESTAMP_LO 0x24D4A980
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char filename[9];
|
||||||
|
FILETIME ftCreationTime;
|
||||||
|
FILETIME ftLastAccessTime;
|
||||||
|
FILETIME ftLastWriteTime;
|
||||||
|
char type[13];
|
||||||
|
char message[21];
|
||||||
|
} win32_time_tests_t;
|
||||||
|
|
||||||
|
#define KNOWN_WIN32_TIMESTAMPS 12
|
||||||
|
|
||||||
|
static const win32_time_tests_t win32_timestamps[KNOWN_WIN32_TIMESTAMPS] = {
|
||||||
|
{"MAXCTIME", {MAXTIMESTAMP, MAXTIMESTAMP}, {0, 0}, {0, 0}, "creation", MAXDATETIME},
|
||||||
|
{"MAXATIME", {0, 0}, {MAXTIMESTAMP, MAXTIMESTAMP}, {0, 0}, "access", MAXDATETIME},
|
||||||
|
{"MAXMTIME", {0, 0}, {0, 0}, {MAXTIMESTAMP, MAXTIMESTAMP}, "modification", MAXDATETIME},
|
||||||
|
{"MINCTIME", {MINTIMESTAMP, MINTIMESTAMP}, {0, 0}, {0, 0}, "creation", MINDATETIME},
|
||||||
|
{"MINATIME", {0, 0}, {MINTIMESTAMP, MINTIMESTAMP}, {0, 0}, "access", MINDATETIME},
|
||||||
|
{"MINMTIME", {0, 0}, {0, 0}, {MINTIMESTAMP, MINTIMESTAMP}, "modification", MINDATETIME},
|
||||||
|
{"Y1KCTIME", {Y1KTIMESTAMP_LO, TIMESTAMP_HI}, {0, 0}, {0, 0}, "creation", Y1KDATETIME},
|
||||||
|
{"Y1KATIME", {0, 0}, {Y1KTIMESTAMP_LO, TIMESTAMP_HI}, {0, 0}, "access", Y1KDATETIME},
|
||||||
|
{"Y1KMTIME", {0, 0}, {0, 0}, {Y1KTIMESTAMP_LO, TIMESTAMP_HI}, "modification", Y1KDATETIME},
|
||||||
|
{"Y2KCTIME", {Y2KTIMESTAMP_LO, TIMESTAMP_HI}, {0, 0}, {0, 0}, "creation", Y2KDATETIME},
|
||||||
|
{"Y2KATIME", {0, 0}, {Y2KTIMESTAMP_LO, TIMESTAMP_HI}, {0, 0}, "access", Y2KDATETIME},
|
||||||
|
{"Y2KMTIME", {0, 0}, {0, 0}, {Y2KTIMESTAMP_LO, TIMESTAMP_HI}, "modification", Y2KDATETIME},
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SETTER_SRC_WIN32_TIME_H_
|
||||||
@@ -229,17 +229,6 @@ typedef struct _WINNT_FILE_ZERO_DATA_INFORMATION
|
|||||||
} WINNT_FILE_ZERO_DATA_INFORMATION, *PWINNT_FILE_ZERO_DATA_INFORMATION;
|
} WINNT_FILE_ZERO_DATA_INFORMATION, *PWINNT_FILE_ZERO_DATA_INFORMATION;
|
||||||
|
|
||||||
|
|
||||||
#define DATETIME_FORMAT "This file is dated %s for %s\r"
|
|
||||||
#define MAXDATETIME "60056/05/28 05:36:11"
|
|
||||||
#define MINDATETIME "1601/01/01 00:00:00"
|
|
||||||
#define Y2KDATETIME "2000/01/01 00:00:00"
|
|
||||||
#define Y1KDATETIME "1999/12/31 23:59:59"
|
|
||||||
#define MAXTIMESTAMP 0xFFFFFFFF
|
|
||||||
#define MINTIMESTAMP 0x00000000
|
|
||||||
#define TIMESTAMP_HI 0x01BF53EB
|
|
||||||
#define Y2KTIMESTAMP_LO 0x256D4000
|
|
||||||
#define Y1KTIMESTAMP_LO 0x24D4A980
|
|
||||||
|
|
||||||
typedef struct _WIN_OSVERSIONINFOA
|
typedef struct _WIN_OSVERSIONINFOA
|
||||||
{
|
{
|
||||||
DWORD dwOSVersionInfoSize;
|
DWORD dwOSVersionInfoSize;
|
||||||
|
|||||||
Reference in New Issue
Block a user