Cercando di emulare il comportamento del comando Dir su windows mi sono imbattuto in uno strano problema: la data di ultima scrittura stampata dal mio programma è differente da quella stampata dal comando Dir!
Posto il codice:
codice:
char* tp;
LPWIN32_FIND_DATA data=malloc(sizeof(WIN32_FIND_DATA));
LPSYSTEMTIME time=malloc(sizeof(SYSTEMTIME));
HANDLE f=FindFirstFile("/*",data);
FileTimeToSystemTime(&((*data).ftLastWriteTime),time);
if((*data).dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY) tp="<DIR>";
else tp=" ";
printf("%d/%d/%d %02d.%02d %s %d %s\n",(*time).wDay,(*time).wMonth,(*time).wYear,(*time).wHour,(*time).wMinute,tp,(*data).nFileSizeLow,(*data).cFileName);
while(FindNextFile(f,data)){
FileTimeToSystemTime(&((*data).ftLastAccessTime),time);
if((*data).dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY) tp="<DIR>";
else tp=" ";
printf("%d/%d/%d %02d.%02d %s %d %s\n",(*time).wDay,(*time).wMonth,(*time).wYear,(*time).wHour,(*time).wMinute,tp,(*data).nFileSizeLow,(*data).cFileName);}
Facendolo girare non solo mi sbaglia l'orario ma anche il giorno,almeno al confronto con l'output di Dir!
Ho letto che di default Dir stampa la data di ultima scrittura, e in effetti guardando bene quella stampata da Dir coincide con le mie operazioni.
Come mai??