82 lines
1.7 KiB
C
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);
|
|
}
|