V10/cmd/backup.old/fcheck.c
#include <ftw.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <libc.h>
off_t maxsize;
time_t mintime;
main(argc, argv)
char **argv;
{
long n;
extern fn();
if(argc < 4){
usage:
fprint(2, "Usage: fcheck maxsize minctime files\n");
exit(1);
}
maxsize = atol(*++argv)*1024;
time(&mintime);
mintime -= 24*3600L*(n = atol(*++argv));
if((maxsize == 0) || (n == 0))
goto usage;
while(*++argv)
if(ftw(*argv, fn, NOFILE-5))
exit(1);
exit(0);
}
fn(name, statb, code, s)
char *name;
struct stat *statb;
struct FTW *s;
{
char *prefix = "";
if(strchr(name, '\n'))
return(0);
switch(code)
{
case FTW_SL:
if(s->level == 0){
s->quit = FTW_FOLLOW;
prefix = "/";
if(stat(name, statb) < 0)
break;
}
case FTW_F:
case FTW_D:
if(statb->st_nlink && (statb->st_size < maxsize) &&
(statb->st_ctime >= mintime))
Fprint(1, "%s%s\n", prefix, name);
break;
case FTW_NS:
perror(name);
return(0);
case FTW_DNR:
fprint(2, "cannot read %s\n", name);
return(0);
case FTW_DP:
break;
case FTW_NSL:
fprint(2, "cannot follow symbolic link %s\n", name);
return(0);
}
return(0);
}