int read_boot( Boot *boot ) { int i; char *tbuff = Malloc(Sector_size); #ifdef debug IOdebug("msdosfs : read_boot"); #endif if(tbuff == NULL) { #ifdef debugE IOdebug( "msdosfs ERROR : read_boot can't malloc"); #endif return -1; } if( (i = direct_read(0,Sector_size,tbuff)) == Sector_size ) { memcpy((char *)boot, tbuff, sizeof(Boot)); Free(tbuff); return 0; } #ifdef debugE IOdebug("msdosfs ERROR : read_boot failed (expected %d, got %d)", sizeof(Boot), i); #endif Free(tbuff); return -1; }
static PyObject* directRead(PyObject* self, PyObject* arg) { PyObject* transferTuple; unsigned int offset, size, i ; if(!PyArg_ParseTuple(arg, "ll", &offset, &size)) return NULL; uint8_t rx[size]; direct_read(offset, rx, size); transferTuple = PyTuple_New(size); for(i=0;i<size;i++) PyTuple_SetItem(transferTuple, i, Py_BuildValue("i",rx[i])); return transferTuple; }
int read_sector(int sector) { long min = Sector_buf[0].LastUse; int numbuf, i; /* get a free sector buf */ for(numbuf=0, i=0; i<MAX_BUF; i++ ) if( min > Sector_buf[i].LastUse ) { min = Sector_buf[i].LastUse; numbuf = i; } Sector_buf[numbuf].Sector = sector; /* read sector */ if(!direct_read(sector*Sector_size,Sector_size,Sector_buf[numbuf].Buf)) return -1; time((time_t *)&Sector_buf[numbuf].LastUse); return(numbuf); }