#include #include #include #include #include struct stat xstat; struct proc mproc[NPROC]; struct nlist nl[] { { "_proc"}, { ""}, }; int err; main(argc,argv) char **argv; { int i,j; if(argc<=1) exit(0); for(i=1;i0) if(isapid(j)) { fprintf(stderr,"recovery: %s in use\n",argv[i]); err=1; } else unlink(argv[i]); else fprintf(stderr,"reocvery: %s not a lock\n",argv[i]); } exit(err); } isalock(s) char *s; { int pid,fd; if(stat(s,&xstat)<0) return(0); if(xstat.st_size!=2) return(0); fd=open(s,0); if(fd<0) return(-1); read(fd,&pid,2); close(fd); return(pid); } int gotpids,pids[NPROC]; isapid(n) { int i; if(gotpids==0) getpids(); for(i=0;i