Browse Source

set file last modified times when saving remote file

ScottBrogden 9 years ago
parent
commit
3f3195beda
2 changed files with 30 additions and 0 deletions
  1. 17 0
      FileRecieve.cpp
  2. 13 0
      FileSend.cpp

+ 17 - 0
FileRecieve.cpp

@@ -98,6 +98,23 @@ long CFileRecieve::RecieveFiles(SOCKET sock, CString csIP, CFileTransferProgress
 		break;
 
 		case MyEnums::DATA_END:
+		{
+			if (Info.m_lParameter1 != 0 &&
+				Info.m_lParameter2 != 0 &&
+				m_RecievedFiles.GetCount() > 0)
+			{
+				FILETIME lastWriteTime;
+				lastWriteTime.dwLowDateTime = Info.m_lParameter1;
+				lastWriteTime.dwHighDateTime = Info.m_lParameter2;
+
+				HANDLE filename = CreateFile(m_RecievedFiles[m_RecievedFiles.GetCount() - 1], FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);				
+				if(filename != NULL)
+				{
+					SetFileTime(filename, NULL, NULL, &lastWriteTime);
+				}
+			}
+		}
+
 			break;
 
 		case MyEnums::END:

+ 13 - 0
FileSend.cpp

@@ -151,6 +151,19 @@ BOOL CFileSend::SendFile(CString csFile)
 				
 				if(bError == FALSE)
 				{
+					Info.m_lParameter1 = 0;
+					Info.m_lParameter2 = 0;
+
+					FILETIME creationTime;
+					FILETIME lastAccessTime;
+					FILETIME lastWriteTime;
+
+					if (GetFileTime(file, &creationTime, &lastAccessTime, &lastWriteTime))
+					{
+						Info.m_lParameter1 = lastWriteTime.dwLowDateTime;
+						Info.m_lParameter2 = lastWriteTime.dwHighDateTime;
+					}
+
 					if(m_Send.SendCSendData(Info, MyEnums::DATA_END))
 						bRet = TRUE;
 				}