Code:
void dirBrowser(char *curDir, int tab, int nA, int nI, int nS, int nT)
{
DIR *dir;
FILE *pFile;
struct dirent *de;
struct stat st;
char *symPath, symBuf[1024];
ssize_t len;
int x=0, size=0;
chdir (curDir);
if (nT==1 && nI==0)
for (x=0; x<tab; x++)
printf("\t");
else if (nI==1)
for (x=0; x<nNopt; x++)
printf(" ");
dir = opendir(".");
while (de = readdir(dir))
{
stat(de->d_name, &st);
if ((len = readlink(de->d_name, symBuf, sizeof(symBuf)-1))!=-1)
{
chdir (symBuf);
}
size=0;
size += st.st_size;
size = size/1024; // Block Size
if (nA==1 && nS==0)
printf ("%d %s\n",size, de->d_name); // Print Everything
if (nS==1 && nA==0)
printf ("%d\n", size);
if ((S_ISDIR(st.st_mode) && nA == 0))
{
if ((strcmp(de->d_name, ".") != 0) && (strcmp(de->d_name, "..") != 0))
{
if (nS==1 && nA==0)
printf ("%d\n", size);
if ((S_ISDIR(st.st_mode) && nA == 0))
{
if ((strcmp(de->d_name, ".") != 0) && (strcmp(de->d_name, "..") != 0))
{
if (nS==0 && nA==0)
printf ("%d %s\n",size, de->d_name);// Print Directories only
dirBrowser(de->d_name, tab+1, nA, nI, nS, nT);
}
}
}
closedir(dir);
chdir("..");
}
Directory Content (du)
Code:
4 ./dir1/dir11/dir111/dir1111
8 ./dir1/dir11/dir111
12 ./dir1/dir11
24 ./dir1
4 ./dir2
4 ./dir3/dir31
4 ./dir3/dir32/dir321
8 ./dir3/dir32
4 ./dir3/dir33
20 ./dir3
4 ./dir4
4 ./dir22
104 .
Directory Content (my app)
Code:
4 dir1
4 dir11
4 dir111
4 dir1111
4 dir2
4 dir3
4 dir31
4 dir32
4 dir321
4 dir33
4 dir4
4 dir22
With Tree option
Code:
4 dir1
4 dir11
4 dir111
4 dir1111
4 dir2
4 dir3
4 dir31
4 dir32
4 dir321
4 dir33
4 dir4
4 dir22