This patch just replaces the arguments "char *dev_name" and "char *file_name"
with "struct boot_fspec_t fspec".
Signed-off-by: Chandra Seetharaman <sekharan@us.ibm.com>
---
prom_printf( fmt, ## args );\
}
# define DEBUG_OPEN DEBUG_F( "dev=%s, part=0x%p (%d), file_name=%s\n",\
prom_printf( fmt, ## args );\
}
# define DEBUG_OPEN DEBUG_F( "dev=%s, part=0x%p (%d), file_name=%s\n",\
- dev_name, part, part ? part->part_number : -1,\
- file_name)
+ fspec->dev, part, part ? part->part_number : -1,\
+ fspec->file)
# define DEBUG_SLEEP prom_sleep(3)
#else
#define DEBUG_ENTER
# define DEBUG_SLEEP prom_sleep(3)
#else
#define DEBUG_ENTER
-open_file(const struct boot_fspec_t* spec,
+open_file(struct boot_fspec_t* spec,
struct boot_file_t* file);
extern int
struct boot_file_t* file);
extern int
#include "file.h"
int fserrorno;
#include "file.h"
int fserrorno;
struct fs_t {
const char* name;
int (*open)( struct boot_file_t* file,
struct fs_t {
const char* name;
int (*open)( struct boot_file_t* file,
struct partition_t* part,
struct partition_t* part,
- const char* file_name);
+ struct boot_fspec_t* fspec);
int (*read)( struct boot_file_t* file,
unsigned int size,
int (*read)( struct boot_file_t* file,
unsigned int size,
extern const struct fs_t *fs_of;
extern const struct fs_t *fs_of_netboot;
extern const struct fs_t *fs_of;
extern const struct fs_t *fs_of_netboot;
-const struct fs_t *fs_open(struct boot_file_t *file, const char *dev_name,
- struct partition_t *part, const char *file_name);
+const struct fs_t *fs_open(struct boot_file_t *file,
+ struct partition_t *part, struct boot_fspec_t *fspec);
static int
file_block_open( struct boot_file_t* file,
static int
file_block_open( struct boot_file_t* file,
- const char* dev_name,
- const char* file_name,
+ struct boot_fspec_t* fspec,
int partition)
{
struct partition_t* parts;
struct partition_t* p;
struct partition_t* found;
int partition)
{
struct partition_t* parts;
struct partition_t* p;
struct partition_t* found;
- parts = partitions_lookup(dev_name);
+ parts = partitions_lookup(fspec->dev);
DEBUG_F("number: %02d, start: 0x%08lx, length: 0x%08lx\n",
p->part_number, p->part_start, p->part_size );
if (partition == -1) {
DEBUG_F("number: %02d, start: 0x%08lx, length: 0x%08lx\n",
p->part_number, p->part_start, p->part_size );
if (partition == -1) {
- file->fs = fs_open( file, dev_name, p, file_name );
+ file->fs = fs_open( file, p, fspec );
if (file->fs == NULL || fserrorno != FILE_ERR_OK)
continue;
else {
if (file->fs == NULL || fserrorno != FILE_ERR_OK)
continue;
else {
* cases, let OF figure out a default partition.
*/
DEBUG_F( "Using OF defaults.. (found = %p)\n", found );
* cases, let OF figure out a default partition.
*/
DEBUG_F( "Using OF defaults.. (found = %p)\n", found );
- file->fs = fs_open( file, dev_name, found, file_name );
+ file->fs = fs_open( file, found, fspec );
-file_net_open( struct boot_file_t* file,
- const char* dev_name,
- const char* file_name)
+file_net_open(struct boot_file_t* file, struct boot_fspec_t *fspec)
{
file->fs = fs_of_netboot;
{
file->fs = fs_of_netboot;
- return fs_of_netboot->open(file, dev_name, NULL, file_name);
+ return fs_of_netboot->open(file, NULL, fspec);
-int open_file(const struct boot_fspec_t* spec, struct boot_file_t* file)
+int open_file(struct boot_fspec_t* spec, struct boot_file_t* file)
switch(file->device_kind) {
case FILE_DEVICE_BLOCK:
DEBUG_F("device is a block device\n");
switch(file->device_kind) {
case FILE_DEVICE_BLOCK:
DEBUG_F("device is a block device\n");
- return file_block_open(file, spec->dev, spec->file, spec->part);
+ return file_block_open(file, spec, spec->part);
case FILE_DEVICE_NET:
DEBUG_F("device is a network device\n");
case FILE_DEVICE_NET:
DEBUG_F("device is a network device\n");
- return file_net_open(file, spec->dev, spec->file);
+ return file_net_open(file, spec);
const struct fs_t *fs_of_netboot = &of_net_filesystem; /* needed by file.c */
const struct fs_t *
const struct fs_t *fs_of_netboot = &of_net_filesystem; /* needed by file.c */
const struct fs_t *
-fs_open(struct boot_file_t *file, const char *dev_name,
- struct partition_t *part, const char *file_name)
+fs_open(struct boot_file_t *file,
+ struct partition_t *part, struct boot_fspec_t *fspec)
{
const struct fs_t **fs;
for (fs = block_filesystems; *fs; fs++)
{
const struct fs_t **fs;
for (fs = block_filesystems; *fs; fs++)
- if ((fserrorno = (*fs)->open(file, dev_name, part, file_name)) != FILE_ERR_BAD_FSYS)
+ if ((fserrorno = (*fs)->open(file, part, fspec)) != FILE_ERR_BAD_FSYS)
#include "ext2fs/ext2fs.h"
static int ext2_open( struct boot_file_t* file,
#include "ext2fs/ext2fs.h"
static int ext2_open( struct boot_file_t* file,
struct partition_t* part,
struct partition_t* part,
- const char* file_name);
+ struct boot_fspec_t* fspec);
static int ext2_read( struct boot_file_t* file,
unsigned int size,
void* buffer);
static int ext2_read( struct boot_file_t* file,
unsigned int size,
void* buffer);
static int
ext2_open( struct boot_file_t* file,
static int
ext2_open( struct boot_file_t* file,
struct partition_t* part,
struct partition_t* part,
+ struct boot_fspec_t* fspec)
{
int result = 0;
int error = FILE_ERR_NOTFOUND;
static char buffer[1024];
int ofopened = 0;
{
int result = 0;
int error = FILE_ERR_NOTFOUND;
static char buffer[1024];
int ofopened = 0;
+ char *dev_name = fspec->dev;
+ char *file_name = fspec->file;
#include "errors.h"
static int iso_open( struct boot_file_t* file,
#include "errors.h"
static int iso_open( struct boot_file_t* file,
struct partition_t* part,
struct partition_t* part,
- const char* file_name);
+ struct boot_fspec_t* fspec);
static int iso_read( struct boot_file_t* file,
unsigned int size,
void* buffer);
static int iso_read( struct boot_file_t* file,
unsigned int size,
void* buffer);
static int
iso_open( struct boot_file_t* file,
static int
iso_open( struct boot_file_t* file,
struct partition_t* part,
struct partition_t* part,
+ struct boot_fspec_t* fspec)
{
return FILE_ERR_BAD_FSYS;
}
{
return FILE_ERR_BAD_FSYS;
}
#define LOAD_BUFFER_POS 0x1000000
#define LOAD_BUFFER_SIZE 0x1400000
#define LOAD_BUFFER_POS 0x1000000
#define LOAD_BUFFER_SIZE 0x1400000
-static int of_open(struct boot_file_t* file, const char* dev_name,
- struct partition_t* part, const char* file_name);
+static int of_open(struct boot_file_t* file,
+ struct partition_t* part, struct boot_fspec_t* fspec);
static int of_read(struct boot_file_t* file, unsigned int size, void* buffer);
static int of_seek(struct boot_file_t* file, unsigned int newpos);
static int of_close(struct boot_file_t* file);
static int of_read(struct boot_file_t* file, unsigned int size, void* buffer);
static int of_seek(struct boot_file_t* file, unsigned int newpos);
static int of_close(struct boot_file_t* file);
-static int of_net_open(struct boot_file_t* file, const char* dev_name,
- struct partition_t* part, const char* file_name);
+static int of_net_open(struct boot_file_t* file,
+ struct partition_t* part, struct boot_fspec_t* fspec);
static int of_net_read(struct boot_file_t* file, unsigned int size, void* buffer);
static int of_net_seek(struct boot_file_t* file, unsigned int newpos);
static int of_net_read(struct boot_file_t* file, unsigned int size, void* buffer);
static int of_net_seek(struct boot_file_t* file, unsigned int newpos);
-of_open(struct boot_file_t* file, const char* dev_name,
- struct partition_t* part, const char* file_name)
+of_open(struct boot_file_t* file,
+ struct partition_t* part, struct boot_fspec_t* fspec)
{
static char buffer[1024];
char *filename;
{
static char buffer[1024];
char *filename;
- strncpy(buffer, dev_name, 768);
+ strncpy(buffer, fspec->dev, 768);
strcat(buffer, ":");
if (part) {
if (part->sys_ind == LINUX_RAID) {
strcat(buffer, ":");
if (part) {
if (part->sys_ind == LINUX_RAID) {
sprintf(pn, "%02d", part->part_number);
strcat(buffer, pn);
}
sprintf(pn, "%02d", part->part_number);
strcat(buffer, pn);
}
- if (file_name && strlen(file_name)) {
+ if (fspec->file && strlen(fspec->file)) {
if (part)
strcat(buffer, ",");
if (part)
strcat(buffer, ",");
- filename = strdup(file_name);
+ filename = strdup(fspec->file);
for (p = filename; *p; p++)
if (*p == '/')
*p = '\\';
for (p = filename; *p; p++)
if (*p == '/')
*p = '\\';
-of_net_open(struct boot_file_t* file, const char* dev_name,
- struct partition_t* part, const char* file_name)
+of_net_open(struct boot_file_t* file,
+ struct partition_t* part, struct boot_fspec_t* fspec)
{
static char buffer[1024];
char *filename;
{
static char buffer[1024];
char *filename;
- strncpy(buffer, dev_name, 768);
- if (file_name && strlen(file_name)) {
+ strncpy(buffer, fspec->dev, 768);
+ if (fspec->file && strlen(fspec->file)) {
- filename = strdup(file_name);
+ filename = strdup(fspec->file);
for (p = filename; *p; p++)
if (*p == '/')
*p = '\\';
for (p = filename; *p; p++)
if (*p == '/')
*p = '\\';
#include "reiserfs/reiserfs.h"
/* Exported in struct fs_t */
#include "reiserfs/reiserfs.h"
/* Exported in struct fs_t */
-static int reiserfs_open( struct boot_file_t *file, const char *dev_name,
- struct partition_t *part, const char *file_name );
+static int reiserfs_open( struct boot_file_t *file, struct partition_t *part,
+ struct boot_fspec_t *fspec);
static int reiserfs_read( struct boot_file_t *file, unsigned int size,
void *buffer );
static int reiserfs_read( struct boot_file_t *file, unsigned int size,
void *buffer );
-reiserfs_open( struct boot_file_t *file, const char *dev_name,
- struct partition_t *part, const char *file_name )
+reiserfs_open( struct boot_file_t *file, struct partition_t *part,
+ struct boot_fspec_t *fspec)
{
static char buffer[1024];
{
static char buffer[1024];
+ char *dev_name = fspec->dev;
+ char *file_name = fspec->file;
memset( INFO, 0, sizeof(struct reiserfs_state) );
INFO->file = file;
memset( INFO, 0, sizeof(struct reiserfs_state) );
INFO->file = file;
{
DEBUG_F( "Determining offset for partition %d\n", part->part_number );
INFO->partition_offset = ((uint64_t)part->part_start) * part->blocksize;
{
DEBUG_F( "Determining offset for partition %d\n", part->part_number );
INFO->partition_offset = ((uint64_t)part->part_start) * part->blocksize;
int xfs_dir (char *dirname);
/* Exported in struct fs_t */
int xfs_dir (char *dirname);
/* Exported in struct fs_t */
-static int xfs_open(struct boot_file_t *file, const char *dev_name,
- struct partition_t *part, const char *file_name);
+static int xfs_open(struct boot_file_t *file,
+ struct partition_t *part, struct boot_fspec_t *fspec);
static int xfs_read(struct boot_file_t *file, unsigned int size, void *buffer);
static int xfs_seek(struct boot_file_t *file, unsigned int newpos);
static int xfs_close(struct boot_file_t *file);
static int xfs_read(struct boot_file_t *file, unsigned int size, void *buffer);
static int xfs_seek(struct boot_file_t *file, unsigned int newpos);
static int xfs_close(struct boot_file_t *file);
-xfs_open(struct boot_file_t *file, const char *dev_name,
- struct partition_t *part, const char *file_name)
+xfs_open(struct boot_file_t *file,
+ struct partition_t *part, struct boot_fspec_t *fspec)
{
static char buffer[1024];
{
static char buffer[1024];
else
partition_offset = 0;
else
partition_offset = 0;
- strncpy(buffer, dev_name, 1020);
+ strncpy(buffer, fspec->dev, 1020);
if (_machine != _MACH_bplan)
strcat(buffer, ":0"); /* 0 is full disk in (non-buggy) OF */
DEBUG_F("Trying to open dev_name=%s; filename=%s; partition offset=%Lu\n",
if (_machine != _MACH_bplan)
strcat(buffer, ":0"); /* 0 is full disk in (non-buggy) OF */
DEBUG_F("Trying to open dev_name=%s; filename=%s; partition offset=%Lu\n",
- buffer, file_name, partition_offset);
+ buffer, fspec->file, partition_offset);
file->of_device = prom_open(buffer);
if (file->of_device == PROM_INVALID_HANDLE || file->of_device == NULL)
file->of_device = prom_open(buffer);
if (file->of_device == PROM_INVALID_HANDLE || file->of_device == NULL)
return FILE_ERR_BAD_FSYS;
}
return FILE_ERR_BAD_FSYS;
}
- DEBUG_F("Attempting to open %s\n", file_name);
- strcpy(buffer, file_name); /* xfs_dir modifies argument */
+ DEBUG_F("Attempting to open %s\n", fspec->file);
+ strcpy(buffer, fspec->file); /* xfs_dir modifies argument */
if(!xfs_dir(buffer))
{
DEBUG_F("xfs_dir() failed. errnum = %d\n", errnum);
if(!xfs_dir(buffer))
{
DEBUG_F("xfs_dir() failed. errnum = %d\n", errnum);
- DEBUG_F("Successfully opened %s\n", file_name);
+ DEBUG_F("Successfully opened %s\n", fspec->file);
DEBUG_LEAVE(FILE_ERR_OK);
return FILE_ERR_OK;
DEBUG_LEAVE(FILE_ERR_OK);
return FILE_ERR_OK;