96 lines
2.6 KiB
C
96 lines
2.6 KiB
C
|
#include "precomp.h"
|
||
|
#pragma hdrstop
|
||
|
/* File: dir.c */
|
||
|
/*************************************************************************
|
||
|
** Install: Directory commands.
|
||
|
**************************************************************************/
|
||
|
|
||
|
extern HWND hwndFrame;
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
** Purpose:
|
||
|
** Creates a new directory at the given path.
|
||
|
** Arguments:
|
||
|
** szDir: non-NULL dir path pointer.
|
||
|
** Valid command options:
|
||
|
** cmoVital
|
||
|
** cmoNone
|
||
|
** Returns:
|
||
|
** Returns fTrue if the directory is successfully created, or if
|
||
|
** it already exists. Returns fFalse otherwise.
|
||
|
**
|
||
|
**************************************************************************/
|
||
|
BOOL APIENTRY FCreateDir(SZ szDir,CMO cmo)
|
||
|
{
|
||
|
CB cb;
|
||
|
SZ szDirPlus;
|
||
|
EERC eerc;
|
||
|
DWORD Attr;
|
||
|
BOOL fRet = fTrue;
|
||
|
|
||
|
ChkArg(szDir != (SZ)NULL && *szDir != '\0', 1, fFalse);
|
||
|
ChkArg(cmo == cmoNone || cmo == cmoVital, 2, fFalse);
|
||
|
|
||
|
//
|
||
|
// Create directory
|
||
|
//
|
||
|
|
||
|
while ( !((( Attr = GetFileAttributes(szDir) ) != 0xFFFFFFFF && (Attr & FILE_ATTRIBUTE_DIRECTORY ))
|
||
|
|| CreateDirectory( szDir, NULL )) ) {
|
||
|
if ((eerc = EercErrorHandler(hwndFrame, grcCreateDirErr, cmo == cmoVital,
|
||
|
szDir, 0, 0)) != eercRetry) {
|
||
|
fRet = (eerc == eercIgnore) ? fTrue : fFalse;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
return(fRet);
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
** Purpose:
|
||
|
** Removes the existing directory at the given path.
|
||
|
** Arguments:
|
||
|
** szDir: non-NULL dir path pointer.
|
||
|
** Valid command options:
|
||
|
** cmoVital
|
||
|
** cmoNone
|
||
|
** Returns:
|
||
|
** Returns fTrue if the directory is successfuly removed,
|
||
|
** or if did not exist. Returns fFalse otherwise.
|
||
|
**
|
||
|
**************************************************************************/
|
||
|
BOOL APIENTRY FRemoveDir(SZ szDir,CMO cmo)
|
||
|
{
|
||
|
SZ szLast;
|
||
|
EERC eerc;
|
||
|
DWORD Attr;
|
||
|
|
||
|
ChkArg(szDir != (SZ)NULL, 1, fFalse);
|
||
|
ChkArg(cmo == cmoNone || cmo == cmoVital, 2, fFalse);
|
||
|
|
||
|
if (!FValidDir(szDir) ||
|
||
|
(szLast = SzLastChar(szDir)) == (SZ)NULL)
|
||
|
return(fFalse);
|
||
|
Assert(*szLast != '\0');
|
||
|
|
||
|
if (*szLast == '\\')
|
||
|
*szLast = '\0';
|
||
|
|
||
|
while (!RemoveDirectory(szDir) && (( Attr = GetFileAttributes(szDir) ) != 0xFFFFFFFF) && (Attr & FILE_ATTRIBUTE_DIRECTORY )) {
|
||
|
if ((eerc = EercErrorHandler(hwndFrame, grcRemoveDirErr, cmo & cmoVital,
|
||
|
szDir, 0, 0)) != eercRetry) {
|
||
|
if (*szLast == '\0')
|
||
|
*szLast = '\\';
|
||
|
return(eerc == eercIgnore);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (*szLast == '\0')
|
||
|
*szLast = '\\';
|
||
|
|
||
|
return(fTrue);
|
||
|
}
|