50 lines
812 B
C
50 lines
812 B
C
#include <types.h>
|
|
#include <string.h>
|
|
#include <drivers/ide.h>
|
|
|
|
#include <fs/ekfs.h>
|
|
|
|
/* work on this later */
|
|
#if 0
|
|
|
|
/* note: __l being 0 is allowed, because that way read() can be used to tell if a file exists (with return value 0) */
|
|
int ekfs_read(struct ekfs_file* __f, void* __b, size_t __l)
|
|
{
|
|
int rv = 0;
|
|
|
|
if (!__f || !__b || (!__f->f_inode))
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
/* we assume drive 0 is already mounted */
|
|
|
|
char buffer[512];
|
|
memset(buffer, 0, 512);
|
|
|
|
int num_sectors = __f->f_inode->i_len / 512;
|
|
|
|
if ((__l / 512) > num_sectors)
|
|
{
|
|
return EKFS_E_FILETOOSMALL;
|
|
}
|
|
|
|
int read_sectors = num_sectors;
|
|
|
|
for (int i = 0; i < read_sectors; i++);
|
|
{
|
|
rv = read_sector(__f->f_inode->i_start, buffer);
|
|
|
|
if (rv != 0)
|
|
{
|
|
break;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
return rv;
|
|
}
|
|
|
|
#endif
|