Re: [PATCH 2/4] util: virrotatingfile: Introduce virRotatingFileWriterAppendTimestamp

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

 



On 2/29/24 07:46, Shaleen Bathla wrote:
> virRotatingFileWriterAppendTimestamp function appends timestamp to a
> file.
> 
> Signed-off-by: Shaleen Bathla <shaleen.bathla@xxxxxxxxxx>
> ---
>  src/util/virrotatingfile.c | 35 +++++++++++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
> 
> diff --git a/src/util/virrotatingfile.c b/src/util/virrotatingfile.c
> index b02a88c4b08d..2a44c9bf93e3 100644
> --- a/src/util/virrotatingfile.c
> +++ b/src/util/virrotatingfile.c
> @@ -30,6 +30,7 @@
>  #include "virerror.h"
>  #include "virfile.h"
>  #include "virlog.h"
> +#include "virtime.h"
>  
>  VIR_LOG_INIT("util.rotatingfile");
>  
> @@ -406,6 +407,40 @@ virRotatingFileWriterRollover(virRotatingFileWriter *file)
>  }
>  
>  
> +/**
> + * virRotatingFileWriterAppendTimestamp:
> + * @file: the file context
> + *
> + * Append current timestamp with a trailing ' ' char to @file
> + *
> + * Returns 0 on success and -1 on error
> + */
> +static ssize_t
> +virRotatingFileWriterAppendTimestamp(virRotatingFileWriter* file)
> +{
> +    char* timestamp = NULL;
> +    size_t len = 0;
> +
> +    if (!(timestamp = virTimeStringNow())) {
> +        g_free(timestamp);
> +        return -1;
> +    }
> +
> +    len = VIR_TIME_STRING_BUFLEN;
> +    timestamp = g_realloc(timestamp, len+1);
> +    timestamp[len-1] = ' ';
> +    timestamp[len] = '\0';

Firstly, to avoid having to call g_free() everywhere you can declare the
variable like this:

  g_autofree char *timestamp = NULL;

but in this specific case, when we know how long the string is going to
be (and that it's relatively short), might as well allocate the buffer
on the stack:

  char timestamp[VIR_TIME_STRING_BUFLEN + 1] = { 0 };

and then call virTimeStringNowRaw() instead. This avoid necessary g_realloc.

> +
> +    if (virRotatingFileWriterAppend(file, timestamp, len) != len) {

So eventually, virRotatingFileWriterAppend() would call
virRotatingFileWriterAppendTimestamp() which would then call
virRotatingFileWriterAppend() again?

I wonder whether the timestamp can't be prepended to the string caller
wants to write in virRotatingFileWriterAppend().

Michal
_______________________________________________
Devel mailing list -- devel@xxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxx




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux