qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3] qga: Add `guest-get-timezone` command


From: Eric Blake
Subject: Re: [Qemu-devel] [PATCH v3] qga: Add `guest-get-timezone` command
Date: Thu, 23 Mar 2017 09:08:35 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0

On 03/22/2017 07:06 PM, Vinzenz 'evilissimo' Feenstra wrote:
> From: Vinzenz Feenstra <address@hidden>
> 
> Adds a new command `guest-get-timezone` reporting the currently
> configured timezone on the system. The information on what timezone is
> currently is configured is useful in case of Windows VMs where the
> offset of the hardware clock is required to have the same offset. This
> can be used for management systems like `oVirt` to detect the timezone
> difference and warn administrators of the misconfiguration.
> 
> Signed-off-by: Vinzenz Feenstra <address@hidden>
> ---
>  qga/commands.c       | 42 ++++++++++++++++++++++++++++++++++++++++++
>  qga/qapi-schema.json | 26 ++++++++++++++++++++++++++
>  2 files changed, 68 insertions(+)
> 
> diff --git a/qga/commands.c b/qga/commands.c
> index 4d92946..1debc91 100644
> --- a/qga/commands.c
> +++ b/qga/commands.c
> @@ -499,3 +499,45 @@ int ga_parse_whence(GuestFileWhence *whence, Error 
> **errp)
>      error_setg(errp, "invalid whence code %"PRId64, whence->u.value);
>      return -1;
>  }
> +
> +GuestTimezone *qmp_guest_get_timezone(Error **errp)
> +{
> +    GuestTimezone *info = g_new0(GuestTimezone, 1);
> +    if (info == NULL) {

Dead code. g_new0() can't fail (or rather, if you are out of memory, it
exit()s so that you can't reach subsequent code)


> +
> +    gint32 interval = g_time_zone_find_interval(tz, G_TIME_TYPE_STANDARD, 0);
> +    if (interval != -1) {
> +        gchar const *name = g_time_zone_get_abbreviation(tz, interval);
> +        if (name != NULL) {
> +            info->offset = g_time_zone_get_offset(tz, interval);
> +            info->zone = g_strdup(name);

Should name be optional?  Offsets are the important part, while the name
is just informative.  So I hate to see us giving up just because someone
picked an offset that has no name.


> +++ b/qga/qapi-schema.json
> @@ -1042,3 +1042,29 @@
>    'data':    { 'path': 'str', '*arg': ['str'], '*env': ['str'],
>                 '*input-data': 'str', '*capture-output': 'bool' },
>    'returns': 'GuestExec' }
> +
> +
> +##
> +# @GuestTimezone:
> +#
> +# @zone:    Timezone name
> +# @offset:  Offset to UTC in seconds. For western timezones the offset has a
> +#           negative value and for eastern the offset is positive value
> +#
> +# Since: 2.10
> +##
> +{ 'struct': 'GuestTimezone',
> +  'data':   { 'zone': 'str', 'offset': 'int' } }

To make the name optional, use '*zone', and be sure to set has_zone in
the C code.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]