void indirezione(int livello, int salto){ int tmp2[256],m=0,prev,i,j; unsigned char test[sb.s_log_block_size]; if(!livello){ for(i=0;i<15;i++) { if(i<12){ if(inode.i_block[i] != 0){ if(inode.i_block[i+1] != 0){ if(inode.i_block[i]+1!=inode.i_block[i+1]) discont++; } } else break; } else{ if(i==12) indirezione(1,inode.i_block[i]); else if(i==13) indirezione(2,inode.i_block[i]); else if(i==14) indirezione(3,inode.i_block[i]); } } } else if(livello==1){ lseek(fd,salto*sb.s_log_block_size,0); read(fd,&test,sizeof(test)); prev=test[0] + (test[1] << 8) + (test[2] << 16) + (test[3] <<24); m=4; for(j=1;j<256;j++){ tmp2[j]= test[m] + (test[m+1] << 8) + (test[m+2] << 16) + (test[m+3] <<24); if(tmp2[j]==0) break; else{ if(prev+1!=tmp2[j]){ discont++; } prev=tmp2[j]; m+=4; } } } else if(livello==2){ m=0; lseek(fd,salto*sb.s_log_block_size,0); read(fd,&test,sizeof(test)); for(j=0;j<256;j++){ tmp2[j]= test[m] + (test[m+1] << 8) + (test[m+2] << 16) + (test[m+3] <<24); if(tmp2[j]==0) break; indirezione(1,tmp2[j]); m+=4; } } else if(livello==3){ m=0; lseek(fd,salto*sb.s_log_block_size,0); read(fd,&test,sizeof(test)); for(j=0;j<256;j++){ tmp2[j]= test[m] + (test[m+1] << 8) + (test[m+2] << 16) + (test[m+3] <<24); if(tmp2[j]==0) break; indirezione(2,tmp2[j]); m+=4; } } }