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