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