1
0
Files
irix-657m-src/eoe/cmd/uucp/gnamef.c
2022-09-29 17:59:04 +03:00

82 lines
1.7 KiB
C

/* Copyright (c) 1984 AT&T */
/* All Rights Reserved */
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */
/* The copyright notice above does not evidence any */
/* actual or intended publication of such source code. */
#ident "$Revision: 1.5 $"
#include "uucp.h"
/*
* get next file name from directory
* p -> file description of directory file to read
* filename -> address of buffer to return filename in
* must be of size DIRSIZ+1
* returns:
* FALSE -> end of directory read
* TRUE -> returned name
*/
gnamef(p, filename)
register char *filename;
DIR *p;
{
#ifdef sgi
register struct dirent *dp;
for (;;) {
if ((dp = readdir(p)) == NULL)
return(FALSE);
if (dp->d_ino != 0 && dp->d_name[0] != '.')
break;
}
#else /* sgi */
struct direct dentry;
register struct direct *dp = &dentry;
while (1) {
#ifdef BSD4_2
if ((dp = readdir(p)) == NULL)
#else /* !BSD4_2 */
if (fread((char *)dp, sizeof(dentry), 1, p) != 1)
#endif /* BSD4_2 */
return(FALSE);
if (dp->d_ino != 0 && dp->d_name[0] != '.')
break;
}
#endif /* sgi */
(void) strncpy(filename, dp->d_name, MAXBASENAME);
filename[MAXBASENAME] = '\0';
return(TRUE);
}
/*
* get next directory name from directory
* p -> file description of directory file to read
* filename -> address of buffer to return filename in
* must be of size DIRSIZ+1
* returns:
* FALSE -> end of directory read
* TRUE -> returned dir
*/
gdirf(p, filename, dir)
register char *filename;
DIR *p;
char *dir;
{
char statname[MAXNAMESIZE];
for (;;) {
if(gnamef(p, filename) == FALSE)
return(FALSE);
(void) sprintf(statname, "%s/%s", dir, filename);
DEBUG(4, "stat %s\n", statname);
if (DIRECTORY(statname))
break;
}
return(TRUE);
}