mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 19:42:57 +00:00
[TREE] Attempt to fix some style & formatting crimes. Improve header inclusions. CORE-8529
svn path=/trunk/; revision=65786
This commit is contained in:
parent
9d80e094b4
commit
b37505476c
3 changed files with 156 additions and 134 deletions
|
@ -2,5 +2,5 @@
|
||||||
add_executable(tree tree.c tree.rc)
|
add_executable(tree tree.c tree.rc)
|
||||||
set_module_type(tree win32cui UNICODE)
|
set_module_type(tree win32cui UNICODE)
|
||||||
set_target_properties(tree PROPERTIES SUFFIX ".com")
|
set_target_properties(tree PROPERTIES SUFFIX ".com")
|
||||||
add_importlibs(tree msvcrt kernel32 user32)
|
add_importlibs(tree user32 msvcrt kernel32)
|
||||||
add_cd_file(TARGET tree DESTINATION reactos/system32 FOR all)
|
add_cd_file(TARGET tree DESTINATION reactos/system32 FOR all)
|
||||||
|
|
|
@ -6,18 +6,22 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
//#include <stdarg.h>
|
#include <stdlib.h>
|
||||||
#include <windows.h>
|
#include <windef.h>
|
||||||
|
#include <winbase.h>
|
||||||
|
#include <winuser.h>
|
||||||
|
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
|
||||||
#define STR_MAX 2048
|
#define STR_MAX 2048
|
||||||
|
|
||||||
static void DrawTree(const wchar_t* strPath, const WIN32_FIND_DATA *arrFolder, const size_t szArr, UINT width, const wchar_t *prevLine, BOOL drawfolder);
|
|
||||||
static void GetDirectoryStructure(wchar_t* strPath, UINT width, const wchar_t* prevLine);
|
static void GetDirectoryStructure(wchar_t* strPath, UINT width, const wchar_t* prevLine);
|
||||||
|
|
||||||
BOOL bShowFiles = FALSE; //if this flag is set to true, files will also be listed
|
/* if this flag is set to true, files will also be listed */
|
||||||
BOOL bUseAscii = FALSE; //if this flag is true, ASCII characters will be used instead of UNICODE ones
|
BOOL bShowFiles = FALSE;
|
||||||
|
|
||||||
|
/* if this flag is true, ASCII characters will be used instead of UNICODE ones */
|
||||||
|
BOOL bUseAscii = FALSE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This takes strings from a resource string table
|
* This takes strings from a resource string table
|
||||||
|
@ -50,28 +54,28 @@ static BOOL HasSubFolder(const wchar_t *strPath1)
|
||||||
BOOL ret = FALSE;
|
BOOL ret = FALSE;
|
||||||
WIN32_FIND_DATA FindFileData;
|
WIN32_FIND_DATA FindFileData;
|
||||||
HANDLE hFind = NULL;
|
HANDLE hFind = NULL;
|
||||||
static wchar_t strPath[STR_MAX]= L"";
|
static wchar_t strPath[STR_MAX] = L"";
|
||||||
ZeroMemory(strPath, sizeof(strPath));
|
ZeroMemory(strPath, sizeof(strPath));
|
||||||
|
|
||||||
wcscat(strPath,strPath1);
|
wcscat(strPath, strPath1);
|
||||||
wcscat(strPath,L"\\*.");
|
wcscat(strPath, L"\\*.");
|
||||||
|
|
||||||
hFind=FindFirstFile(strPath, &FindFileData);
|
hFind = FindFirstFile(strPath, &FindFileData);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||||
{
|
{
|
||||||
if(wcscmp(FindFileData.cFileName, L".")==0 ||
|
if (wcscmp(FindFileData.cFileName, L".") == 0 ||
|
||||||
wcscmp(FindFileData.cFileName, L"..")==0 )
|
wcscmp(FindFileData.cFileName, L"..") == 0 )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret=TRUE; //found subfolder
|
ret = TRUE; //found subfolder
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while(FindNextFile(hFind, &FindFileData));
|
while (FindNextFile(hFind, &FindFileData));
|
||||||
|
|
||||||
FindClose(hFind);
|
FindClose(hFind);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -96,50 +100,57 @@ static BOOL HasSubFolder(const wchar_t *strPath1)
|
||||||
* @return
|
* @return
|
||||||
* void
|
* void
|
||||||
*/
|
*/
|
||||||
static void DrawTree(const wchar_t* strPath, const WIN32_FIND_DATA *arrFolder, const size_t szArr, UINT width, const wchar_t *prevLine, BOOL drawfolder)
|
static void DrawTree(const wchar_t* strPath,
|
||||||
|
const WIN32_FIND_DATA *arrFolder,
|
||||||
|
const size_t szArr,
|
||||||
|
UINT width,
|
||||||
|
const wchar_t *prevLine,
|
||||||
|
BOOL drawfolder)
|
||||||
{
|
{
|
||||||
BOOL bHasSubFolder = HasSubFolder(strPath);
|
BOOL bHasSubFolder = HasSubFolder(strPath);
|
||||||
UINT i = 0;
|
UINT i = 0;
|
||||||
|
|
||||||
//this will format the spaces required for correct formatting
|
/* this will format the spaces required for correct formatting */
|
||||||
for(i = 0; i < szArr; ++i)
|
for (i = 0; i < szArr; ++i)
|
||||||
{
|
{
|
||||||
wchar_t *consoleOut = (wchar_t*)malloc(sizeof(wchar_t) * STR_MAX);
|
wchar_t *consoleOut = (wchar_t*)malloc(sizeof(wchar_t) * STR_MAX);
|
||||||
UINT j=0;
|
UINT j = 0;
|
||||||
static wchar_t str[STR_MAX];
|
static wchar_t str[STR_MAX];
|
||||||
|
|
||||||
// As we do not seem to have the _s functions properly set up, use the non-secure version for now
|
/* As we do not seem to have the _s functions properly set up, use the non-secure version for now */
|
||||||
//wcscpy_s(consoleOut, STR_MAX, L"");
|
//wcscpy_s(consoleOut, STR_MAX, L"");
|
||||||
//wcscpy_s(str, STR_MAX, L"");
|
//wcscpy_s(str, STR_MAX, L"");
|
||||||
wcscpy(consoleOut, L"");
|
wcscpy(consoleOut, L"");
|
||||||
wcscpy(str, L"");
|
wcscpy(str, L"");
|
||||||
|
|
||||||
for(j=0;j<width-1;++j)
|
for (j = 0; j < width - 1; ++j)
|
||||||
{
|
{
|
||||||
//if the previous line has '├' or '│' then the current line will add '│' to continue the connecting line
|
/* if the previous line has '├' or '│' then the current line will
|
||||||
if((BYTE)prevLine[j] == 195 || (BYTE)prevLine[j] == 179 || (BYTE)prevLine[j] == L'+' || (BYTE)prevLine[j] == L'|')
|
add '│' to continue the connecting line */
|
||||||
|
if ((BYTE)prevLine[j] == 195 || (BYTE)prevLine[j] == 179 ||
|
||||||
|
(BYTE)prevLine[j] == L'+' || (BYTE)prevLine[j] == L'|')
|
||||||
{
|
{
|
||||||
if (bUseAscii)
|
if (bUseAscii)
|
||||||
{
|
{
|
||||||
wchar_t a[]={179,0};
|
wchar_t a[] = {179, 0};
|
||||||
wcscat(consoleOut,a);
|
wcscat(consoleOut, a);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
wcscat(consoleOut,L"|");
|
wcscat(consoleOut, L"|");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
wcscat(consoleOut,L" ");
|
wcscat(consoleOut, L" ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(szArr - 1 != i)
|
if (szArr - 1 != i)
|
||||||
{
|
{
|
||||||
if(drawfolder)
|
if (drawfolder)
|
||||||
{
|
{
|
||||||
// will add '├───Folder name
|
/* will add '├───Folder name */
|
||||||
if (bUseAscii)
|
if (bUseAscii)
|
||||||
wsprintf(str, L"+---%s", (wchar_t*)arrFolder[i].cFileName);
|
wsprintf(str, L"+---%s", (wchar_t*)arrFolder[i].cFileName);
|
||||||
else
|
else
|
||||||
|
@ -147,9 +158,10 @@ static void DrawTree(const wchar_t* strPath, const WIN32_FIND_DATA *arrFolder, c
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(bHasSubFolder)
|
if (bHasSubFolder)
|
||||||
{
|
{
|
||||||
// will add '│ FileNamw' //thie line is added to connect the belowfolder sub structure
|
/* will add '│ FileNamw' //thie line is added to connect
|
||||||
|
the belowfolder sub structure */
|
||||||
if (bUseAscii)
|
if (bUseAscii)
|
||||||
wsprintf(str,L"| %s", (wchar_t*)arrFolder[i].cFileName);
|
wsprintf(str,L"| %s", (wchar_t*)arrFolder[i].cFileName);
|
||||||
else
|
else
|
||||||
|
@ -157,16 +169,16 @@ static void DrawTree(const wchar_t* strPath, const WIN32_FIND_DATA *arrFolder, c
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// will add ' FileNamw'
|
/* will add ' FileNamw' */
|
||||||
wsprintf(str,L" %s", (wchar_t*)arrFolder[i].cFileName);
|
wsprintf(str,L" %s", (wchar_t*)arrFolder[i].cFileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(drawfolder)
|
if (drawfolder)
|
||||||
{
|
{
|
||||||
// '└───Folder name'
|
/* '└───Folder name' */
|
||||||
if (bUseAscii)
|
if (bUseAscii)
|
||||||
wsprintf(str, L"\\---%s", (wchar_t*)arrFolder[i].cFileName);
|
wsprintf(str, L"\\---%s", (wchar_t*)arrFolder[i].cFileName);
|
||||||
else
|
else
|
||||||
|
@ -174,18 +186,18 @@ static void DrawTree(const wchar_t* strPath, const WIN32_FIND_DATA *arrFolder, c
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(bHasSubFolder)
|
if (bHasSubFolder)
|
||||||
{
|
{
|
||||||
// '│ FileName'
|
/* '│ FileName' */
|
||||||
if (bUseAscii)
|
if (bUseAscii)
|
||||||
wsprintf(str,L"| %s", (wchar_t*)arrFolder[i].cFileName);
|
wsprintf(str, L"| %s", (wchar_t*)arrFolder[i].cFileName);
|
||||||
else
|
else
|
||||||
wsprintf(str,L"%c %s", 179, (wchar_t*)arrFolder[i].cFileName);
|
wsprintf(str, L"%c %s", 179, (wchar_t*)arrFolder[i].cFileName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// ' FileName'
|
/* ' FileName' */
|
||||||
wsprintf(str,L" %s", (wchar_t*)arrFolder[i].cFileName);
|
wsprintf(str, L" %s", (wchar_t*)arrFolder[i].cFileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -193,15 +205,15 @@ static void DrawTree(const wchar_t* strPath, const WIN32_FIND_DATA *arrFolder, c
|
||||||
wcscat(consoleOut, str);
|
wcscat(consoleOut, str);
|
||||||
wprintf(L"%s\n", consoleOut);
|
wprintf(L"%s\n", consoleOut);
|
||||||
|
|
||||||
if(drawfolder)
|
if (drawfolder)
|
||||||
{
|
{
|
||||||
wchar_t *str = (wchar_t*)malloc(STR_MAX * sizeof(wchar_t));
|
wchar_t *str = (wchar_t*)malloc(STR_MAX * sizeof(wchar_t));
|
||||||
ZeroMemory(str, STR_MAX*sizeof(wchar_t));
|
ZeroMemory(str, STR_MAX * sizeof(wchar_t));
|
||||||
|
|
||||||
wcscat(str, strPath);
|
wcscat(str, strPath);
|
||||||
wcscat(str, L"\\");
|
wcscat(str, L"\\");
|
||||||
wcscat(str, arrFolder[i].cFileName);
|
wcscat(str, arrFolder[i].cFileName);
|
||||||
GetDirectoryStructure(str, width+4, consoleOut);
|
GetDirectoryStructure(str, width + 4, consoleOut);
|
||||||
|
|
||||||
free(str);
|
free(str);
|
||||||
}
|
}
|
||||||
|
@ -223,46 +235,45 @@ static void DrawTree(const wchar_t* strPath, const WIN32_FIND_DATA *arrFolder, c
|
||||||
* @return
|
* @return
|
||||||
* void
|
* void
|
||||||
*/
|
*/
|
||||||
static void GetDirectoryStructure(wchar_t* strPath, UINT width, const wchar_t* prevLine)
|
static void
|
||||||
|
GetDirectoryStructure(wchar_t* strPath, UINT width, const wchar_t* prevLine)
|
||||||
{
|
{
|
||||||
WIN32_FIND_DATA FindFileData;
|
WIN32_FIND_DATA FindFileData;
|
||||||
HANDLE hFind = NULL;
|
HANDLE hFind = NULL;
|
||||||
//DWORD err = 0;
|
//DWORD err = 0;
|
||||||
//will fill up with names of all sub folders
|
/* will fill up with names of all sub folders */
|
||||||
WIN32_FIND_DATA *arrFolder = NULL;
|
WIN32_FIND_DATA *arrFolder = NULL;
|
||||||
UINT arrFoldersz = 0;
|
UINT arrFoldersz = 0;
|
||||||
//will fill up with names of all sub folders
|
/* will fill up with names of all sub folders */
|
||||||
WIN32_FIND_DATA *arrFile = NULL;
|
WIN32_FIND_DATA *arrFile = NULL;
|
||||||
UINT arrFilesz = 0;
|
UINT arrFilesz = 0;
|
||||||
|
|
||||||
ZeroMemory(&FindFileData,sizeof(FindFileData));
|
ZeroMemory(&FindFileData, sizeof(FindFileData));
|
||||||
|
|
||||||
{
|
{
|
||||||
static wchar_t tmp[STR_MAX]=L"";
|
static wchar_t tmp[STR_MAX] = L"";
|
||||||
ZeroMemory(tmp,sizeof(tmp));
|
ZeroMemory(tmp, sizeof(tmp));
|
||||||
wcscat(tmp,strPath);
|
wcscat(tmp, strPath);
|
||||||
wcscat(tmp,L"\\*.*");
|
wcscat(tmp, L"\\*.*");
|
||||||
|
hFind = FindFirstFile(tmp, &FindFileData);
|
||||||
hFind=FindFirstFile(tmp, &FindFileData);
|
|
||||||
|
|
||||||
//err = GetLastError();
|
//err = GetLastError();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(hFind == INVALID_HANDLE_VALUE)
|
if (hFind == INVALID_HANDLE_VALUE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||||
{
|
{
|
||||||
if(wcscmp(FindFileData.cFileName, L".")==0 ||
|
if (wcscmp(FindFileData.cFileName, L".") == 0 ||
|
||||||
wcscmp(FindFileData.cFileName, L"..")==0 )
|
wcscmp(FindFileData.cFileName, L"..") == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
++arrFoldersz;
|
++arrFoldersz;
|
||||||
arrFolder=(WIN32_FIND_DATA*)realloc(arrFolder, arrFoldersz * sizeof(FindFileData));
|
arrFolder = (WIN32_FIND_DATA*)realloc(arrFolder, arrFoldersz * sizeof(FindFileData));
|
||||||
|
|
||||||
if(arrFolder == NULL)
|
if (arrFolder == NULL)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
|
||||||
arrFolder[arrFoldersz - 1] = FindFileData;
|
arrFolder[arrFoldersz - 1] = FindFileData;
|
||||||
|
@ -271,7 +282,7 @@ static void GetDirectoryStructure(wchar_t* strPath, UINT width, const wchar_t* p
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
++arrFilesz;
|
++arrFilesz;
|
||||||
arrFile=(WIN32_FIND_DATA*)realloc(arrFile, arrFilesz * sizeof(FindFileData));
|
arrFile = (WIN32_FIND_DATA*)realloc(arrFile, arrFilesz * sizeof(FindFileData));
|
||||||
|
|
||||||
if(arrFile == NULL)
|
if(arrFile == NULL)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
@ -279,16 +290,18 @@ static void GetDirectoryStructure(wchar_t* strPath, UINT width, const wchar_t* p
|
||||||
arrFile[arrFilesz - 1] = FindFileData;
|
arrFile[arrFilesz - 1] = FindFileData;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while(FindNextFile(hFind, &FindFileData));
|
while (FindNextFile(hFind, &FindFileData));
|
||||||
|
|
||||||
FindClose(hFind);
|
FindClose(hFind);
|
||||||
|
|
||||||
if(bShowFiles)
|
if (bShowFiles)
|
||||||
{
|
{
|
||||||
DrawTree(strPath, arrFile, arrFilesz, width, prevLine, FALSE); //will free(arrFile)
|
/* will free(arrFile) */
|
||||||
|
DrawTree(strPath, arrFile, arrFilesz, width, prevLine, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawTree(strPath, arrFolder, arrFoldersz, width, prevLine, TRUE); //will free(arrFile)
|
/* will free(arrFile) */
|
||||||
|
DrawTree(strPath, arrFolder, arrFoldersz, width, prevLine, TRUE);
|
||||||
|
|
||||||
free(arrFolder);
|
free(arrFolder);
|
||||||
free(arrFile);
|
free(arrFile);
|
||||||
|
@ -304,37 +317,43 @@ static void GetDirectoryStructure(wchar_t* strPath, UINT width, const wchar_t* p
|
||||||
int wmain( int argc, wchar_t *argv[])
|
int wmain( int argc, wchar_t *argv[])
|
||||||
{
|
{
|
||||||
DWORD dwSerial = 0;
|
DWORD dwSerial = 0;
|
||||||
wchar_t t=0;
|
wchar_t t = 0;
|
||||||
wchar_t *strPath = NULL;
|
wchar_t *strPath = NULL;
|
||||||
DWORD sz = 0;
|
DWORD sz = 0;
|
||||||
//wchar_t *context = NULL ;
|
//wchar_t *context = NULL;
|
||||||
wchar_t *driveLetter = NULL;
|
wchar_t *driveLetter = NULL;
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for(i = 1; i < argc; ++i) //parse the command line
|
/* parse the command line */
|
||||||
|
for (i = 1; i < argc; ++i)
|
||||||
{
|
{
|
||||||
if (argv[i][0] == L'-' || argv[i][0] == L'/')
|
if (argv[i][0] == L'-' || argv[i][0] == L'/')
|
||||||
{
|
{
|
||||||
switch (towlower(argv[i][1]))
|
switch (towlower(argv[i][1]))
|
||||||
{
|
{
|
||||||
case L'?':
|
case L'?':
|
||||||
PrintResourceString(IDS_USAGE); //will print help and exit after
|
/* will print help and exit after */
|
||||||
|
PrintResourceString(IDS_USAGE);
|
||||||
return 0;
|
return 0;
|
||||||
case L'f':
|
case L'f':
|
||||||
bShowFiles=TRUE; //if set to true, will populate all the files within the folder structure
|
/* if set to true, will populate all the files within the folder structure */
|
||||||
|
bShowFiles = TRUE;
|
||||||
break;
|
break;
|
||||||
case L'a':
|
case L'a':
|
||||||
bUseAscii=TRUE;
|
bUseAscii = TRUE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
break;
|
break;
|
||||||
default:break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//this must be path to some folder
|
/* this must be path to some folder */
|
||||||
BOOL b=SetCurrentDirectoryW(argv[i]); //will set the current directory for this executable
|
|
||||||
if(b==FALSE)
|
/* will set the current directory for this executable */
|
||||||
|
BOOL b = SetCurrentDirectoryW(argv[i]);
|
||||||
|
if (b == FALSE)
|
||||||
{
|
{
|
||||||
PrintResourceString(IDS_NO_SUBDIRECTORIES);
|
PrintResourceString(IDS_NO_SUBDIRECTORIES);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -347,25 +366,29 @@ int wmain( int argc, wchar_t *argv[])
|
||||||
GetVolumeInformation(NULL, NULL, 0, &dwSerial, NULL, NULL, NULL, 0);
|
GetVolumeInformation(NULL, NULL, 0, &dwSerial, NULL, NULL, NULL, 0);
|
||||||
PrintResourceString(IDS_VOL_SERIAL, dwSerial >> 16, dwSerial & 0xffff);
|
PrintResourceString(IDS_VOL_SERIAL, dwSerial >> 16, dwSerial & 0xffff);
|
||||||
|
|
||||||
sz = GetCurrentDirectory(1, &t); //get the buffer size
|
/* get the buffer size */
|
||||||
strPath = (wchar_t*)malloc(sizeof(wchar_t) * sz); //must not return before calling delete[]
|
sz = GetCurrentDirectory(1, &t);
|
||||||
|
/* must not return before calling delete[] */
|
||||||
|
strPath = (wchar_t*)malloc(sizeof(wchar_t) * sz);
|
||||||
|
|
||||||
GetCurrentDirectory(sz, strPath); //get the current directory
|
/* get the current directory */
|
||||||
|
GetCurrentDirectory(sz, strPath);
|
||||||
|
|
||||||
|
/* get the drive letter , must not return before calling delete[] */
|
||||||
|
driveLetter = (wchar_t*)malloc(sizeof(wchar_t) * sz);
|
||||||
|
|
||||||
driveLetter = (wchar_t*)malloc(sizeof(wchar_t) * sz); //get the drive letter , must not return before calling delete[]
|
/* As we do not seem to have the _s functions properly set up, use the non-secure version for now */
|
||||||
|
|
||||||
// As we do not seem to have the _s functions properly set up, use the non-secure version for now
|
|
||||||
//wcscpy_s(driveLetter,sz,strPath);
|
//wcscpy_s(driveLetter,sz,strPath);
|
||||||
//wcstok_s(driveLetter,L":", &context); //parse for the drive letter
|
//wcstok_s(driveLetter,L":", &context); //parse for the drive letter
|
||||||
wcscpy(driveLetter,strPath);
|
wcscpy(driveLetter, strPath);
|
||||||
wcstok(driveLetter, L":");
|
wcstok(driveLetter, L":");
|
||||||
|
|
||||||
wprintf(L"%s:.\n",driveLetter);
|
wprintf(L"%s:.\n", driveLetter);
|
||||||
|
|
||||||
free(driveLetter);
|
free(driveLetter);
|
||||||
|
|
||||||
GetDirectoryStructure(strPath, 1, L" "); //get the sub directories within this current folder
|
/* get the sub directories within this current folder */
|
||||||
|
GetDirectoryStructure(strPath, 1, L" ");
|
||||||
|
|
||||||
free(strPath);
|
free(strPath);
|
||||||
wprintf(L"\n");
|
wprintf(L"\n");
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#include <windef.h>
|
#include <windef.h>
|
||||||
#include <winuser.h>
|
|
||||||
|
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue