Ö 1.2 4/40/88 - INITS BY OPENING BUFFER */ #INCLUDE #DEFINE THEN #DEFINE FOREVER 1 STRUCT FS ÛCHAR FILETYPE; CHAR TRACK; CHAR SECTOR; CHAR FN[16]; CHAR X[7]; CHAR STRACK; CHAR SSECTOR; INT SIZ; INT XX;Ý; STRUCT DS ÛCHAR TRACK; CHAR SECTOR; STRUCT FS FILE[8];Ý; STRUCT DS DIR; INT N,LEN; LOOK (S1,S2) /* LOOK FOR S1 IN S2 */ CHAR S1[],S2[]; ÛINT I; FOR (I=0;(S2[I]!='\0')&&(S2[I]!=0XA0);I++) /* TEST $0A FOR FN PAD */ IF (S2[I]==S1[0]) IF (STRNCMP(&S1[1],&S2[I+1],LEN-1)==0) PRINTF("%S %4D\N",S2,DIR.FILE[N].SIZ); Ý MAIN (ARGC,ARGV) INT ARGC,DV; CHAR *ARGV[]; ÛIF (ARGC<2) ÛPUTS("\NÕSAGE: DIRP PATTERN [DEVICE]\N"); ABORT();Ý DV = 8; /* GET DEVICE */ IF (ARGC>2) ÛDV = ATOI(ARGV[2]); IF ((DV<8)(DV>11)) ÛPUTS("ÕSE DEVICE 8-11.\N"); ABORT();Ý Ý OPEN(5,DV,5,"#"); /* INIT DEVICE */ CLOSE(5); OPEN(5,DV,5,"$"); IF (FERROR()) ÛPUTS("ÃAN'T OPEN DIRECTORY.\N"); ABORT();Ý PRINTF("\NÓEARCHING FOR *%S* (Ö 1.2, 4/88)\N\N",ARGV[1]); LEN = STRLEN(ARGV[1]); FREAD(DIR.FILE,1,254,5); /* READ FIRST BLOCK */ WHILE(FEOF(5)==0) /* READ ENTRY BLOCKS */ ÛFREAD(DIR.FILE[0],1,254,5); FOR(N=0;N<8;N++) /* 8 FILES PER BLOCK */ ÛIF (DIR.FILE[N].FILETYPE>0X7F) /* ACTIVE FILES ONLY */ ÛDIR.FILE[N].X[0] = '\0'; /* TERMINATE FN STRING */ LOOK(ARGV[1],DIR.FILE[N].FN);Ý /* TEST */ Ý Ý /* GET NEXT BLOCK */ PUTCHAR('\N'); FCLOSE(5); Ý _B