#include #include #include #include #include #define MAXDIRPATH 8192 void recdir(int); main(int argc,char *argv[]) { int level=0; int i; /* char buff[256]; printf("Enter directory name "); gets(buff); */ if (argc != 2) { fprintf(stderr,"Usage: %s directory-name \n",argv[0]); exit(1); } chdir(argv[1]); recdir(level); } void myprintf(char *s, int level, char *ss) { int i; for(i=0;id_name,&dstat)== -1) { perror("stat:"); continue; } if (strcmp(dptr->d_name,".")== 0) { myprintf("%2d: CDIR: %s\n",level,dptr->d_name); continue; } if (strcmp(dptr->d_name,"..")== 0) { myprintf("%2d: PDIR: %s\n",level,dptr->d_name); continue; } if (S_ISDIR(dstat.st_mode) != 0) { if ( -1 == chdir(dptr->d_name)) { perror("recdir:chdir: Cannot chdir"); continue; }; myprintf("%2d: DIR : %s\n",level,dptr->d_name); recdir(level); if (-1 == chdir("..") ){ perror("recdir: can't cd .. "); exit(1); } } if (S_ISREG(dstat.st_mode) != 0) { myprintf("%2d: FILE: %s\n",level,dptr->d_name); } } closedir(dirp); }