mirror of https://github.com/lianthony/NT4.0
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.
156 lines
3.0 KiB
156 lines
3.0 KiB
/*++
|
|
|
|
Copyright (c) 1991 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
delnode.c
|
|
|
|
Abstract:
|
|
|
|
Delnode routine for Setup.
|
|
|
|
Author:
|
|
|
|
Ted Miller (tedm) August 1992
|
|
|
|
--*/
|
|
|
|
|
|
#include "precomp.h"
|
|
#pragma hdrstop
|
|
#include "msg.h"
|
|
|
|
//
|
|
// Put these out here so we don't consume huge stack space as we recurse.
|
|
//
|
|
|
|
TCHAR Pattern[MAX_PATH+1];
|
|
WIN32_FIND_DATA FindData;
|
|
|
|
VOID
|
|
DelnodeRoutine(
|
|
VOID
|
|
)
|
|
{
|
|
PTSTR PatternEnd;
|
|
HANDLE FindHandle;
|
|
|
|
//
|
|
// Delete each file in the directory, then remove the directory itself.
|
|
// If any directories are encountered along the way recurse to delete
|
|
// them as they are encountered.
|
|
//
|
|
|
|
PatternEnd = Pattern+lstrlen(Pattern);
|
|
|
|
lstrcat(Pattern,TEXT("\\*"));
|
|
FindHandle = FindFirstFile(Pattern,&FindData);
|
|
|
|
if(FindHandle != INVALID_HANDLE_VALUE) {
|
|
|
|
do {
|
|
|
|
//
|
|
// Form the full name of the file we just found.
|
|
//
|
|
|
|
lstrcpy(PatternEnd+1,FindData.cFileName);
|
|
|
|
if(FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
|
|
|
|
//
|
|
// The current match is a directory. Recurse into it unless
|
|
// it's . or ...
|
|
//
|
|
|
|
if(lstrcmp(FindData.cFileName,TEXT("." ))
|
|
&& lstrcmp(FindData.cFileName,TEXT("..")))
|
|
{
|
|
DelnodeRoutine();
|
|
}
|
|
|
|
} else {
|
|
|
|
//
|
|
// The current match is not a directory -- so delete it.
|
|
//
|
|
|
|
SetFileAttributes(Pattern,FILE_ATTRIBUTE_NORMAL);
|
|
DeleteFile(Pattern);
|
|
}
|
|
|
|
*(PatternEnd+1) = 0;
|
|
|
|
} while(FindNextFile(FindHandle,&FindData));
|
|
|
|
FindClose(FindHandle);
|
|
}
|
|
|
|
//
|
|
// Remove the directory we just emptied out.
|
|
//
|
|
|
|
*PatternEnd = 0;
|
|
SetFileAttributes(Pattern,FILE_ATTRIBUTE_NORMAL);
|
|
RemoveDirectory(Pattern);
|
|
|
|
//
|
|
// Note that the 'directory' might actually be a file.
|
|
// Catch that case here.
|
|
//
|
|
DeleteFile(Pattern);
|
|
}
|
|
|
|
|
|
|
|
VOID
|
|
MyDelnode(
|
|
IN PTSTR Directory
|
|
)
|
|
{
|
|
lstrcpy(Pattern,Directory);
|
|
|
|
DelnodeRoutine();
|
|
}
|
|
|
|
|
|
VOID
|
|
DelnodeTemporaryFiles(
|
|
IN HWND hdlg,
|
|
IN TCHAR Drive,
|
|
IN PTSTR Directory
|
|
)
|
|
{
|
|
HANDLE FindHandle;
|
|
|
|
Pattern[0] = Drive;
|
|
Pattern[1] = TEXT(':');
|
|
lstrcpy(Pattern+2,Directory);
|
|
|
|
//
|
|
// If local source exsits, change display
|
|
// and delnode it. Otherwise, nothing to do.
|
|
//
|
|
FindHandle = FindFirstFile(Pattern,&FindData);
|
|
if(FindHandle != INVALID_HANDLE_VALUE) {
|
|
|
|
RetreiveAndFormatMessageIntoBuffer(
|
|
MSG_DELNODING_LOCAL_SOURCE,
|
|
Pattern,
|
|
SIZECHARS(Pattern),
|
|
Drive
|
|
);
|
|
|
|
SendMessage(hdlg,WMX_BILLBOARD_STATUS,0,(LPARAM)Pattern);
|
|
|
|
FindClose(FindHandle);
|
|
|
|
Pattern[0] = Drive;
|
|
Pattern[1] = TEXT(':');
|
|
lstrcpy(Pattern+2,Directory);
|
|
DelnodeRoutine();
|
|
Sleep(300); // let the user see what we did
|
|
}
|
|
}
|
|
|