|
|
1.1 ! root 1: /* /sccs/src/cmd/uucp/s.gnamef.c ! 2: gnamef.c 1.1 8/30/84 17:37:25 ! 3: */ ! 4: #include "uucp.h" ! 5: VERSION(@(#)gnamef.c 1.1); ! 6: ! 7: /* ! 8: * get next file name from directory ! 9: * p -> file description of directory file to read ! 10: * filename -> address of buffer to return filename in ! 11: * must be of size DIRSIZ+1 ! 12: * returns: ! 13: * FALSE -> end of directory read ! 14: * TRUE -> returned name ! 15: */ ! 16: gnamef(p, filename) ! 17: register char *filename; ! 18: DIR *p; ! 19: { ! 20: struct direct dentry; ! 21: register struct direct *dp = &dentry; ! 22: ! 23: while (1) { ! 24: #ifdef BSD4_2 ! 25: if ((dp = readdir(p)) == NULL) ! 26: #else !BSD4_2 ! 27: if (fread((char *)dp, sizeof(dentry), 1, p) != 1) ! 28: #endif BSD4_2 ! 29: return(FALSE); ! 30: if (dp->d_ino != 0 && dp->d_name[0] != '.') ! 31: break; ! 32: } ! 33: ! 34: (void) strncpy(filename, dp->d_name, MAXBASENAME); ! 35: filename[MAXBASENAME] = '\0'; ! 36: return(TRUE); ! 37: } ! 38: ! 39: /* ! 40: * get next directory name from directory ! 41: * p -> file description of directory file to read ! 42: * filename -> address of buffer to return filename in ! 43: * must be of size DIRSIZ+1 ! 44: * returns: ! 45: * FALSE -> end of directory read ! 46: * TRUE -> returned dir ! 47: */ ! 48: gdirf(p, filename, dir) ! 49: register char *filename; ! 50: DIR *p; ! 51: char *dir; ! 52: { ! 53: char statname[MAXNAMESIZE]; ! 54: ! 55: while (1) { ! 56: if(gnamef(p, filename) == FALSE) ! 57: return(FALSE); ! 58: (void) sprintf(statname, "%s/%s", dir, filename); ! 59: DEBUG(4, "stat %s\n", statname); ! 60: if (DIRECTORY(statname)) ! 61: break; ! 62: } ! 63: ! 64: return(TRUE); ! 65: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.