Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

182 lines
4.2 KiB

/*++
© 1998 Seagate Software, Inc. All rights reserved
Module Name:
Rule.cpp
Abstract:
Rule object for use in inclusion exclusion.
Author:
Art Bragg [abragg] 08-Aug-1997
Revision History:
--*/
#include "stdafx.h"
#include "Rule.h"
/////////////////////////////////////////////////////////////////////////////
// CRule dialog
static DWORD pHelpIds[] =
{
IDC_EDIT_RESOURCE_NAME, idh_rule_edit_name,
IDC_EDIT_PATH, idh_rule_edit_path,
IDC_EDIT_FILESPEC, idh_rule_edit_file_type,
IDC_RADIO_EXCLUDE, idh_rule_edit_exclude,
IDC_RADIO_INCLUDE, idh_rule_edit_include,
IDC_CHECK_SUBDIRS, idh_rule_edit_apply_subfolders,
0, 0
};
CRule::CRule(CWnd* pParent /*=NULL*/)
: CRsDialog(CRule::IDD, pParent)
{
//{{AFX_DATA_INIT(CRule)
m_subDirs = FALSE;
m_fileSpec = _T("");
m_path = _T("");
m_includeExclude = -1;
m_pResourceName = _T("");
//}}AFX_DATA_INIT
m_pHelpIds = pHelpIds;
}
void CRule::DoDataExchange(CDataExchange* pDX)
{
CRsDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRule)
DDX_Check(pDX, IDC_CHECK_SUBDIRS, m_subDirs);
DDX_Text(pDX, IDC_EDIT_FILESPEC, m_fileSpec);
DDX_Text(pDX, IDC_EDIT_PATH, m_path);
DDX_Radio(pDX, IDC_RADIO_EXCLUDE, m_includeExclude);
DDX_Text(pDX, IDC_EDIT_RESOURCE_NAME, m_pResourceName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRule, CRsDialog)
//{{AFX_MSG_MAP(CRule)
ON_BN_CLICKED(IDC_RADIO_EXCLUDE, OnRadioExclude)
ON_BN_CLICKED(IDC_RADIO_INCLUDE, OnRadioInclude)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRule message handlers
void CRule::OnRadioExclude()
{
// TODO: Add your control notification handler code here
}
void CRule::OnRadioInclude()
{
// TODO: Add your control notification handler code here
}
BOOL CRule::OnInitDialog()
{
CRsDialog::OnInitDialog();
UpdateData (FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//////////////////////////////////////////////////////////////////////////
//
// Returns: False if path is not legal
//
BOOL CRule::FixRulePath (CString& sPath)
{
BOOL fOk = TRUE;
TCHAR c;
int length = 0;
int i;
// Test for illegal characters
length = sPath.GetLength();
for (i = 0; i < length; i++)
{
c = sPath[i];
if (c == ':') {
fOk = FALSE;
break;
}
}
if (fOk) {
// Convert all "/" to "\"
length = sPath.GetLength();
for (i = 0; i < length; i++)
{
c = sPath[i];
if (c == '/') sPath.SetAt (i, '\\');
}
// Make sure path starts with a "\"
c = sPath[0];
if (c != '\\')
{
sPath = "\\" + sPath;
}
// If path has at least one dir, clean up final "\" if there is one
length = sPath.GetLength();
if (length > 1) {
c = sPath[length - 1];
if (c == '\\') {
sPath = sPath.Left (length - 1);
}
}
}
return fOk;
}
void CRule::OnOK()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
UpdateData (TRUE);
// Verify the path and name fields
if (m_path != "")
{
if (m_fileSpec != "")
{
// Fix up the path
if (FixRulePath (m_path)) {
// Show the new data - because when we call OnOK the variables
// will get updated again.
UpdateData (FALSE);
CRsDialog::OnOK();
} else {
AfxMessageBox (IDS_ERR_RULE_ILLEGAL_PATH, RS_MB_ERROR);
}
}
else {
AfxMessageBox (IDS_ERR_RULE_NO_FILESPEC, RS_MB_ERROR);
}
}
else {
AfxMessageBox (IDS_ERR_RULE_NO_PATH, RS_MB_ERROR);
}
}