|
|
1.1 ! root 1: # include "stdio.h" ! 2: # include "ctype.h" ! 3: # include "assert.h" ! 4: # include "sys/types.h" ! 5: # include "sys/stat.h" ! 6: /* ! 7: * given a list of names on the standard input, ! 8: * compare the dates of those files with those of ! 9: * a standard file and print the ones which pass ! 10: * also reject inodes if previously seen ! 11: */ ! 12: main(argc,argv) ! 13: char *argv[]; ! 14: { ! 15: char *refname, *upname; ! 16: long reftime, lseek(); ! 17: char fname[50]; ! 18: struct stat stbuff; ! 19: # define NI 500 ! 20: int ilist[NI], nj=0; ! 21: refname = argc>1 ? argv[1] : ""; ! 22: upname = argc>2 ? argv[2] : ""; ! 23: if (stat(refname, &stbuff) < 0) ! 24: reftime=0; ! 25: else ! 26: reftime = stbuff.st_mtime; ! 27: /* update file */ ! 28: if (stat(upname, &stbuff) < 0 || stbuff.st_size==0) ! 29: { ! 30: if (creat (upname, 0666)== -1) ! 31: fprintf(stderr, "Can not creat file %s\n",upname); ! 32: } ! 33: else ! 34: { ! 35: int fd; char x[2]; ! 36: fd = open(upname, 2); ! 37: assert(fd>0); ! 38: assert(read(fd, x, 1)==1); ! 39: assert(lseek(fd, 0L, 0)!= -1); ! 40: assert(write(fd, x, 1)==1); ! 41: assert(close(fd)==0); ! 42: } ! 43: while (gets(fname)) ! 44: { ! 45: int k; ! 46: k = stat (fname, &stbuff); ! 47: if (k<0) continue; ! 48: if (stbuff.st_mtime >reftime) ! 49: { ! 50: int i, ino, found=0; ! 51: ino = stbuff.st_ino; ! 52: for(i=0; i<nj; i++) ! 53: if (ilist[i]==ino) ! 54: found=1; ! 55: if (found) continue; ! 56: ilist[nj++]=ino; ! 57: if (nj>=NI) nj = NI/2; ! 58: puts(fname); ! 59: } ! 60: } ! 61: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.