Fixes to the device and machine configuration string getters and accordingly reverted the serial passthrough fix as well as it's no longer needed.
This commit is contained in:
47
src/device.c
47
src/device.c
@@ -637,16 +637,24 @@ device_get_instance(void)
|
|||||||
const char *
|
const char *
|
||||||
device_get_config_string(const char *str)
|
device_get_config_string(const char *str)
|
||||||
{
|
{
|
||||||
const device_config_t *cfg = device_current.dev->config;
|
const char *ret = "";
|
||||||
|
|
||||||
while (cfg && cfg->type != CONFIG_END) {
|
if (device_current.dev != NULL) {
|
||||||
if (!strcmp(str, cfg->name))
|
const device_config_t *cfg = device_current.dev->config;
|
||||||
return (config_get_string((char *) device_current.name, (char *) str, (char *) cfg->default_string));
|
|
||||||
|
|
||||||
cfg++;
|
while ((cfg != NULL) && (cfg->type != CONFIG_END)) {
|
||||||
|
if (!strcmp(str, cfg->name)) {
|
||||||
|
const char *s = (config_get_string((char *) device_current.name,
|
||||||
|
(char *) str, (char *) cfg->default_string));
|
||||||
|
ret = (s == NULL) ? "" : s;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
cfg++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (NULL);
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -870,24 +878,29 @@ machine_get_config_int(char *str)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
const char *
|
||||||
machine_get_config_string(char *str)
|
machine_get_config_string(char *str)
|
||||||
{
|
{
|
||||||
const device_t *dev = machine_get_device(machine);
|
const device_t *dev = machine_get_device(machine);
|
||||||
const device_config_t *cfg;
|
const char *ret = "";
|
||||||
|
|
||||||
if (dev == NULL)
|
if (dev != NULL) {
|
||||||
return 0;
|
const device_config_t *cfg;
|
||||||
|
|
||||||
cfg = dev->config;
|
cfg = dev->config;
|
||||||
while (cfg && cfg->type != CONFIG_END) {
|
while ((cfg != NULL) && (cfg->type != CONFIG_END)) {
|
||||||
if (!strcmp(str, cfg->name))
|
if (!strcmp(str, cfg->name)) {
|
||||||
return (config_get_string((char *) dev->name, str, (char *) cfg->default_string));
|
const char *s = config_get_string((char *) dev->name, str,
|
||||||
|
(char *) cfg->default_string);
|
||||||
|
ret = (s == NULL) ? "" : s;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
cfg++;
|
cfg++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
const device_t *
|
const device_t *
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ static const device_config_t serial_passthrough_config[] = {
|
|||||||
.name = "host_serial_path",
|
.name = "host_serial_path",
|
||||||
.description = "Host Serial Device",
|
.description = "Host Serial Device",
|
||||||
.type = CONFIG_SERPORT,
|
.type = CONFIG_SERPORT,
|
||||||
.default_string = "",
|
.default_string = NULL,
|
||||||
.default_int = 0,
|
.default_int = 0,
|
||||||
.file_filter = NULL,
|
.file_filter = NULL,
|
||||||
.spinner = { 0 },
|
.spinner = { 0 },
|
||||||
|
|||||||
@@ -118,16 +118,6 @@ enum {
|
|||||||
#define BIOS_INTERLEAVED_INVERT 8
|
#define BIOS_INTERLEAVED_INVERT 8
|
||||||
#define BIOS_HIGH_BIT_INVERT 16
|
#define BIOS_HIGH_BIT_INVERT 16
|
||||||
|
|
||||||
#define device_common_config_t \
|
|
||||||
const char *name; \
|
|
||||||
const char *description; \
|
|
||||||
int type; \
|
|
||||||
const char *default_string; \
|
|
||||||
int default_int; \
|
|
||||||
const char *file_filter; \
|
|
||||||
const device_config_spinner_t spinner; \
|
|
||||||
const device_config_selection_t selection[32]
|
|
||||||
|
|
||||||
typedef struct device_config_selection_t {
|
typedef struct device_config_selection_t {
|
||||||
const char *description;
|
const char *description;
|
||||||
int value;
|
int value;
|
||||||
@@ -139,10 +129,6 @@ typedef struct device_config_spinner_t {
|
|||||||
int16_t step;
|
int16_t step;
|
||||||
} device_config_spinner_t;
|
} device_config_spinner_t;
|
||||||
|
|
||||||
typedef struct _device_dep_config_ {
|
|
||||||
device_common_config_t;
|
|
||||||
} device_dep_config_t;
|
|
||||||
|
|
||||||
typedef struct device_config_bios_t {
|
typedef struct device_config_bios_t {
|
||||||
const char *name;
|
const char *name;
|
||||||
const char *internal_name;
|
const char *internal_name;
|
||||||
@@ -153,15 +139,18 @@ typedef struct device_config_bios_t {
|
|||||||
void *dev1;
|
void *dev1;
|
||||||
void *dev2;
|
void *dev2;
|
||||||
const char *files[9];
|
const char *files[9];
|
||||||
/* Configuration options that depend on the device variant.
|
|
||||||
To prevent excessive nesting, there is no CONFIG_BIOS
|
|
||||||
option a dep_config struct */
|
|
||||||
const device_dep_config_t *dep_config;
|
|
||||||
} device_config_bios_t;
|
} device_config_bios_t;
|
||||||
|
|
||||||
typedef struct _device_config_ {
|
typedef struct _device_config_ {
|
||||||
device_common_config_t;
|
const char *name;
|
||||||
const device_config_bios_t bios[32];
|
const char *description;
|
||||||
|
int type;
|
||||||
|
const char *default_string;
|
||||||
|
int default_int;
|
||||||
|
const char *file_filter;
|
||||||
|
const device_config_spinner_t spinner;
|
||||||
|
const device_config_selection_t selection[32];
|
||||||
|
const device_config_bios_t bios[32];
|
||||||
} device_config_t;
|
} device_config_t;
|
||||||
|
|
||||||
typedef struct _device_ {
|
typedef struct _device_ {
|
||||||
@@ -242,8 +231,8 @@ extern int device_get_instance(void);
|
|||||||
|
|
||||||
extern const char *device_get_internal_name(const device_t *dev);
|
extern const char *device_get_internal_name(const device_t *dev);
|
||||||
|
|
||||||
extern int machine_get_config_int(char *str);
|
extern int machine_get_config_int(char *str);
|
||||||
extern char *machine_get_config_string(char *str);
|
extern const char *machine_get_config_string(char *str);
|
||||||
|
|
||||||
extern const device_t device_none;
|
extern const device_t device_none;
|
||||||
extern const device_t device_internal;
|
extern const device_t device_internal;
|
||||||
|
|||||||
Reference in New Issue
Block a user