* * $Id: fafldr.F,v 1.1.1.1 1996/03/07 15:18:24 mclareni Exp $ * * $Log: fafldr.F,v $ * Revision 1.1.1.1 1996/03/07 15:18:24 mclareni * Fatmen * * #include "fatmen/pilot.h" /* ++++++++++++++++++++++++++FAFLDR .type: module .language: C .ident: next file in direcetory .version: 1.0 - 90-05-19 .envir: UNIX .uses: , directory procedures .author: J. Shiers, Defert Ph., .keywords: Directory list. .descript: Gives the next entry of a directory. ---------------------------------------------------------------- */ /* External declarations */ #include #include #include "fafldr.h" /* Body */ int fafldr(dirnam, filnam, icont) char *dirnam; char *filnam; int icont; /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .input: dirnam: string -> the directory name icont: int -> continuation flag .output: filnam: string -> the name of the searched file. .returns: status of the call (FAFLDR_OK,FAFLDR_EOF,FAFLDR_FAILED,FAFLDR_INVA .type: function .description: the name of the file returned is - the next in the directory opened at the preceeding call to fafldr if icont == 1. Thus, "dirnam" is ignored. - the first in the directory "dirnam" if icont == 0 ------------------------------------------------------------------------------ */ { static DIR *dd = NULL; struct direct *entry; /* -- open directory dirnam if necessary i.e. icont == 0 */ filnam[0] = '\0'; if (icont == 0) { if (dd != NULL) { (void)closedir(dd); } errno = 0; dd = opendir(dirnam); if (dd == NULL) { return(FAFLDR_FAILED); } } /* -- read next entry in directory */ if (dd == NULL) { return(FAFLDR_INVARG); } errno = 0; entry = readdir(dd); if (entry == NULL) { if (errno == 0) { (void)closedir(dd); dd = NULL; return(FAFLDR_EOF); } else { (void)closedir(dd); dd = NULL; return(FAFLDR_FAILED); } } strcpy(filnam,entry->d_name); return(FAFLDR_OK); }