V10/cmd/uucp/gnamef.c

Compare this file to the similar file:
Show the results in this format:

/*	/sccs/src/cmd/uucp/s.gnamef.c
	gnamef.c	1.1	8/30/84 17:37:25
*/
#include "uucp.h"
#ifndef READDIR
#include <sys/dir.h>
#endif
VERSION(@(#)gnamef.c	1.1);

/*
 * 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;
{
	struct direct dentry;
	register struct direct *dp = &dentry;

	while (1) {
#ifdef	READDIR
		if ((dp = readdir(p)) == NULL)
#else
		if (fread((char *)dp,  sizeof(dentry), 1, p) != 1)
#endif
			return(FALSE);
		if (dp->d_ino != 0 && dp->d_name[0] != '.')
			break;
	}

	(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];

	while (1) {
		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);
}