// RmReadOnlyBit.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "RmReadOnlyBit.h"
#include <direct.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
using namespace std;
int RemoveReadOnlyBit();
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
RemoveReadOnlyBit();
}
return nRetCode;
}
int RemoveReadOnlyBit()
{
CFileFind finder;
CString fileName;
bool bImagesExist = (bool)finder.FindFile("*.*");
while(bImagesExist)
{
bImagesExist = finder.FindNextFile();
if(finder.IsDirectory())continue;
fileName = finder.GetFileName();
CFileStatus fs;
CFile::GetStatus(fileName,fs);
fs.m_mtime=0;
fs.m_attribute &= ~(CFile::readOnly);
CFile::SetStatus(fileName,fs);
cout<<"Removed read only bit on "<<(LPCTSTR)fileName<<endl;
}
bool bWorking = finder.FindFile("*.*");
while(bWorking)
{
bWorking = finder.FindNextFile();
if(finder.GetFileName() != "." && finder.GetFileName() != "..")
{
if(finder.IsDirectory())
{
chdir((LPCTSTR)finder.GetFileName());
RemoveReadOnlyBit();
}
}
}
chdir("..");
return 0;
}