× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



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 thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 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.