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