116d98842Seric # include	"../hdr/defines.h"
2*be2f175aSsam # include	<sys/dir.h>
316d98842Seric 
4*be2f175aSsam SCCSID(@(#)dofile.c	1.5);
516d98842Seric 
616d98842Seric int	nfiles;
716d98842Seric char	had_dir;
816d98842Seric char	had_standinp;
916d98842Seric 
1016d98842Seric 
do_file(p,func)1116d98842Seric do_file(p,func)
1216d98842Seric register char *p;
1316d98842Seric int (*func)();
1416d98842Seric {
1516d98842Seric 	extern char *Ffile;
1616d98842Seric 	char str[FILESIZE];
1716d98842Seric 	char ibuf[FILESIZE];
18ed049f73Ssam 	DIR *dir;
19ed049f73Ssam 	struct direct *dp;
2016d98842Seric 	register char *s;
2116d98842Seric 	int fd;
2216d98842Seric 
2316d98842Seric 	if (p[0] == '-') {
2416d98842Seric 		had_standinp = 1;
2516d98842Seric 		while (gets(ibuf) != NULL) {
2616d98842Seric 			if (sccsfile(ibuf)) {
2716d98842Seric 				Ffile = ibuf;
2816d98842Seric 				(*func)(ibuf);
2916d98842Seric 				nfiles++;
3016d98842Seric 			}
3116d98842Seric 		}
3216d98842Seric 	}
3316d98842Seric 	else if (exists(p) && (Statbuf.st_mode & S_IFMT) == S_IFDIR) {
3416d98842Seric 		had_dir = 1;
3516d98842Seric 		Ffile = p;
36ed049f73Ssam 		if((dir = opendir(p)) == 0)
3716d98842Seric 			return;
38ed049f73Ssam 		(void) readdir(dir);	/* skip . */
39ed049f73Ssam 		(void) readdir(dir);	/* and .. */
40b3efec96Ssam 		while (dp = readdir(dir)) {
41ed049f73Ssam 			sprintf(str,"%s/%s", p, dp->d_name);
4216d98842Seric 			if(sccsfile(str)) {
4316d98842Seric 				Ffile = str;
4416d98842Seric 				(*func)(str);
4516d98842Seric 				nfiles++;
4616d98842Seric 			}
4716d98842Seric 		}
48ed049f73Ssam 		closedir(dir);
4916d98842Seric 	}
5016d98842Seric 	else {
5116d98842Seric 		Ffile = p;
5216d98842Seric 		(*func)(p);
5316d98842Seric 		nfiles++;
5416d98842Seric 	}
5516d98842Seric }
56