#include "include/myhdr.h"
int printdir (char *, int);
int
main (int argc, char **argv)
{
if (argc != 2)
{
printf ("Usage:listdir2 <pathname>\n");
exit (2);
}
//printf ("%s\n", argv[1]);
printdir (argv[1], 0);
exit (0);
}
int
printdir (char *dirpath, int depth)
{
struct dirent *mydirent;
DIR *mydir;
struct stat *mystat;
char pathbuf[35];
if ((mydir = opendir (dirpath)) == NULL)
{
perror ("Open dir error:");
exit (1);
}
//chdir (dirpath);
while ((mydirent = readdir (mydir)) != NULL)
{
if (strcmp (mydirent->d_name, "..") == 0
|| strcmp (mydirent->d_name, ".") == 0)
{
continue;
}
pathbuf[0] = '';
strcat (pathbuf, dirpath);
strcat (pathbuf, mydirent->d_name);
//printf ("pathbuf:%s\n", pathbuf);
//if (lstat (mydirent->d_name, mystat) == -1)
if (lstat (pathbuf, mystat) == -1)
{
perror ("stat file error:");
exit (2);
}
if (S_ISDIR (mystat->st_mode))
{
printdir (pathbuf, depth + 4);
}
else
{
printf ("filename:%s,inode:%ld %d\n", mydirent->d_name,
mydirent->d_ino, mystat->st_blksize);
} //if S_ISDIR end
} //while end
closedir (mydir);
//chdir ("..");
return 0;
}