qapi qga: Elide redundant has_FOO in generated C
The has_FOO for pointer-valued FOO are redundant, except for arrays. They are also a nuisance to work with. Recent commit "qapi: Start to elide redundant has_FOO in generated C" provided the means to elide them step by step. This is the step for qga/qapi-schema.json. Said commit explains the transformation in more detail. The invariant violations mentioned there do not occur here. Cc: Michael Roth <michael.roth@amd.com> Cc: Konstantin Kostiuk <kkostiuk@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20221104160712.3005652-30-armbru@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
parent
41462e4106
commit
91eab32a3f
|
@ -71,7 +71,7 @@ static void ga_wait_child(pid_t pid, int *status, Error **errp)
|
||||||
g_assert(rpid == pid);
|
g_assert(rpid == pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp)
|
void qmp_guest_shutdown(const char *mode, Error **errp)
|
||||||
{
|
{
|
||||||
const char *shutdown_flag;
|
const char *shutdown_flag;
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
|
@ -93,7 +93,7 @@ void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
slog("guest-shutdown called, mode: %s", mode);
|
slog("guest-shutdown called, mode: %s", mode);
|
||||||
if (!has_mode || strcmp(mode, "powerdown") == 0) {
|
if (!mode || strcmp(mode, "powerdown") == 0) {
|
||||||
shutdown_flag = powerdown_flag;
|
shutdown_flag = powerdown_flag;
|
||||||
} else if (strcmp(mode, "halt") == 0) {
|
} else if (strcmp(mode, "halt") == 0) {
|
||||||
shutdown_flag = halt_flag;
|
shutdown_flag = halt_flag;
|
||||||
|
@ -404,14 +404,14 @@ end:
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t qmp_guest_file_open(const char *path, bool has_mode, const char *mode,
|
int64_t qmp_guest_file_open(const char *path, const char *mode,
|
||||||
Error **errp)
|
Error **errp)
|
||||||
{
|
{
|
||||||
FILE *fh;
|
FILE *fh;
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
int64_t handle;
|
int64_t handle;
|
||||||
|
|
||||||
if (!has_mode) {
|
if (!mode) {
|
||||||
mode = "r";
|
mode = "r";
|
||||||
}
|
}
|
||||||
slog("guest-file-open called, filepath: %s, mode: %s", path, mode);
|
slog("guest-file-open called, filepath: %s, mode: %s", path, mode);
|
||||||
|
@ -1037,7 +1037,6 @@ static bool build_guest_fsinfo_for_ccw_dev(char const *syspath,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
disk->has_ccw_address = true;
|
|
||||||
disk->ccw_address = g_new0(GuestCCWAddress, 1);
|
disk->ccw_address = g_new0(GuestCCWAddress, 1);
|
||||||
disk->ccw_address->cssid = cssid;
|
disk->ccw_address->cssid = cssid;
|
||||||
disk->ccw_address->ssid = ssid;
|
disk->ccw_address->ssid = ssid;
|
||||||
|
@ -1084,12 +1083,10 @@ static void build_guest_fsinfo_for_real_device(char const *syspath,
|
||||||
devnode = udev_device_get_devnode(udevice);
|
devnode = udev_device_get_devnode(udevice);
|
||||||
if (devnode != NULL) {
|
if (devnode != NULL) {
|
||||||
disk->dev = g_strdup(devnode);
|
disk->dev = g_strdup(devnode);
|
||||||
disk->has_dev = true;
|
|
||||||
}
|
}
|
||||||
serial = udev_device_get_property_value(udevice, "ID_SERIAL");
|
serial = udev_device_get_property_value(udevice, "ID_SERIAL");
|
||||||
if (serial != NULL && *serial != 0) {
|
if (serial != NULL && *serial != 0) {
|
||||||
disk->serial = g_strdup(serial);
|
disk->serial = g_strdup(serial);
|
||||||
disk->has_serial = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1108,7 +1105,7 @@ static void build_guest_fsinfo_for_real_device(char const *syspath,
|
||||||
has_hwinf = false;
|
has_hwinf = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (has_hwinf || disk->has_dev || disk->has_serial) {
|
if (has_hwinf || disk->dev || disk->serial) {
|
||||||
QAPI_LIST_PREPEND(fs->disk, disk);
|
QAPI_LIST_PREPEND(fs->disk, disk);
|
||||||
} else {
|
} else {
|
||||||
qapi_free_GuestDiskAddress(disk);
|
qapi_free_GuestDiskAddress(disk);
|
||||||
|
@ -1411,7 +1408,6 @@ static void get_nvme_smart(GuestDiskInfo *disk)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
disk->has_smart = true;
|
|
||||||
disk->smart = g_new0(GuestDiskSmart, 1);
|
disk->smart = g_new0(GuestDiskSmart, 1);
|
||||||
disk->smart->type = GUEST_DISK_BUS_TYPE_NVME;
|
disk->smart->type = GUEST_DISK_BUS_TYPE_NVME;
|
||||||
|
|
||||||
|
@ -1449,7 +1445,7 @@ static void get_nvme_smart(GuestDiskInfo *disk)
|
||||||
|
|
||||||
static void get_disk_smart(GuestDiskInfo *disk)
|
static void get_disk_smart(GuestDiskInfo *disk)
|
||||||
{
|
{
|
||||||
if (disk->has_address
|
if (disk->address
|
||||||
&& (disk->address->bus_type == GUEST_DISK_BUS_TYPE_NVME)) {
|
&& (disk->address->bus_type == GUEST_DISK_BUS_TYPE_NVME)) {
|
||||||
get_nvme_smart(disk);
|
get_nvme_smart(disk);
|
||||||
}
|
}
|
||||||
|
@ -1502,7 +1498,6 @@ GuestDiskInfoList *qmp_guest_get_disks(Error **errp)
|
||||||
disk->name = dev_name;
|
disk->name = dev_name;
|
||||||
disk->partition = false;
|
disk->partition = false;
|
||||||
disk->alias = get_alias_for_syspath(disk_dir);
|
disk->alias = get_alias_for_syspath(disk_dir);
|
||||||
disk->has_alias = (disk->alias != NULL);
|
|
||||||
QAPI_LIST_PREPEND(ret, disk);
|
QAPI_LIST_PREPEND(ret, disk);
|
||||||
|
|
||||||
/* Get address for non-virtual devices */
|
/* Get address for non-virtual devices */
|
||||||
|
@ -1522,8 +1517,6 @@ GuestDiskInfoList *qmp_guest_get_disks(Error **errp)
|
||||||
error_get_pretty(local_err));
|
error_get_pretty(local_err));
|
||||||
error_free(local_err);
|
error_free(local_err);
|
||||||
local_err = NULL;
|
local_err = NULL;
|
||||||
} else if (disk->address != NULL) {
|
|
||||||
disk->has_address = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1641,7 +1634,6 @@ qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error **errp)
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
result->error = g_strdup_printf("failed to open: %s",
|
result->error = g_strdup_printf("failed to open: %s",
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
result->has_error = true;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1656,7 +1648,6 @@ qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error **errp)
|
||||||
r.minlen = has_minimum ? minimum : 0;
|
r.minlen = has_minimum ? minimum : 0;
|
||||||
ret = ioctl(fd, FITRIM, &r);
|
ret = ioctl(fd, FITRIM, &r);
|
||||||
if (ret == -1) {
|
if (ret == -1) {
|
||||||
result->has_error = true;
|
|
||||||
if (errno == ENOTTY || errno == EOPNOTSUPP) {
|
if (errno == ENOTTY || errno == EOPNOTSUPP) {
|
||||||
result->error = g_strdup("trim not supported");
|
result->error = g_strdup("trim not supported");
|
||||||
} else {
|
} else {
|
||||||
|
@ -2967,7 +2958,7 @@ GuestNetworkInterfaceList *qmp_guest_network_get_interfaces(Error **errp)
|
||||||
QAPI_LIST_APPEND(tail, info);
|
QAPI_LIST_APPEND(tail, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!info->has_hardware_address) {
|
if (!info->hardware_address) {
|
||||||
if (!guest_get_hw_addr(ifa, mac_addr, &obtained, errp)) {
|
if (!guest_get_hw_addr(ifa, mac_addr, &obtained, errp)) {
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
@ -2977,7 +2968,6 @@ GuestNetworkInterfaceList *qmp_guest_network_get_interfaces(Error **errp)
|
||||||
(int) mac_addr[0], (int) mac_addr[1],
|
(int) mac_addr[0], (int) mac_addr[1],
|
||||||
(int) mac_addr[2], (int) mac_addr[3],
|
(int) mac_addr[2], (int) mac_addr[3],
|
||||||
(int) mac_addr[4], (int) mac_addr[5]);
|
(int) mac_addr[4], (int) mac_addr[5]);
|
||||||
info->has_hardware_address = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3037,14 +3027,12 @@ GuestNetworkInterfaceList *qmp_guest_network_get_interfaces(Error **errp)
|
||||||
|
|
||||||
info->has_ip_addresses = true;
|
info->has_ip_addresses = true;
|
||||||
|
|
||||||
if (!info->has_statistics) {
|
if (!info->statistics) {
|
||||||
interface_stat = g_malloc0(sizeof(*interface_stat));
|
interface_stat = g_malloc0(sizeof(*interface_stat));
|
||||||
if (guest_get_network_stats(info->name, interface_stat) == -1) {
|
if (guest_get_network_stats(info->name, interface_stat) == -1) {
|
||||||
info->has_statistics = false;
|
|
||||||
g_free(interface_stat);
|
g_free(interface_stat);
|
||||||
} else {
|
} else {
|
||||||
info->statistics = interface_stat;
|
info->statistics = interface_stat;
|
||||||
info->has_statistics = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3351,11 +3339,8 @@ GuestOSInfo *qmp_guest_get_osinfo(Error **errp)
|
||||||
if (uname(&kinfo) != 0) {
|
if (uname(&kinfo) != 0) {
|
||||||
error_setg_errno(errp, errno, "uname failed");
|
error_setg_errno(errp, errno, "uname failed");
|
||||||
} else {
|
} else {
|
||||||
info->has_kernel_version = true;
|
|
||||||
info->kernel_version = g_strdup(kinfo.version);
|
info->kernel_version = g_strdup(kinfo.version);
|
||||||
info->has_kernel_release = true;
|
|
||||||
info->kernel_release = g_strdup(kinfo.release);
|
info->kernel_release = g_strdup(kinfo.release);
|
||||||
info->has_machine = true;
|
|
||||||
info->machine = g_strdup(kinfo.machine);
|
info->machine = g_strdup(kinfo.machine);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3375,7 +3360,6 @@ GuestOSInfo *qmp_guest_get_osinfo(Error **errp)
|
||||||
value = g_key_file_get_value(osrelease, "os-release", osfield, NULL); \
|
value = g_key_file_get_value(osrelease, "os-release", osfield, NULL); \
|
||||||
if (value != NULL) { \
|
if (value != NULL) { \
|
||||||
ga_osrelease_replace_special(value); \
|
ga_osrelease_replace_special(value); \
|
||||||
info->has_ ## field = true; \
|
|
||||||
info->field = value; \
|
info->field = value; \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
|
@ -193,8 +193,7 @@ static void handle_set_nonblocking(HANDLE fh)
|
||||||
SetNamedPipeHandleState(fh, &pipe_state, NULL, NULL);
|
SetNamedPipeHandleState(fh, &pipe_state, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t qmp_guest_file_open(const char *path, bool has_mode,
|
int64_t qmp_guest_file_open(const char *path, const char *mode, Error **errp)
|
||||||
const char *mode, Error **errp)
|
|
||||||
{
|
{
|
||||||
int64_t fd = -1;
|
int64_t fd = -1;
|
||||||
HANDLE fh;
|
HANDLE fh;
|
||||||
|
@ -206,7 +205,7 @@ int64_t qmp_guest_file_open(const char *path, bool has_mode,
|
||||||
GError *gerr = NULL;
|
GError *gerr = NULL;
|
||||||
wchar_t *w_path = NULL;
|
wchar_t *w_path = NULL;
|
||||||
|
|
||||||
if (!has_mode) {
|
if (!mode) {
|
||||||
mode = "r";
|
mode = "r";
|
||||||
}
|
}
|
||||||
slog("guest-file-open called, filepath: %s, mode: %s", path, mode);
|
slog("guest-file-open called, filepath: %s, mode: %s", path, mode);
|
||||||
|
@ -317,14 +316,14 @@ static void execute_async(DWORD WINAPI (*func)(LPVOID), LPVOID opaque,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp)
|
void qmp_guest_shutdown(const char *mode, Error **errp)
|
||||||
{
|
{
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
UINT shutdown_flag = EWX_FORCE;
|
UINT shutdown_flag = EWX_FORCE;
|
||||||
|
|
||||||
slog("guest-shutdown called, mode: %s", mode);
|
slog("guest-shutdown called, mode: %s", mode);
|
||||||
|
|
||||||
if (!has_mode || strcmp(mode, "powerdown") == 0) {
|
if (!mode || strcmp(mode, "powerdown") == 0) {
|
||||||
shutdown_flag |= EWX_POWEROFF;
|
shutdown_flag |= EWX_POWEROFF;
|
||||||
} else if (strcmp(mode, "halt") == 0) {
|
} else if (strcmp(mode, "halt") == 0) {
|
||||||
shutdown_flag |= EWX_SHUTDOWN;
|
shutdown_flag |= EWX_SHUTDOWN;
|
||||||
|
@ -833,7 +832,6 @@ static void get_disk_properties(HANDLE vol_h, GuestDiskAddress *disk,
|
||||||
g_debug("serial number \"%s\"", serial);
|
g_debug("serial number \"%s\"", serial);
|
||||||
if (*serial != 0) {
|
if (*serial != 0) {
|
||||||
disk->serial = g_strndup(serial, len);
|
disk->serial = g_strndup(serial, len);
|
||||||
disk->has_serial = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
out_free:
|
out_free:
|
||||||
|
@ -951,7 +949,6 @@ static GuestDiskAddressList *build_guest_disk_info(char *guid, Error **errp)
|
||||||
/* Possibly CD-ROM or a shared drive. Try to pass the volume */
|
/* Possibly CD-ROM or a shared drive. Try to pass the volume */
|
||||||
g_debug("volume not on disk");
|
g_debug("volume not on disk");
|
||||||
disk = g_new0(GuestDiskAddress, 1);
|
disk = g_new0(GuestDiskAddress, 1);
|
||||||
disk->has_dev = true;
|
|
||||||
disk->dev = g_strdup(name);
|
disk->dev = g_strdup(name);
|
||||||
get_single_disk_info(0xffffffff, disk, &local_err);
|
get_single_disk_info(0xffffffff, disk, &local_err);
|
||||||
if (local_err) {
|
if (local_err) {
|
||||||
|
@ -983,7 +980,6 @@ static GuestDiskAddressList *build_guest_disk_info(char *guid, Error **errp)
|
||||||
* See also Naming Files, Paths and Namespaces:
|
* See also Naming Files, Paths and Namespaces:
|
||||||
* https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#win32-device-namespaces
|
* https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#win32-device-namespaces
|
||||||
*/
|
*/
|
||||||
disk->has_dev = true;
|
|
||||||
disk->dev = g_strdup_printf("\\\\.\\PhysicalDrive%lu",
|
disk->dev = g_strdup_printf("\\\\.\\PhysicalDrive%lu",
|
||||||
extents->Extents[i].DiskNumber);
|
extents->Extents[i].DiskNumber);
|
||||||
|
|
||||||
|
@ -1078,7 +1074,6 @@ GuestDiskInfoList *qmp_guest_get_disks(Error **errp)
|
||||||
|
|
||||||
g_debug(" number: %lu", sdn.DeviceNumber);
|
g_debug(" number: %lu", sdn.DeviceNumber);
|
||||||
address = g_new0(GuestDiskAddress, 1);
|
address = g_new0(GuestDiskAddress, 1);
|
||||||
address->has_dev = true;
|
|
||||||
address->dev = g_strdup(disk->name);
|
address->dev = g_strdup(disk->name);
|
||||||
get_single_disk_info(sdn.DeviceNumber, address, &local_err);
|
get_single_disk_info(sdn.DeviceNumber, address, &local_err);
|
||||||
if (local_err) {
|
if (local_err) {
|
||||||
|
@ -1089,7 +1084,6 @@ GuestDiskInfoList *qmp_guest_get_disks(Error **errp)
|
||||||
address = NULL;
|
address = NULL;
|
||||||
} else {
|
} else {
|
||||||
disk->address = address;
|
disk->address = address;
|
||||||
disk->has_address = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QAPI_LIST_PREPEND(ret, disk);
|
QAPI_LIST_PREPEND(ret, disk);
|
||||||
|
@ -1369,7 +1363,6 @@ qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error **errp)
|
||||||
g_free(uc_path);
|
g_free(uc_path);
|
||||||
|
|
||||||
if (!path) {
|
if (!path) {
|
||||||
res->has_error = true;
|
|
||||||
res->error = g_strdup(gerr->message);
|
res->error = g_strdup(gerr->message);
|
||||||
g_error_free(gerr);
|
g_error_free(gerr);
|
||||||
break;
|
break;
|
||||||
|
@ -1387,7 +1380,6 @@ qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error **errp)
|
||||||
if (!g_spawn_sync(NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL,
|
if (!g_spawn_sync(NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL,
|
||||||
&out /* stdout */, NULL /* stdin */,
|
&out /* stdout */, NULL /* stdin */,
|
||||||
NULL, &gerr)) {
|
NULL, &gerr)) {
|
||||||
res->has_error = true;
|
|
||||||
res->error = g_strdup(gerr->message);
|
res->error = g_strdup(gerr->message);
|
||||||
g_error_free(gerr);
|
g_error_free(gerr);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1403,7 +1395,6 @@ qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error **errp)
|
||||||
if (g_strstr_len(lines[i], -1, "(0x") == NULL) {
|
if (g_strstr_len(lines[i], -1, "(0x") == NULL) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
res->has_error = true;
|
|
||||||
res->error = g_strdup(lines[i]);
|
res->error = g_strdup(lines[i]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1683,8 +1674,6 @@ GuestNetworkInterfaceList *qmp_guest_network_get_interfaces(Error **errp)
|
||||||
(int) mac_addr[0], (int) mac_addr[1],
|
(int) mac_addr[0], (int) mac_addr[1],
|
||||||
(int) mac_addr[2], (int) mac_addr[3],
|
(int) mac_addr[2], (int) mac_addr[3],
|
||||||
(int) mac_addr[4], (int) mac_addr[5]);
|
(int) mac_addr[4], (int) mac_addr[5]);
|
||||||
|
|
||||||
info->has_hardware_address = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
head_addr = NULL;
|
head_addr = NULL;
|
||||||
|
@ -1713,15 +1702,13 @@ GuestNetworkInterfaceList *qmp_guest_network_get_interfaces(Error **errp)
|
||||||
info->has_ip_addresses = true;
|
info->has_ip_addresses = true;
|
||||||
info->ip_addresses = head_addr;
|
info->ip_addresses = head_addr;
|
||||||
}
|
}
|
||||||
if (!info->has_statistics) {
|
if (!info->statistics) {
|
||||||
interface_stat = g_malloc0(sizeof(*interface_stat));
|
interface_stat = g_malloc0(sizeof(*interface_stat));
|
||||||
if (guest_get_network_stats(addr->AdapterName,
|
if (guest_get_network_stats(addr->AdapterName, interface_stat)
|
||||||
interface_stat) == -1) {
|
== -1) {
|
||||||
info->has_statistics = false;
|
|
||||||
g_free(interface_stat);
|
g_free(interface_stat);
|
||||||
} else {
|
} else {
|
||||||
info->statistics = interface_stat;
|
info->statistics = interface_stat;
|
||||||
info->has_statistics = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2113,7 +2100,6 @@ GuestUserList *qmp_guest_get_users(Error **errp)
|
||||||
|
|
||||||
user->user = g_strdup(info->UserName);
|
user->user = g_strdup(info->UserName);
|
||||||
user->domain = g_strdup(info->Domain);
|
user->domain = g_strdup(info->Domain);
|
||||||
user->has_domain = true;
|
|
||||||
|
|
||||||
user->login_time = login_time;
|
user->login_time = login_time;
|
||||||
|
|
||||||
|
@ -2332,29 +2318,19 @@ GuestOSInfo *qmp_guest_get_osinfo(Error **errp)
|
||||||
|
|
||||||
info = g_new0(GuestOSInfo, 1);
|
info = g_new0(GuestOSInfo, 1);
|
||||||
|
|
||||||
info->has_kernel_version = true;
|
|
||||||
info->kernel_version = g_strdup_printf("%lu.%lu",
|
info->kernel_version = g_strdup_printf("%lu.%lu",
|
||||||
os_version.dwMajorVersion,
|
os_version.dwMajorVersion,
|
||||||
os_version.dwMinorVersion);
|
os_version.dwMinorVersion);
|
||||||
info->has_kernel_release = true;
|
|
||||||
info->kernel_release = g_strdup_printf("%lu",
|
info->kernel_release = g_strdup_printf("%lu",
|
||||||
os_version.dwBuildNumber);
|
os_version.dwBuildNumber);
|
||||||
info->has_machine = true;
|
|
||||||
info->machine = ga_get_current_arch();
|
info->machine = ga_get_current_arch();
|
||||||
|
|
||||||
info->has_id = true;
|
|
||||||
info->id = g_strdup("mswindows");
|
info->id = g_strdup("mswindows");
|
||||||
info->has_name = true;
|
|
||||||
info->name = g_strdup("Microsoft Windows");
|
info->name = g_strdup("Microsoft Windows");
|
||||||
info->has_pretty_name = true;
|
|
||||||
info->pretty_name = product_name;
|
info->pretty_name = product_name;
|
||||||
info->has_version = true;
|
|
||||||
info->version = ga_get_win_name(&os_version, false);
|
info->version = ga_get_win_name(&os_version, false);
|
||||||
info->has_version_id = true;
|
|
||||||
info->version_id = ga_get_win_name(&os_version, true);
|
info->version_id = ga_get_win_name(&os_version, true);
|
||||||
info->has_variant = true;
|
|
||||||
info->variant = g_strdup(server ? "server" : "client");
|
info->variant = g_strdup(server ? "server" : "client");
|
||||||
info->has_variant_id = true;
|
|
||||||
info->variant_id = g_strdup(server ? "server" : "client");
|
info->variant_id = g_strdup(server ? "server" : "client");
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
|
@ -2478,7 +2454,6 @@ GuestDeviceInfoList *qmp_guest_get_devices(Error **errp)
|
||||||
device_id = g_match_info_fetch(match_info, 2);
|
device_id = g_match_info_fetch(match_info, 2);
|
||||||
|
|
||||||
device->id = g_new0(GuestDeviceId, 1);
|
device->id = g_new0(GuestDeviceId, 1);
|
||||||
device->has_id = true;
|
|
||||||
device->id->type = GUEST_DEVICE_TYPE_PCI;
|
device->id->type = GUEST_DEVICE_TYPE_PCI;
|
||||||
id = &device->id->u.pci;
|
id = &device->id->u.pci;
|
||||||
id->vendor_id = g_ascii_strtoull(vendor_id, NULL, 16);
|
id->vendor_id = g_ascii_strtoull(vendor_id, NULL, 16);
|
||||||
|
@ -2502,7 +2477,6 @@ GuestDeviceInfoList *qmp_guest_get_devices(Error **errp)
|
||||||
error_setg(errp, "conversion to utf8 failed (driver version)");
|
error_setg(errp, "conversion to utf8 failed (driver version)");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
device->has_driver_version = true;
|
|
||||||
|
|
||||||
date = (LPFILETIME)cm_get_property(dev_info_data.DevInst,
|
date = (LPFILETIME)cm_get_property(dev_info_data.DevInst,
|
||||||
&qga_DEVPKEY_Device_DriverDate, &cm_type);
|
&qga_DEVPKEY_Device_DriverDate, &cm_type);
|
||||||
|
|
|
@ -206,14 +206,12 @@ GuestExecStatus *qmp_guest_exec_status(int64_t pid, Error **errp)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (gei->out.length > 0) {
|
if (gei->out.length > 0) {
|
||||||
ges->has_out_data = true;
|
|
||||||
ges->out_data = g_base64_encode(gei->out.data, gei->out.length);
|
ges->out_data = g_base64_encode(gei->out.data, gei->out.length);
|
||||||
g_free(gei->out.data);
|
g_free(gei->out.data);
|
||||||
ges->has_out_truncated = gei->out.truncated;
|
ges->has_out_truncated = gei->out.truncated;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gei->err.length > 0) {
|
if (gei->err.length > 0) {
|
||||||
ges->has_err_data = true;
|
|
||||||
ges->err_data = g_base64_encode(gei->err.data, gei->err.length);
|
ges->err_data = g_base64_encode(gei->err.data, gei->err.length);
|
||||||
g_free(gei->err.data);
|
g_free(gei->err.data);
|
||||||
ges->has_err_truncated = gei->err.truncated;
|
ges->has_err_truncated = gei->err.truncated;
|
||||||
|
@ -385,7 +383,7 @@ close:
|
||||||
GuestExec *qmp_guest_exec(const char *path,
|
GuestExec *qmp_guest_exec(const char *path,
|
||||||
bool has_arg, strList *arg,
|
bool has_arg, strList *arg,
|
||||||
bool has_env, strList *env,
|
bool has_env, strList *env,
|
||||||
bool has_input_data, const char *input_data,
|
const char *input_data,
|
||||||
bool has_capture_output, bool capture_output,
|
bool has_capture_output, bool capture_output,
|
||||||
Error **errp)
|
Error **errp)
|
||||||
{
|
{
|
||||||
|
@ -406,7 +404,7 @@ GuestExec *qmp_guest_exec(const char *path,
|
||||||
arglist.value = (char *)path;
|
arglist.value = (char *)path;
|
||||||
arglist.next = has_arg ? arg : NULL;
|
arglist.next = has_arg ? arg : NULL;
|
||||||
|
|
||||||
if (has_input_data) {
|
if (input_data) {
|
||||||
input = qbase64_decode(input_data, -1, &ninput, errp);
|
input = qbase64_decode(input_data, -1, &ninput, errp);
|
||||||
if (!input) {
|
if (!input) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -423,7 +421,7 @@ GuestExec *qmp_guest_exec(const char *path,
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = g_spawn_async_with_pipes(NULL, argv, envp, flags,
|
ret = g_spawn_async_with_pipes(NULL, argv, envp, flags,
|
||||||
guest_exec_task_setup, NULL, &pid, has_input_data ? &in_fd : NULL,
|
guest_exec_task_setup, NULL, &pid, input_data ? &in_fd : NULL,
|
||||||
has_output ? &out_fd : NULL, has_output ? &err_fd : NULL, &gerr);
|
has_output ? &out_fd : NULL, has_output ? &err_fd : NULL, &gerr);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
error_setg(errp, QERR_QGA_COMMAND_FAILED, gerr->message);
|
error_setg(errp, QERR_QGA_COMMAND_FAILED, gerr->message);
|
||||||
|
@ -438,7 +436,7 @@ GuestExec *qmp_guest_exec(const char *path,
|
||||||
gei->has_output = has_output;
|
gei->has_output = has_output;
|
||||||
g_child_watch_add(pid, guest_exec_child_watch, gei);
|
g_child_watch_add(pid, guest_exec_child_watch, gei);
|
||||||
|
|
||||||
if (has_input_data) {
|
if (input_data) {
|
||||||
gei->in.data = g_steal_pointer(&input);
|
gei->in.data = g_steal_pointer(&input);
|
||||||
gei->in.size = ninput;
|
gei->in.size = ninput;
|
||||||
#ifdef G_OS_WIN32
|
#ifdef G_OS_WIN32
|
||||||
|
@ -547,7 +545,6 @@ GuestTimezone *qmp_guest_get_timezone(Error **errp)
|
||||||
info->offset = g_time_zone_get_offset(tz, intv);
|
info->offset = g_time_zone_get_offset(tz, intv);
|
||||||
name = g_time_zone_get_abbreviation(tz, intv);
|
name = g_time_zone_get_abbreviation(tz, intv);
|
||||||
if (name != NULL) {
|
if (name != NULL) {
|
||||||
info->has_zone = true;
|
|
||||||
info->zone = g_strdup(name);
|
info->zone = g_strdup(name);
|
||||||
}
|
}
|
||||||
g_time_zone_unref(tz);
|
g_time_zone_unref(tz);
|
||||||
|
|
|
@ -758,8 +758,7 @@ class QAPISchemaObjectTypeMember(QAPISchemaMember):
|
||||||
def need_has(self):
|
def need_has(self):
|
||||||
assert self.type
|
assert self.type
|
||||||
# Temporary hack to support dropping the has_FOO in reviewable chunks
|
# Temporary hack to support dropping the has_FOO in reviewable chunks
|
||||||
opt_out = [
|
opt_out = []
|
||||||
'qga/qapi-schema.json']
|
|
||||||
if self.info and any(self.info.fname.endswith(mod)
|
if self.info and any(self.info.fname.endswith(mod)
|
||||||
for mod in opt_out):
|
for mod in opt_out):
|
||||||
return self.optional
|
return self.optional
|
||||||
|
|
Loading…
Reference in New Issue