|
Heba,
You can do recursive calls in C and C++.
Here is a C program I posted a few weeks ago for listing files in IFS. It
uses recursion to go through the directory tree. When the listdir function
encounters a subdirectory entry it calls itself. Beware, this pgm was just
slapped together and may not be "ready for prime time".
-Marty
/*********************************************************************/
/* */
/*********************************************************************/
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <errno.h>
#include <stdio.h>
void listdir(char *dirparm);
int main(int argc, char *argv[]) {
char inparm[201];
if (argc < 2) {
fprintf(stderr,"PARM ERROR - NO PATH SPECIFIED");
return 1;
}
sscanf(argv[1], "%s ", inparm); /* make copy w/ null term */
listdir(inparm);
return 0;
}
void listdir(char *dirparm) {
char inparm[1025];
struct stat info;
DIR *dir;
struct dirent *entry;
char path[1025];
sscanf(dirparm, "%s ", inparm); /* make copy w/ null term */
if ((dir = opendir(inparm)) == NULL)
perror("opendir() error");
else {
/* printf("contents of dir %s:\n", inparm); */
while ((entry = readdir(dir)) != NULL) {
sprintf(path, "%s/%s", inparm, entry->d_name);
if (stat(path, &info) != 0) {
fprintf(stderr, "stat() error on %s: %s\n", path,
strerror(errno));
}
/* print name only if it is a regular file (no dirs, etc) */
if (S_ISREG(info.st_mode))
/* printf("%s/%s\n", inparm, entry->d_name); */
printf("%s\n", path);
/* recurse for dirs, but not . and .. */
if ((S_ISDIR(info.st_mode)) && (entry->d_name[0] != '.'))
/* printf("DIR>%s\n", path); */
listdir(path);
}
closedir(dir);
}
return;
}
+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.