trivial patches for 2014-12-11
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJUid7mAAoJEL7lnXSkw9fbX0YH/RXeoX7IN1QVEP8Z2dLq4nzt igHm4Gd4ENX6pdluHmXAxzKoHR78yNGFegzuv0IJBfav8kGCQWW6zAf4TUk/udtn AKPk1yauVKNzCvmYldrfbuu4HedZqkftE0tyDZuAK50pZH1hzX7qiAT1C0OlarLQ Tqy4+ouYiRja2hLq4YJCM9mmYt0sbMDShIcHBYRTdD0cxoPZ+JZEeAQYg+FYNdIo jioVg8NgmFZW37UWeBTCKG+DcX9NwXwyo/ASdIozM+aQcTBx/nXn7/NOAxXlxUX8 M9AS9iz+LWBfwof3HLbzLLTvTmE66Z78/TluFMmEbpK4ts0ZXRJKDHE/pfynRD0= =PXlQ -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/mjt/tags/pull-trivial-patches-2014-12-11' into staging trivial patches for 2014-12-11 # gpg: Signature made Thu 11 Dec 2014 18:13:58 GMT using RSA key ID A4C3D7DB # gpg: Good signature from "Michael Tokarev <mjt@tls.msk.ru>" # gpg: aka "Michael Tokarev <mjt@corpit.ru>" # gpg: aka "Michael Tokarev <mjt@debian.org>" * remotes/mjt/tags/pull-trivial-patches-2014-12-11: Sort include/qemu/typedefs.h hpet: increase spelling precision pflash_cfi02.c: associate "cfi.pflash02" to "Storage devices" category vt82c686: fix coverity warning about out-of-bounds write virtio: remove useless declaration of virtio_net_init() qapi-schema: fix typo about change-vnc-password fw_cfg: remove superfluous blank line get_maintainer.pl: Remove the --git-chief-penguins option configure: Replace which(1) with "has" util: Use g_new() & friends where that makes obvious sense util: Fuse g_malloc(); memset() into g_new0() util: Drop superfluous conditionals around g_free() Drop superfluous conditionals around g_strdup() Drop superfluous conditionals around qemu_opts_del() usb: delete redundant brackets in usb_host_handle_control() virtio-bus: avoid breaking build when open DEBUG switch acpi-build: Make DPRINTF working for acpi-build acpi-build: adjust indention 8 -> 4 spaces target-s390x: fix possible out of bounds read qmp: fix typo in input-send-event examples Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
99c9c3cb24
|
@ -88,11 +88,7 @@ static char *rng_random_get_filename(Object *obj, Error **errp)
|
||||||
{
|
{
|
||||||
RndRandom *s = RNG_RANDOM(obj);
|
RndRandom *s = RNG_RANDOM(obj);
|
||||||
|
|
||||||
if (s->filename) {
|
return g_strdup(s->filename);
|
||||||
return g_strdup(s->filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rng_random_set_filename(Object *obj, const char *filename,
|
static void rng_random_set_filename(Object *obj, const char *filename,
|
||||||
|
|
|
@ -2727,7 +2727,7 @@ fi
|
||||||
if test "$modules" = yes; then
|
if test "$modules" = yes; then
|
||||||
shacmd_probe="sha1sum sha1 shasum"
|
shacmd_probe="sha1sum sha1 shasum"
|
||||||
for c in $shacmd_probe; do
|
for c in $shacmd_probe; do
|
||||||
if which $c >/dev/null 2>&1; then
|
if has $c; then
|
||||||
shacmd="$c"
|
shacmd="$c"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -744,6 +744,7 @@ static void pflash_cfi02_class_init(ObjectClass *klass, void *data)
|
||||||
|
|
||||||
dc->realize = pflash_cfi02_realize;
|
dc->realize = pflash_cfi02_realize;
|
||||||
dc->props = pflash_cfi02_properties;
|
dc->props = pflash_cfi02_properties;
|
||||||
|
set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const TypeInfo pflash_cfi02_info = {
|
static const TypeInfo pflash_cfi02_info = {
|
||||||
|
|
|
@ -1141,9 +1141,7 @@ static void device_finalize(Object *obj)
|
||||||
NamedGPIOList *ngl, *next;
|
NamedGPIOList *ngl, *next;
|
||||||
|
|
||||||
DeviceState *dev = DEVICE(obj);
|
DeviceState *dev = DEVICE(obj);
|
||||||
if (dev->opts) {
|
qemu_opts_del(dev->opts);
|
||||||
qemu_opts_del(dev->opts);
|
|
||||||
}
|
|
||||||
|
|
||||||
QLIST_FOREACH_SAFE(ngl, &dev->gpios, node, next) {
|
QLIST_FOREACH_SAFE(ngl, &dev->gpios, node, next) {
|
||||||
QLIST_REMOVE(ngl, node);
|
QLIST_REMOVE(ngl, node);
|
||||||
|
|
|
@ -68,6 +68,14 @@
|
||||||
|
|
||||||
#define ACPI_BUILD_TABLE_SIZE 0x20000
|
#define ACPI_BUILD_TABLE_SIZE 0x20000
|
||||||
|
|
||||||
|
/* #define DEBUG_ACPI_BUILD */
|
||||||
|
#ifdef DEBUG_ACPI_BUILD
|
||||||
|
#define ACPI_BUILD_DPRINTF(fmt, ...) \
|
||||||
|
do {printf("ACPI_BUILD: " fmt, ## __VA_ARGS__); } while (0)
|
||||||
|
#else
|
||||||
|
#define ACPI_BUILD_DPRINTF(fmt, ...)
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef struct AcpiCpuInfo {
|
typedef struct AcpiCpuInfo {
|
||||||
DECLARE_BITMAP(found_cpus, ACPI_CPU_HOTPLUG_ID_LIMIT);
|
DECLARE_BITMAP(found_cpus, ACPI_CPU_HOTPLUG_ID_LIMIT);
|
||||||
} AcpiCpuInfo;
|
} AcpiCpuInfo;
|
||||||
|
@ -246,8 +254,6 @@ static void acpi_get_pci_info(PcPciInfo *info)
|
||||||
#define ACPI_BUILD_APPNAME6 "BOCHS "
|
#define ACPI_BUILD_APPNAME6 "BOCHS "
|
||||||
#define ACPI_BUILD_APPNAME4 "BXPC"
|
#define ACPI_BUILD_APPNAME4 "BXPC"
|
||||||
|
|
||||||
#define ACPI_BUILD_DPRINTF(level, fmt, ...) do {} while (0)
|
|
||||||
|
|
||||||
#define ACPI_BUILD_TABLE_FILE "etc/acpi/tables"
|
#define ACPI_BUILD_TABLE_FILE "etc/acpi/tables"
|
||||||
#define ACPI_BUILD_RSDP_FILE "etc/acpi/rsdp"
|
#define ACPI_BUILD_RSDP_FILE "etc/acpi/rsdp"
|
||||||
#define ACPI_BUILD_TPMLOG_FILE "etc/tpm/log"
|
#define ACPI_BUILD_TPMLOG_FILE "etc/tpm/log"
|
||||||
|
@ -273,12 +279,12 @@ build_header(GArray *linker, GArray *table_data,
|
||||||
|
|
||||||
static inline GArray *build_alloc_array(void)
|
static inline GArray *build_alloc_array(void)
|
||||||
{
|
{
|
||||||
return g_array_new(false, true /* clear */, 1);
|
return g_array_new(false, true /* clear */, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void build_free_array(GArray *array)
|
static inline void build_free_array(GArray *array)
|
||||||
{
|
{
|
||||||
g_array_free(array, true);
|
g_array_free(array, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void build_prepend_byte(GArray *array, uint8_t val)
|
static inline void build_prepend_byte(GArray *array, uint8_t val)
|
||||||
|
@ -1569,7 +1575,7 @@ void acpi_build(PcGuestInfo *guest_info, AcpiBuildTables *tables)
|
||||||
|
|
||||||
table_offsets = g_array_new(false, true /* clear */,
|
table_offsets = g_array_new(false, true /* clear */,
|
||||||
sizeof(uint32_t));
|
sizeof(uint32_t));
|
||||||
ACPI_BUILD_DPRINTF(3, "init ACPI tables\n");
|
ACPI_BUILD_DPRINTF("init ACPI tables\n");
|
||||||
|
|
||||||
bios_linker_loader_alloc(tables->linker, ACPI_BUILD_TABLE_FILE,
|
bios_linker_loader_alloc(tables->linker, ACPI_BUILD_TABLE_FILE,
|
||||||
64 /* Ensure FACS is aligned */,
|
64 /* Ensure FACS is aligned */,
|
||||||
|
@ -1750,17 +1756,17 @@ void acpi_setup(PcGuestInfo *guest_info)
|
||||||
AcpiBuildState *build_state;
|
AcpiBuildState *build_state;
|
||||||
|
|
||||||
if (!guest_info->fw_cfg) {
|
if (!guest_info->fw_cfg) {
|
||||||
ACPI_BUILD_DPRINTF(3, "No fw cfg. Bailing out.\n");
|
ACPI_BUILD_DPRINTF("No fw cfg. Bailing out.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!guest_info->has_acpi_build) {
|
if (!guest_info->has_acpi_build) {
|
||||||
ACPI_BUILD_DPRINTF(3, "ACPI build disabled. Bailing out.\n");
|
ACPI_BUILD_DPRINTF("ACPI build disabled. Bailing out.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!acpi_enabled) {
|
if (!acpi_enabled) {
|
||||||
ACPI_BUILD_DPRINTF(3, "ACPI disabled. Bailing out.\n");
|
ACPI_BUILD_DPRINTF("ACPI disabled. Bailing out.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,13 +50,13 @@ typedef struct VT82C686BState {
|
||||||
static void superio_ioport_writeb(void *opaque, hwaddr addr, uint64_t data,
|
static void superio_ioport_writeb(void *opaque, hwaddr addr, uint64_t data,
|
||||||
unsigned size)
|
unsigned size)
|
||||||
{
|
{
|
||||||
int can_write;
|
|
||||||
SuperIOConfig *superio_conf = opaque;
|
SuperIOConfig *superio_conf = opaque;
|
||||||
|
|
||||||
DPRINTF("superio_ioport_writeb address 0x%x val 0x%x\n", addr, data);
|
DPRINTF("superio_ioport_writeb address 0x%x val 0x%x\n", addr, data);
|
||||||
if (addr == 0x3f0) {
|
if (addr == 0x3f0) {
|
||||||
superio_conf->index = data & 0xff;
|
superio_conf->index = data & 0xff;
|
||||||
} else {
|
} else {
|
||||||
|
bool can_write = true;
|
||||||
/* 0x3f1 */
|
/* 0x3f1 */
|
||||||
switch (superio_conf->index) {
|
switch (superio_conf->index) {
|
||||||
case 0x00 ... 0xdf:
|
case 0x00 ... 0xdf:
|
||||||
|
@ -68,30 +68,27 @@ static void superio_ioport_writeb(void *opaque, hwaddr addr, uint64_t data,
|
||||||
case 0xf7:
|
case 0xf7:
|
||||||
case 0xf9 ... 0xfb:
|
case 0xf9 ... 0xfb:
|
||||||
case 0xfd ... 0xff:
|
case 0xfd ... 0xff:
|
||||||
can_write = 0;
|
can_write = false;
|
||||||
|
break;
|
||||||
|
case 0xe7:
|
||||||
|
if ((data & 0xff) != 0xfe) {
|
||||||
|
DPRINTF("change uart 1 base. unsupported yet\n");
|
||||||
|
can_write = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0xe8:
|
||||||
|
if ((data & 0xff) != 0xbe) {
|
||||||
|
DPRINTF("change uart 2 base. unsupported yet\n");
|
||||||
|
can_write = false;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
can_write = 1;
|
break;
|
||||||
|
|
||||||
if (can_write) {
|
|
||||||
switch (superio_conf->index) {
|
|
||||||
case 0xe7:
|
|
||||||
if ((data & 0xff) != 0xfe) {
|
|
||||||
DPRINTF("chage uart 1 base. unsupported yet\n");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 0xe8:
|
|
||||||
if ((data & 0xff) != 0xbe) {
|
|
||||||
DPRINTF("chage uart 2 base. unsupported yet\n");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
superio_conf->config[superio_conf->index] = data & 0xff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
superio_conf->config[superio_conf->index] = data & 0xff;
|
if (can_write) {
|
||||||
|
superio_conf->config[superio_conf->index] = data & 0xff;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -621,7 +621,6 @@ static void fw_cfg_realize(DeviceState *dev, Error **errp)
|
||||||
FWCfgState *s = FW_CFG(dev);
|
FWCfgState *s = FW_CFG(dev);
|
||||||
SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
|
SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
|
||||||
|
|
||||||
|
|
||||||
if (s->ctl_iobase + 1 == s->data_iobase) {
|
if (s->ctl_iobase + 1 == s->data_iobase) {
|
||||||
sysbus_add_io(sbd, s->ctl_iobase, &s->comb_iomem);
|
sysbus_add_io(sbd, s->ctl_iobase, &s->comb_iomem);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* High Precisition Event Timer emulation
|
* High Precision Event Timer emulation
|
||||||
*
|
*
|
||||||
* Copyright (c) 2007 Alexander Graf
|
* Copyright (c) 2007 Alexander Graf
|
||||||
* Copyright (c) 2008 IBM Corporation
|
* Copyright (c) 2008 IBM Corporation
|
||||||
|
|
|
@ -400,9 +400,7 @@ static int tpm_passthrough_handle_device_opts(QemuOpts *opts, TPMBackend *tb)
|
||||||
const char *value;
|
const char *value;
|
||||||
|
|
||||||
value = qemu_opt_get(opts, "cancel-path");
|
value = qemu_opt_get(opts, "cancel-path");
|
||||||
if (value) {
|
tb->cancel_path = g_strdup(value);
|
||||||
tb->cancel_path = g_strdup(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
value = qemu_opt_get(opts, "path");
|
value = qemu_opt_get(opts, "path");
|
||||||
if (!value) {
|
if (!value) {
|
||||||
|
|
|
@ -1237,7 +1237,7 @@ static void usb_host_handle_control(USBDevice *udev, USBPacket *p,
|
||||||
/* Fix up USB-3 ep0 maxpacket size to allow superspeed connected devices
|
/* Fix up USB-3 ep0 maxpacket size to allow superspeed connected devices
|
||||||
* to work redirected to a not superspeed capable hcd */
|
* to work redirected to a not superspeed capable hcd */
|
||||||
if (udev->speed == USB_SPEED_SUPER &&
|
if (udev->speed == USB_SPEED_SUPER &&
|
||||||
!((udev->port->speedmask & USB_SPEED_MASK_SUPER)) &&
|
!(udev->port->speedmask & USB_SPEED_MASK_SUPER) &&
|
||||||
request == 0x8006 && value == 0x100 && index == 0) {
|
request == 0x8006 && value == 0x100 && index == 0) {
|
||||||
r->usb3ep0quirk = true;
|
r->usb3ep0quirk = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,7 @@ void virtio_bus_reset(VirtioBusState *bus)
|
||||||
{
|
{
|
||||||
VirtIODevice *vdev = virtio_bus_get_device(bus);
|
VirtIODevice *vdev = virtio_bus_get_device(bus);
|
||||||
|
|
||||||
DPRINTF("%s: reset device.\n", qbus->name);
|
DPRINTF("%s: reset device.\n", BUS(bus)->name);
|
||||||
if (vdev != NULL) {
|
if (vdev != NULL) {
|
||||||
virtio_reset(vdev);
|
virtio_reset(vdev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -230,9 +230,6 @@ int virtio_set_features(VirtIODevice *vdev, uint32_t val);
|
||||||
/* Base devices. */
|
/* Base devices. */
|
||||||
typedef struct VirtIOBlkConf VirtIOBlkConf;
|
typedef struct VirtIOBlkConf VirtIOBlkConf;
|
||||||
struct virtio_net_conf;
|
struct virtio_net_conf;
|
||||||
VirtIODevice *virtio_net_init(DeviceState *dev, NICConf *conf,
|
|
||||||
struct virtio_net_conf *net,
|
|
||||||
uint32_t host_features);
|
|
||||||
typedef struct virtio_serial_conf virtio_serial_conf;
|
typedef struct virtio_serial_conf virtio_serial_conf;
|
||||||
typedef struct VirtIOSCSIConf VirtIOSCSIConf;
|
typedef struct VirtIOSCSIConf VirtIOSCSIConf;
|
||||||
typedef struct VirtIORNGConf VirtIORNGConf;
|
typedef struct VirtIORNGConf VirtIORNGConf;
|
||||||
|
|
|
@ -3,80 +3,75 @@
|
||||||
|
|
||||||
/* A load of opaque types so that device init declarations don't have to
|
/* A load of opaque types so that device init declarations don't have to
|
||||||
pull in all the real definitions. */
|
pull in all the real definitions. */
|
||||||
typedef struct QEMUTimer QEMUTimer;
|
|
||||||
typedef struct QEMUTimerListGroup QEMUTimerListGroup;
|
|
||||||
typedef struct QEMUFile QEMUFile;
|
|
||||||
typedef struct QEMUBH QEMUBH;
|
|
||||||
|
|
||||||
typedef struct AioContext AioContext;
|
|
||||||
|
|
||||||
typedef struct Visitor Visitor;
|
|
||||||
|
|
||||||
struct Monitor;
|
struct Monitor;
|
||||||
typedef struct Monitor Monitor;
|
|
||||||
typedef struct MigrationParams MigrationParams;
|
|
||||||
|
|
||||||
typedef struct Property Property;
|
|
||||||
typedef struct PropertyInfo PropertyInfo;
|
|
||||||
typedef struct CompatProperty CompatProperty;
|
|
||||||
typedef struct DeviceState DeviceState;
|
|
||||||
typedef struct BusState BusState;
|
|
||||||
typedef struct BusClass BusClass;
|
|
||||||
|
|
||||||
|
/* Please keep this list in alphabetical order */
|
||||||
|
typedef struct AdapterInfo AdapterInfo;
|
||||||
typedef struct AddressSpace AddressSpace;
|
typedef struct AddressSpace AddressSpace;
|
||||||
typedef struct MemoryRegion MemoryRegion;
|
typedef struct AioContext AioContext;
|
||||||
typedef struct MemoryRegionSection MemoryRegionSection;
|
|
||||||
typedef struct MemoryListener MemoryListener;
|
|
||||||
|
|
||||||
typedef struct MemoryMappingList MemoryMappingList;
|
|
||||||
|
|
||||||
typedef struct QEMUMachine QEMUMachine;
|
|
||||||
typedef struct MachineClass MachineClass;
|
|
||||||
typedef struct MachineState MachineState;
|
|
||||||
typedef struct NICInfo NICInfo;
|
|
||||||
typedef struct HCIInfo HCIInfo;
|
|
||||||
typedef struct AudioState AudioState;
|
typedef struct AudioState AudioState;
|
||||||
typedef struct BlockBackend BlockBackend;
|
typedef struct BlockBackend BlockBackend;
|
||||||
typedef struct BlockDriverState BlockDriverState;
|
typedef struct BlockDriverState BlockDriverState;
|
||||||
typedef struct DriveInfo DriveInfo;
|
typedef struct BusClass BusClass;
|
||||||
typedef struct DisplayState DisplayState;
|
typedef struct BusState BusState;
|
||||||
typedef struct DisplayChangeListener DisplayChangeListener;
|
|
||||||
typedef struct DisplaySurface DisplaySurface;
|
|
||||||
typedef struct PixelFormat PixelFormat;
|
|
||||||
typedef struct QemuConsole QemuConsole;
|
|
||||||
typedef struct CharDriverState CharDriverState;
|
typedef struct CharDriverState CharDriverState;
|
||||||
typedef struct MACAddr MACAddr;
|
typedef struct CompatProperty CompatProperty;
|
||||||
typedef struct NetClientState NetClientState;
|
typedef struct DeviceState DeviceState;
|
||||||
|
typedef struct DisplayChangeListener DisplayChangeListener;
|
||||||
|
typedef struct DisplayState DisplayState;
|
||||||
|
typedef struct DisplaySurface DisplaySurface;
|
||||||
|
typedef struct DriveInfo DriveInfo;
|
||||||
|
typedef struct EventNotifier EventNotifier;
|
||||||
|
typedef struct FWCfgState FWCfgState;
|
||||||
|
typedef struct HCIInfo HCIInfo;
|
||||||
typedef struct I2CBus I2CBus;
|
typedef struct I2CBus I2CBus;
|
||||||
|
typedef struct I2SCodec I2SCodec;
|
||||||
typedef struct ISABus ISABus;
|
typedef struct ISABus ISABus;
|
||||||
typedef struct ISADevice ISADevice;
|
typedef struct ISADevice ISADevice;
|
||||||
typedef struct SMBusDevice SMBusDevice;
|
typedef struct MACAddr MACAddr;
|
||||||
typedef struct PCIHostState PCIHostState;
|
typedef struct MachineClass MachineClass;
|
||||||
typedef struct PCIExpressHost PCIExpressHost;
|
typedef struct MachineState MachineState;
|
||||||
|
typedef struct MemoryListener MemoryListener;
|
||||||
|
typedef struct MemoryMappingList MemoryMappingList;
|
||||||
|
typedef struct MemoryRegion MemoryRegion;
|
||||||
|
typedef struct MemoryRegionSection MemoryRegionSection;
|
||||||
|
typedef struct MigrationParams MigrationParams;
|
||||||
|
typedef struct Monitor Monitor;
|
||||||
|
typedef struct MouseTransformInfo MouseTransformInfo;
|
||||||
|
typedef struct MSIMessage MSIMessage;
|
||||||
|
typedef struct NetClientState NetClientState;
|
||||||
|
typedef struct NICInfo NICInfo;
|
||||||
|
typedef struct PcGuestInfo PcGuestInfo;
|
||||||
|
typedef struct PCIBridge PCIBridge;
|
||||||
typedef struct PCIBus PCIBus;
|
typedef struct PCIBus PCIBus;
|
||||||
typedef struct PCIDevice PCIDevice;
|
typedef struct PCIDevice PCIDevice;
|
||||||
typedef struct PCIExpressDevice PCIExpressDevice;
|
|
||||||
typedef struct PCIBridge PCIBridge;
|
|
||||||
typedef struct PCIEAERMsg PCIEAERMsg;
|
|
||||||
typedef struct PCIEAERLog PCIEAERLog;
|
|
||||||
typedef struct PCIEAERErr PCIEAERErr;
|
typedef struct PCIEAERErr PCIEAERErr;
|
||||||
|
typedef struct PCIEAERLog PCIEAERLog;
|
||||||
|
typedef struct PCIEAERMsg PCIEAERMsg;
|
||||||
typedef struct PCIEPort PCIEPort;
|
typedef struct PCIEPort PCIEPort;
|
||||||
typedef struct PCIESlot PCIESlot;
|
typedef struct PCIESlot PCIESlot;
|
||||||
typedef struct MSIMessage MSIMessage;
|
typedef struct PCIExpressDevice PCIExpressDevice;
|
||||||
typedef struct SerialState SerialState;
|
typedef struct PCIExpressHost PCIExpressHost;
|
||||||
|
typedef struct PCIHostState PCIHostState;
|
||||||
typedef struct PCMCIACardState PCMCIACardState;
|
typedef struct PCMCIACardState PCMCIACardState;
|
||||||
typedef struct MouseTransformInfo MouseTransformInfo;
|
typedef struct PixelFormat PixelFormat;
|
||||||
typedef struct uWireSlave uWireSlave;
|
typedef struct PropertyInfo PropertyInfo;
|
||||||
typedef struct I2SCodec I2SCodec;
|
typedef struct Property Property;
|
||||||
typedef struct SSIBus SSIBus;
|
typedef struct QEMUBH QEMUBH;
|
||||||
typedef struct EventNotifier EventNotifier;
|
typedef struct QemuConsole QemuConsole;
|
||||||
typedef struct VirtIODevice VirtIODevice;
|
typedef struct QEMUFile QEMUFile;
|
||||||
|
typedef struct QEMUMachine QEMUMachine;
|
||||||
typedef struct QEMUSGList QEMUSGList;
|
typedef struct QEMUSGList QEMUSGList;
|
||||||
typedef struct QEMUSizedBuffer QEMUSizedBuffer;
|
typedef struct QEMUSizedBuffer QEMUSizedBuffer;
|
||||||
typedef struct SHPCDevice SHPCDevice;
|
typedef struct QEMUTimerListGroup QEMUTimerListGroup;
|
||||||
typedef struct FWCfgState FWCfgState;
|
typedef struct QEMUTimer QEMUTimer;
|
||||||
typedef struct PcGuestInfo PcGuestInfo;
|
|
||||||
typedef struct Range Range;
|
typedef struct Range Range;
|
||||||
typedef struct AdapterInfo AdapterInfo;
|
typedef struct SerialState SerialState;
|
||||||
|
typedef struct SHPCDevice SHPCDevice;
|
||||||
|
typedef struct SMBusDevice SMBusDevice;
|
||||||
|
typedef struct SSIBus SSIBus;
|
||||||
|
typedef struct uWireSlave uWireSlave;
|
||||||
|
typedef struct VirtIODevice VirtIODevice;
|
||||||
|
typedef struct Visitor Visitor;
|
||||||
|
|
||||||
#endif /* QEMU_TYPEDEFS_H */
|
#endif /* QEMU_TYPEDEFS_H */
|
||||||
|
|
|
@ -1533,7 +1533,7 @@
|
||||||
#
|
#
|
||||||
# Change the VNC server password.
|
# Change the VNC server password.
|
||||||
#
|
#
|
||||||
# @target: the new password to use with VNC authentication
|
# @password: the new password to use with VNC authentication
|
||||||
#
|
#
|
||||||
# Since: 1.1
|
# Since: 1.1
|
||||||
#
|
#
|
||||||
|
|
|
@ -3825,9 +3825,7 @@ void qemu_chr_delete(CharDriverState *chr)
|
||||||
}
|
}
|
||||||
g_free(chr->filename);
|
g_free(chr->filename);
|
||||||
g_free(chr->label);
|
g_free(chr->label);
|
||||||
if (chr->opts) {
|
qemu_opts_del(chr->opts);
|
||||||
qemu_opts_del(chr->opts);
|
|
||||||
}
|
|
||||||
g_free(chr);
|
g_free(chr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3820,13 +3820,13 @@ Press left mouse button.
|
||||||
-> { "execute": "x-input-send-event",
|
-> { "execute": "x-input-send-event",
|
||||||
"arguments": { "console": 0,
|
"arguments": { "console": 0,
|
||||||
"events": [ { "type": "btn",
|
"events": [ { "type": "btn",
|
||||||
"data" : { "down": true, "button": "Left" } } } }
|
"data" : { "down": true, "button": "Left" } } ] } }
|
||||||
<- { "return": {} }
|
<- { "return": {} }
|
||||||
|
|
||||||
-> { "execute": "x-input-send-event",
|
-> { "execute": "x-input-send-event",
|
||||||
"arguments": { "console": 0,
|
"arguments": { "console": 0,
|
||||||
"events": [ { "type": "btn",
|
"events": [ { "type": "btn",
|
||||||
"data" : { "down": false, "button": "Left" } } } }
|
"data" : { "down": false, "button": "Left" } } ] } }
|
||||||
<- { "return": {} }
|
<- { "return": {} }
|
||||||
|
|
||||||
Example (2):
|
Example (2):
|
||||||
|
|
|
@ -23,7 +23,6 @@ my $email_usename = 1;
|
||||||
my $email_maintainer = 1;
|
my $email_maintainer = 1;
|
||||||
my $email_list = 1;
|
my $email_list = 1;
|
||||||
my $email_subscriber_list = 0;
|
my $email_subscriber_list = 0;
|
||||||
my $email_git_penguin_chiefs = 0;
|
|
||||||
my $email_git = 0;
|
my $email_git = 0;
|
||||||
my $email_git_all_signature_types = 0;
|
my $email_git_all_signature_types = 0;
|
||||||
my $email_git_blame = 0;
|
my $email_git_blame = 0;
|
||||||
|
@ -60,21 +59,6 @@ my $exit = 0;
|
||||||
my %commit_author_hash;
|
my %commit_author_hash;
|
||||||
my %commit_signer_hash;
|
my %commit_signer_hash;
|
||||||
|
|
||||||
my @penguin_chief = ();
|
|
||||||
push(@penguin_chief, "Linus Torvalds:torvalds\@linux-foundation.org");
|
|
||||||
#Andrew wants in on most everything - 2009/01/14
|
|
||||||
#push(@penguin_chief, "Andrew Morton:akpm\@linux-foundation.org");
|
|
||||||
|
|
||||||
my @penguin_chief_names = ();
|
|
||||||
foreach my $chief (@penguin_chief) {
|
|
||||||
if ($chief =~ m/^(.*):(.*)/) {
|
|
||||||
my $chief_name = $1;
|
|
||||||
my $chief_addr = $2;
|
|
||||||
push(@penguin_chief_names, $chief_name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
my $penguin_chiefs = "\(" . join("|", @penguin_chief_names) . "\)";
|
|
||||||
|
|
||||||
# Signature types of people who are either
|
# Signature types of people who are either
|
||||||
# a) responsible for the code in question, or
|
# a) responsible for the code in question, or
|
||||||
# b) familiar enough with it to give relevant feedback
|
# b) familiar enough with it to give relevant feedback
|
||||||
|
@ -187,7 +171,6 @@ if (!GetOptions(
|
||||||
'git-blame!' => \$email_git_blame,
|
'git-blame!' => \$email_git_blame,
|
||||||
'git-blame-signatures!' => \$email_git_blame_signatures,
|
'git-blame-signatures!' => \$email_git_blame_signatures,
|
||||||
'git-fallback!' => \$email_git_fallback,
|
'git-fallback!' => \$email_git_fallback,
|
||||||
'git-chief-penguins!' => \$email_git_penguin_chiefs,
|
|
||||||
'git-min-signatures=i' => \$email_git_min_signatures,
|
'git-min-signatures=i' => \$email_git_min_signatures,
|
||||||
'git-max-maintainers=i' => \$email_git_max_maintainers,
|
'git-max-maintainers=i' => \$email_git_max_maintainers,
|
||||||
'git-min-percent=i' => \$email_git_min_percent,
|
'git-min-percent=i' => \$email_git_min_percent,
|
||||||
|
@ -256,7 +239,7 @@ if ($sections) {
|
||||||
|
|
||||||
if ($email &&
|
if ($email &&
|
||||||
($email_maintainer + $email_list + $email_subscriber_list +
|
($email_maintainer + $email_list + $email_subscriber_list +
|
||||||
$email_git + $email_git_penguin_chiefs + $email_git_blame) == 0) {
|
$email_git + $email_git_blame) == 0) {
|
||||||
die "$P: Please select at least 1 email option\n";
|
die "$P: Please select at least 1 email option\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -671,19 +654,6 @@ sub get_maintainers {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach my $chief (@penguin_chief) {
|
|
||||||
if ($chief =~ m/^(.*):(.*)/) {
|
|
||||||
my $email_address;
|
|
||||||
|
|
||||||
$email_address = format_email($1, $2, $email_usename);
|
|
||||||
if ($email_git_penguin_chiefs) {
|
|
||||||
push(@email_to, [$email_address, 'chief penguin']);
|
|
||||||
} else {
|
|
||||||
@email_to = grep($_->[0] !~ /${email_address}/, @email_to);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach my $email (@file_emails) {
|
foreach my $email (@file_emails) {
|
||||||
my ($name, $address) = parse_email($email);
|
my ($name, $address) = parse_email($email);
|
||||||
|
|
||||||
|
@ -740,7 +710,6 @@ MAINTAINER field selection options:
|
||||||
--git-all-signature-types => include signers regardless of signature type
|
--git-all-signature-types => include signers regardless of signature type
|
||||||
or use only ${signature_pattern} signers (default: $email_git_all_signature_types)
|
or use only ${signature_pattern} signers (default: $email_git_all_signature_types)
|
||||||
--git-fallback => use git when no exact MAINTAINERS pattern (default: $email_git_fallback)
|
--git-fallback => use git when no exact MAINTAINERS pattern (default: $email_git_fallback)
|
||||||
--git-chief-penguins => include ${penguin_chiefs}
|
|
||||||
--git-min-signatures => number of signatures required (default: $email_git_min_signatures)
|
--git-min-signatures => number of signatures required (default: $email_git_min_signatures)
|
||||||
--git-max-maintainers => maximum maintainers to add (default: $email_git_max_maintainers)
|
--git-max-maintainers => maximum maintainers to add (default: $email_git_max_maintainers)
|
||||||
--git-min-percent => minimum percentage of commits required (default: $email_git_min_percent)
|
--git-min-percent => minimum percentage of commits required (default: $email_git_min_percent)
|
||||||
|
@ -1281,10 +1250,6 @@ sub vcs_find_signers {
|
||||||
save_commits_by_author(@lines) if ($interactive);
|
save_commits_by_author(@lines) if ($interactive);
|
||||||
save_commits_by_signer(@lines) if ($interactive);
|
save_commits_by_signer(@lines) if ($interactive);
|
||||||
|
|
||||||
if (!$email_git_penguin_chiefs) {
|
|
||||||
@signatures = grep(!/${penguin_chiefs}/i, @signatures);
|
|
||||||
}
|
|
||||||
|
|
||||||
my ($types_ref, $signers_ref) = extract_formatted_signatures(@signatures);
|
my ($types_ref, $signers_ref) = extract_formatted_signatures(@signatures);
|
||||||
|
|
||||||
return ($commits, @$signers_ref);
|
return ($commits, @$signers_ref);
|
||||||
|
@ -1296,10 +1261,6 @@ sub vcs_find_author {
|
||||||
|
|
||||||
@lines = &{$VCS_cmds{"execute_cmd"}}($cmd);
|
@lines = &{$VCS_cmds{"execute_cmd"}}($cmd);
|
||||||
|
|
||||||
if (!$email_git_penguin_chiefs) {
|
|
||||||
@lines = grep(!/${penguin_chiefs}/i, @lines);
|
|
||||||
}
|
|
||||||
|
|
||||||
return @lines if !@lines;
|
return @lines if !@lines;
|
||||||
|
|
||||||
my @authors = ();
|
my @authors = ();
|
||||||
|
@ -1925,10 +1886,6 @@ sub vcs_file_blame {
|
||||||
|
|
||||||
@lines = &{$VCS_cmds{"execute_cmd"}}($cmd);
|
@lines = &{$VCS_cmds{"execute_cmd"}}($cmd);
|
||||||
|
|
||||||
if (!$email_git_penguin_chiefs) {
|
|
||||||
@lines = grep(!/${penguin_chiefs}/i, @lines);
|
|
||||||
}
|
|
||||||
|
|
||||||
last if !@lines;
|
last if !@lines;
|
||||||
|
|
||||||
my @authors = ();
|
my @authors = ();
|
||||||
|
|
|
@ -648,7 +648,7 @@ static void do_ext_interrupt(CPUS390XState *env)
|
||||||
cpu_abort(CPU(cpu), "Ext int w/o ext mask\n");
|
cpu_abort(CPU(cpu), "Ext int w/o ext mask\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (env->ext_index < 0 || env->ext_index > MAX_EXT_QUEUE) {
|
if (env->ext_index < 0 || env->ext_index >= MAX_EXT_QUEUE) {
|
||||||
cpu_abort(CPU(cpu), "Ext queue overrun: %d\n", env->ext_index);
|
cpu_abort(CPU(cpu), "Ext queue overrun: %d\n", env->ext_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -696,7 +696,7 @@ static void do_io_interrupt(CPUS390XState *env)
|
||||||
if (env->io_index[isc] < 0) {
|
if (env->io_index[isc] < 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (env->io_index[isc] > MAX_IO_QUEUE) {
|
if (env->io_index[isc] >= MAX_IO_QUEUE) {
|
||||||
cpu_abort(CPU(cpu), "I/O queue overrun for isc %d: %d\n",
|
cpu_abort(CPU(cpu), "I/O queue overrun for isc %d: %d\n",
|
||||||
isc, env->io_index[isc]);
|
isc, env->io_index[isc]);
|
||||||
}
|
}
|
||||||
|
@ -754,7 +754,7 @@ static void do_mchk_interrupt(CPUS390XState *env)
|
||||||
cpu_abort(CPU(cpu), "Machine check w/o mchk mask\n");
|
cpu_abort(CPU(cpu), "Machine check w/o mchk mask\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (env->mchk_index < 0 || env->mchk_index > MAX_MCHK_QUEUE) {
|
if (env->mchk_index < 0 || env->mchk_index >= MAX_MCHK_QUEUE) {
|
||||||
cpu_abort(CPU(cpu), "Mchk queue overrun: %d\n", env->mchk_index);
|
cpu_abort(CPU(cpu), "Mchk queue overrun: %d\n", env->mchk_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -373,7 +373,7 @@ void hbitmap_free(HBitmap *hb)
|
||||||
|
|
||||||
HBitmap *hbitmap_alloc(uint64_t size, int granularity)
|
HBitmap *hbitmap_alloc(uint64_t size, int granularity)
|
||||||
{
|
{
|
||||||
HBitmap *hb = g_malloc0(sizeof (struct HBitmap));
|
HBitmap *hb = g_new0(struct HBitmap, 1);
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
assert(granularity >= 0 && granularity < 64);
|
assert(granularity >= 0 && granularity < 64);
|
||||||
|
@ -384,7 +384,7 @@ HBitmap *hbitmap_alloc(uint64_t size, int granularity)
|
||||||
hb->granularity = granularity;
|
hb->granularity = granularity;
|
||||||
for (i = HBITMAP_LEVELS; i-- > 0; ) {
|
for (i = HBITMAP_LEVELS; i-- > 0; ) {
|
||||||
size = MAX((size + BITS_PER_LONG - 1) >> BITS_PER_LEVEL, 1);
|
size = MAX((size + BITS_PER_LONG - 1) >> BITS_PER_LEVEL, 1);
|
||||||
hb->levels[i] = g_malloc0(size * sizeof(unsigned long));
|
hb->levels[i] = g_new0(unsigned long, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We necessarily have free bits in level 0 due to the definition
|
/* We necessarily have free bits in level 0 due to the definition
|
||||||
|
|
|
@ -253,7 +253,7 @@ unsigned iov_copy(struct iovec *dst_iov, unsigned int dst_iov_cnt,
|
||||||
|
|
||||||
void qemu_iovec_init(QEMUIOVector *qiov, int alloc_hint)
|
void qemu_iovec_init(QEMUIOVector *qiov, int alloc_hint)
|
||||||
{
|
{
|
||||||
qiov->iov = g_malloc(alloc_hint * sizeof(struct iovec));
|
qiov->iov = g_new(struct iovec, alloc_hint);
|
||||||
qiov->niov = 0;
|
qiov->niov = 0;
|
||||||
qiov->nalloc = alloc_hint;
|
qiov->nalloc = alloc_hint;
|
||||||
qiov->size = 0;
|
qiov->size = 0;
|
||||||
|
@ -277,7 +277,7 @@ void qemu_iovec_add(QEMUIOVector *qiov, void *base, size_t len)
|
||||||
|
|
||||||
if (qiov->niov == qiov->nalloc) {
|
if (qiov->niov == qiov->nalloc) {
|
||||||
qiov->nalloc = 2 * qiov->nalloc + 1;
|
qiov->nalloc = 2 * qiov->nalloc + 1;
|
||||||
qiov->iov = g_realloc(qiov->iov, qiov->nalloc * sizeof(struct iovec));
|
qiov->iov = g_renew(struct iovec, qiov->iov, qiov->nalloc);
|
||||||
}
|
}
|
||||||
qiov->iov[qiov->niov].iov_base = base;
|
qiov->iov[qiov->niov].iov_base = base;
|
||||||
qiov->iov[qiov->niov].iov_len = len;
|
qiov->iov[qiov->niov].iov_len = len;
|
||||||
|
|
94
util/uri.c
94
util/uri.c
|
@ -225,7 +225,7 @@ rfc3986_parse_scheme(URI *uri, const char **str) {
|
||||||
while (ISA_ALPHA(cur) || ISA_DIGIT(cur) ||
|
while (ISA_ALPHA(cur) || ISA_DIGIT(cur) ||
|
||||||
(*cur == '+') || (*cur == '-') || (*cur == '.')) cur++;
|
(*cur == '+') || (*cur == '-') || (*cur == '.')) cur++;
|
||||||
if (uri != NULL) {
|
if (uri != NULL) {
|
||||||
if (uri->scheme != NULL) g_free(uri->scheme);
|
g_free(uri->scheme);
|
||||||
uri->scheme = g_strndup(*str, cur - *str);
|
uri->scheme = g_strndup(*str, cur - *str);
|
||||||
}
|
}
|
||||||
*str = cur;
|
*str = cur;
|
||||||
|
@ -262,8 +262,7 @@ rfc3986_parse_fragment(URI *uri, const char **str)
|
||||||
((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur))))
|
((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur))))
|
||||||
NEXT(cur);
|
NEXT(cur);
|
||||||
if (uri != NULL) {
|
if (uri != NULL) {
|
||||||
if (uri->fragment != NULL)
|
g_free(uri->fragment);
|
||||||
g_free(uri->fragment);
|
|
||||||
if (uri->cleanup & 2)
|
if (uri->cleanup & 2)
|
||||||
uri->fragment = g_strndup(*str, cur - *str);
|
uri->fragment = g_strndup(*str, cur - *str);
|
||||||
else
|
else
|
||||||
|
@ -298,8 +297,7 @@ rfc3986_parse_query(URI *uri, const char **str)
|
||||||
((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur))))
|
((uri != NULL) && (uri->cleanup & 1) && (IS_UNWISE(cur))))
|
||||||
NEXT(cur);
|
NEXT(cur);
|
||||||
if (uri != NULL) {
|
if (uri != NULL) {
|
||||||
if (uri->query != NULL)
|
g_free(uri->query);
|
||||||
g_free (uri->query);
|
|
||||||
uri->query = g_strndup (*str, cur - *str);
|
uri->query = g_strndup (*str, cur - *str);
|
||||||
}
|
}
|
||||||
*str = cur;
|
*str = cur;
|
||||||
|
@ -360,7 +358,7 @@ rfc3986_parse_user_info(URI *uri, const char **str)
|
||||||
NEXT(cur);
|
NEXT(cur);
|
||||||
if (*cur == '@') {
|
if (*cur == '@') {
|
||||||
if (uri != NULL) {
|
if (uri != NULL) {
|
||||||
if (uri->user != NULL) g_free(uri->user);
|
g_free(uri->user);
|
||||||
if (uri->cleanup & 2)
|
if (uri->cleanup & 2)
|
||||||
uri->user = g_strndup(*str, cur - *str);
|
uri->user = g_strndup(*str, cur - *str);
|
||||||
else
|
else
|
||||||
|
@ -473,9 +471,9 @@ not_ipv4:
|
||||||
NEXT(cur);
|
NEXT(cur);
|
||||||
found:
|
found:
|
||||||
if (uri != NULL) {
|
if (uri != NULL) {
|
||||||
if (uri->authority != NULL) g_free(uri->authority);
|
g_free(uri->authority);
|
||||||
uri->authority = NULL;
|
uri->authority = NULL;
|
||||||
if (uri->server != NULL) g_free(uri->server);
|
g_free(uri->server);
|
||||||
if (cur != host) {
|
if (cur != host) {
|
||||||
if (uri->cleanup & 2)
|
if (uri->cleanup & 2)
|
||||||
uri->server = g_strndup(host, cur - host);
|
uri->server = g_strndup(host, cur - host);
|
||||||
|
@ -585,7 +583,7 @@ rfc3986_parse_path_ab_empty(URI *uri, const char **str)
|
||||||
if (ret != 0) return(ret);
|
if (ret != 0) return(ret);
|
||||||
}
|
}
|
||||||
if (uri != NULL) {
|
if (uri != NULL) {
|
||||||
if (uri->path != NULL) g_free(uri->path);
|
g_free(uri->path);
|
||||||
if (*str != cur) {
|
if (*str != cur) {
|
||||||
if (uri->cleanup & 2)
|
if (uri->cleanup & 2)
|
||||||
uri->path = g_strndup(*str, cur - *str);
|
uri->path = g_strndup(*str, cur - *str);
|
||||||
|
@ -631,7 +629,7 @@ rfc3986_parse_path_absolute(URI *uri, const char **str)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (uri != NULL) {
|
if (uri != NULL) {
|
||||||
if (uri->path != NULL) g_free(uri->path);
|
g_free(uri->path);
|
||||||
if (cur != *str) {
|
if (cur != *str) {
|
||||||
if (uri->cleanup & 2)
|
if (uri->cleanup & 2)
|
||||||
uri->path = g_strndup(*str, cur - *str);
|
uri->path = g_strndup(*str, cur - *str);
|
||||||
|
@ -673,7 +671,7 @@ rfc3986_parse_path_rootless(URI *uri, const char **str)
|
||||||
if (ret != 0) return(ret);
|
if (ret != 0) return(ret);
|
||||||
}
|
}
|
||||||
if (uri != NULL) {
|
if (uri != NULL) {
|
||||||
if (uri->path != NULL) g_free(uri->path);
|
g_free(uri->path);
|
||||||
if (cur != *str) {
|
if (cur != *str) {
|
||||||
if (uri->cleanup & 2)
|
if (uri->cleanup & 2)
|
||||||
uri->path = g_strndup(*str, cur - *str);
|
uri->path = g_strndup(*str, cur - *str);
|
||||||
|
@ -715,7 +713,7 @@ rfc3986_parse_path_no_scheme(URI *uri, const char **str)
|
||||||
if (ret != 0) return(ret);
|
if (ret != 0) return(ret);
|
||||||
}
|
}
|
||||||
if (uri != NULL) {
|
if (uri != NULL) {
|
||||||
if (uri->path != NULL) g_free(uri->path);
|
g_free(uri->path);
|
||||||
if (cur != *str) {
|
if (cur != *str) {
|
||||||
if (uri->cleanup & 2)
|
if (uri->cleanup & 2)
|
||||||
uri->path = g_strndup(*str, cur - *str);
|
uri->path = g_strndup(*str, cur - *str);
|
||||||
|
@ -769,7 +767,7 @@ rfc3986_parse_hier_part(URI *uri, const char **str)
|
||||||
} else {
|
} else {
|
||||||
/* path-empty is effectively empty */
|
/* path-empty is effectively empty */
|
||||||
if (uri != NULL) {
|
if (uri != NULL) {
|
||||||
if (uri->path != NULL) g_free(uri->path);
|
g_free(uri->path);
|
||||||
uri->path = NULL;
|
uri->path = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -812,7 +810,7 @@ rfc3986_parse_relative_ref(URI *uri, const char *str) {
|
||||||
} else {
|
} else {
|
||||||
/* path-empty is effectively empty */
|
/* path-empty is effectively empty */
|
||||||
if (uri != NULL) {
|
if (uri != NULL) {
|
||||||
if (uri->path != NULL) g_free(uri->path);
|
g_free(uri->path);
|
||||||
uri->path = NULL;
|
uri->path = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1006,8 +1004,7 @@ URI *
|
||||||
uri_new(void) {
|
uri_new(void) {
|
||||||
URI *ret;
|
URI *ret;
|
||||||
|
|
||||||
ret = (URI *) g_malloc(sizeof(URI));
|
ret = g_new0(URI, 1);
|
||||||
memset(ret, 0, sizeof(URI));
|
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1285,21 +1282,21 @@ static void
|
||||||
uri_clean(URI *uri) {
|
uri_clean(URI *uri) {
|
||||||
if (uri == NULL) return;
|
if (uri == NULL) return;
|
||||||
|
|
||||||
if (uri->scheme != NULL) g_free(uri->scheme);
|
g_free(uri->scheme);
|
||||||
uri->scheme = NULL;
|
uri->scheme = NULL;
|
||||||
if (uri->server != NULL) g_free(uri->server);
|
g_free(uri->server);
|
||||||
uri->server = NULL;
|
uri->server = NULL;
|
||||||
if (uri->user != NULL) g_free(uri->user);
|
g_free(uri->user);
|
||||||
uri->user = NULL;
|
uri->user = NULL;
|
||||||
if (uri->path != NULL) g_free(uri->path);
|
g_free(uri->path);
|
||||||
uri->path = NULL;
|
uri->path = NULL;
|
||||||
if (uri->fragment != NULL) g_free(uri->fragment);
|
g_free(uri->fragment);
|
||||||
uri->fragment = NULL;
|
uri->fragment = NULL;
|
||||||
if (uri->opaque != NULL) g_free(uri->opaque);
|
g_free(uri->opaque);
|
||||||
uri->opaque = NULL;
|
uri->opaque = NULL;
|
||||||
if (uri->authority != NULL) g_free(uri->authority);
|
g_free(uri->authority);
|
||||||
uri->authority = NULL;
|
uri->authority = NULL;
|
||||||
if (uri->query != NULL) g_free(uri->query);
|
g_free(uri->query);
|
||||||
uri->query = NULL;
|
uri->query = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1711,10 +1708,8 @@ uri_resolve(const char *uri, const char *base) {
|
||||||
/*
|
/*
|
||||||
* the base fragment must be ignored
|
* the base fragment must be ignored
|
||||||
*/
|
*/
|
||||||
if (bas->fragment != NULL) {
|
g_free(bas->fragment);
|
||||||
g_free(bas->fragment);
|
bas->fragment = NULL;
|
||||||
bas->fragment = NULL;
|
|
||||||
}
|
|
||||||
val = uri_to_string(bas);
|
val = uri_to_string(bas);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
@ -1736,24 +1731,21 @@ uri_resolve(const char *uri, const char *base) {
|
||||||
goto done;
|
goto done;
|
||||||
if ((ref->scheme == NULL) && (ref->path == NULL) &&
|
if ((ref->scheme == NULL) && (ref->path == NULL) &&
|
||||||
((ref->authority == NULL) && (ref->server == NULL))) {
|
((ref->authority == NULL) && (ref->server == NULL))) {
|
||||||
if (bas->scheme != NULL)
|
res->scheme = g_strdup(bas->scheme);
|
||||||
res->scheme = g_strdup(bas->scheme);
|
|
||||||
if (bas->authority != NULL)
|
if (bas->authority != NULL)
|
||||||
res->authority = g_strdup(bas->authority);
|
res->authority = g_strdup(bas->authority);
|
||||||
else if (bas->server != NULL) {
|
else if (bas->server != NULL) {
|
||||||
res->server = g_strdup(bas->server);
|
res->server = g_strdup(bas->server);
|
||||||
if (bas->user != NULL)
|
res->user = g_strdup(bas->user);
|
||||||
res->user = g_strdup(bas->user);
|
res->port = bas->port;
|
||||||
res->port = bas->port;
|
|
||||||
}
|
}
|
||||||
if (bas->path != NULL)
|
res->path = g_strdup(bas->path);
|
||||||
res->path = g_strdup(bas->path);
|
if (ref->query != NULL) {
|
||||||
if (ref->query != NULL)
|
|
||||||
res->query = g_strdup (ref->query);
|
res->query = g_strdup (ref->query);
|
||||||
else if (bas->query != NULL)
|
} else {
|
||||||
res->query = g_strdup(bas->query);
|
res->query = g_strdup(bas->query);
|
||||||
if (ref->fragment != NULL)
|
}
|
||||||
res->fragment = g_strdup(ref->fragment);
|
res->fragment = g_strdup(ref->fragment);
|
||||||
goto step_7;
|
goto step_7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1767,13 +1759,10 @@ uri_resolve(const char *uri, const char *base) {
|
||||||
val = uri_to_string(ref);
|
val = uri_to_string(ref);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
if (bas->scheme != NULL)
|
res->scheme = g_strdup(bas->scheme);
|
||||||
res->scheme = g_strdup(bas->scheme);
|
|
||||||
|
|
||||||
if (ref->query != NULL)
|
res->query = g_strdup(ref->query);
|
||||||
res->query = g_strdup(ref->query);
|
res->fragment = g_strdup(ref->fragment);
|
||||||
if (ref->fragment != NULL)
|
|
||||||
res->fragment = g_strdup(ref->fragment);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 4) If the authority component is defined, then the reference is a
|
* 4) If the authority component is defined, then the reference is a
|
||||||
|
@ -1787,20 +1776,17 @@ uri_resolve(const char *uri, const char *base) {
|
||||||
res->authority = g_strdup(ref->authority);
|
res->authority = g_strdup(ref->authority);
|
||||||
else {
|
else {
|
||||||
res->server = g_strdup(ref->server);
|
res->server = g_strdup(ref->server);
|
||||||
if (ref->user != NULL)
|
res->user = g_strdup(ref->user);
|
||||||
res->user = g_strdup(ref->user);
|
|
||||||
res->port = ref->port;
|
res->port = ref->port;
|
||||||
}
|
}
|
||||||
if (ref->path != NULL)
|
res->path = g_strdup(ref->path);
|
||||||
res->path = g_strdup(ref->path);
|
|
||||||
goto step_7;
|
goto step_7;
|
||||||
}
|
}
|
||||||
if (bas->authority != NULL)
|
if (bas->authority != NULL)
|
||||||
res->authority = g_strdup(bas->authority);
|
res->authority = g_strdup(bas->authority);
|
||||||
else if (bas->server != NULL) {
|
else if (bas->server != NULL) {
|
||||||
res->server = g_strdup(bas->server);
|
res->server = g_strdup(bas->server);
|
||||||
if (bas->user != NULL)
|
res->user = g_strdup(bas->user);
|
||||||
res->user = g_strdup(bas->user);
|
|
||||||
res->port = bas->port;
|
res->port = bas->port;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue