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)1116d98842Sericdo_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