use device_io_t

This commit is contained in:
Laurent Vivier 2007-10-09 19:29:13 +00:00
parent 4555512e10
commit f2745a6bbb
3 changed files with 34 additions and 10 deletions

View File

@ -202,7 +202,8 @@ static int get_second_position(char *image, char *name, int *second_offset, int
iso9660_FILE* file;
iso9660_VOLUME *volume;
device.data = device_open(image);
device_sector_size = 2048;
device.data = (void*)device_open(image, O_RDONLY);
device.read_sector = (stream_read_sector_t)device_read_sector;
device.close = (stream_close_t)device_close;
@ -264,8 +265,14 @@ static int set_first(char *image, int drive_num, int second_offset, int second_s
int i;
int boottype;
char bootblock[BOOTBLOCK_SIZE];
device_io_t device;
map = map_open(image, O_RDONLY);
device_sector_size = 2048;
device.data = (void*)device_open(image, O_RDONLY);
device.read_sector = (stream_read_sector_t)device_read_sector;
device.close = (stream_close_t)device_close;
map = map_open(&device);
for (i = 0; i < map_get_number(map); i++)
{
map_read(map, i);

View File

@ -20,6 +20,7 @@
#include "libemile.h"
#include "libmap.h"
#include "emile_config.h"
#include "device.h"
int verbose = 0;
@ -85,6 +86,7 @@ static int open_map_of( char *dev_name, int flags,
int disk;
char disk_name[16];
int driver;
device_io_t device;
ret = emile_scsi_get_rdev(dev_name, &driver, &disk, partition);
if (ret == -1)
@ -92,7 +94,13 @@ static int open_map_of( char *dev_name, int flags,
emile_get_dev_name(disk_name, driver, disk, 0);
*map = map_open(disk_name, flags);
device_sector_size = 512;
device.data = (void*)device_open(disk_name, flags);
device.write_sector = (stream_read_sector_t)device_write_sector;
device.read_sector = (stream_read_sector_t)device_read_sector;
device.close = (stream_close_t)device_close;
*map = map_open(&device);
if (*map == NULL)
return -1;

View File

@ -16,6 +16,7 @@
#include "libmap.h"
#include "libemile.h"
#include "device.h"
#define EMILE_MAX_DISK 16
#define EMILE_MAX_DEVNAME 16
@ -86,7 +87,7 @@ static int emile_scanbus(device_name_t devices[EMILE_MAX_DISK])
return j;
}
void diskinfo(char* device)
void diskinfo(char* devname)
{
map_t* map;
int j;
@ -94,12 +95,20 @@ void diskinfo(char* device)
char bootblock[BOOTBLOCK_SIZE];
int block_size, block_count;
int ret;
device_io_t device;
printf("%s:", device);
map = map_open(device, O_RDONLY);
printf("%s:", devname);
device_sector_size = 512;
device.data = (void*)device_open(devname, O_RDONLY);
device.write_sector = (stream_read_sector_t)device_write_sector;
device.read_sector = (stream_read_sector_t)device_read_sector;
device.close = (stream_close_t)device_close;
map = map_open(&device);
if (map == NULL)
{
fprintf(stderr, "Cannot read map of %s\n", device);
fprintf(stderr, "Cannot read map of %s\n", devname);
return;
}
@ -280,11 +289,11 @@ void diskinfo(char* device)
void scanbus(void)
{
device_name_t devices[EMILE_MAX_DISK];
device_name_t devname[EMILE_MAX_DISK];
int count;
int i;
count = emile_scanbus(devices);
count = emile_scanbus(devname);
if (count == 0)
{
if (errno == EACCES)
@ -296,5 +305,5 @@ void scanbus(void)
printf("No disk found\n");
}
for (i = 0; i < count; i++)
diskinfo(devices[i]);
diskinfo(devname[i]);
}