#include <stdio.h>
char a[256],f1[256],dir[256],c;
FILE *fp,*fp1;
int i,j,k,p=0,pp=0;
main()
{
  printf("\n\t *** check VIRUS files in unix *** jiang 60309\n");
  printf("\n\t checkvir length is 8462 bytes\n");
  printf("\n\t run in your disk_home directory\n\n");
  system("ls -lRa >1.vir");
  fp=fopen("1.vir","r");
l10:
  fgets(a,256,fp); if(feof(fp)!=0){
    system("rm 1.vir");
    if(p==0)printf("\nOK !!!\n"); else printf("\n VIRUS files %d\n",p);
    exit(0);
  }
//  printf("%s",a);
  c=a[0];
  if(c<=32 || c=='t' || c=='d' )goto l10;
  if(c=='.'){
    i=strlen(a)-1;
    a[i-1]='/'; a[i]=0;
    strcpy(dir,a);
//    printf("%s\n",dir);
    goto l10;
  }
  pp++;  if(pp%100==0){ printf("%d\015",pp); fflush(stdout); }
  i=find32(a,3); sscanf(&a[i],"%d",&k);
  if(k<=4096 || k>30000000)goto l10;
  i=find32(a,7);
  strcpy(f1,dir); strcat(f1,&a[i+1]);
  i=strlen(f1); f1[i-1]=0;
//  printf("%s\n",f1);
  
  fp1=fopen(f1,"rb");
  if(fp1==0){ printf("*** can't open %s\n",f1); goto l10; }
  fseek(fp1,0,2); fseek(fp1,ftell(fp1)-4,0);
  j=0;
  fread(&j,1,4,fp1);
  fclose(fp1);
  if(j==0xc3c9ffff){
    printf("virus: %s\n",f1);
//    strcpy(a,"rm "); strcat(a,f1);
//    system(a);
    p++;
  }
  goto l10;
}  
	
find32(a,k)
char *a; int k;
{
  int i,j;
  char c;
  c=a[0]; j=0;
  for(i=1;i<strlen(a);i++){ 
    if(a[i]==32 && c!=32)j++;
    c=a[i];
    if(j>k)break;
  }
  return(i);
}

