[PATCH 2/6] lib: fwts_log: add fwts_log_get_filenames()

Keng-Yu Lin kengyu at canonical.com
Wed Jun 20 15:00:59 UTC 2012


On Wed, Jun 20, 2012 at 7:30 PM, Colin King <colin.king at canonical.com> wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> Add function to return back a string of all the log filenames being
> used.  For multi-log logging, this returns multiple filenames
> separated by a space, e.g. "results.log results.html results.json"
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
>  src/lib/include/fwts_log.h |    1 +
>  src/lib/src/fwts_log.c     |   40 ++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 41 insertions(+)
>
> diff --git a/src/lib/include/fwts_log.h b/src/lib/include/fwts_log.h
> index 513bf88..22ec70e 100644
> --- a/src/lib/include/fwts_log.h
> +++ b/src/lib/include/fwts_log.h
> @@ -144,6 +144,7 @@ int           fwts_log_line_number(fwts_log *log);
>  void     fwts_log_set_line_width(const int width);
>  void     fwts_log_section_begin(fwts_log *log, const char *name);
>  void     fwts_log_section_end(fwts_log *log);
> +char     *fwts_log_get_filenames(const char *filename, fwts_log_type type);
>  fwts_log_filename_type fwts_log_get_filename_type(const char *name);
>
>  static inline int fwts_log_type_count(fwts_log_type type)
> diff --git a/src/lib/src/fwts_log.c b/src/lib/src/fwts_log.c
> index 3ab7930..d946c31 100644
> --- a/src/lib/src/fwts_log.c
> +++ b/src/lib/src/fwts_log.c
> @@ -562,6 +562,46 @@ fwts_log_filename_type fwts_log_get_filename_type(const char *filename)
>  }
>
>  /*
> + *  fwts_log_filenames()
> + *     return string of all the log filenames that will be used
> + */
> +char *fwts_log_get_filenames(const char *filename, fwts_log_type type)
> +{
> +       unsigned int i;
> +       char *filenames = NULL;
> +       char *tmp;
> +       size_t len = 0;
> +
> +       for (i=0; i<32; i++) {
> +               fwts_log_type mask = 1 << i;
> +               if (type & mask) {
> +                       if ((tmp = fwts_log_filename(filename, mask)) == NULL)
> +                               return NULL;
> +
> +                       if (filenames) {
> +                               len += strlen(tmp) + 2;
> +                               if ((filenames = realloc(filenames, len)) == NULL) {
> +                                       free(tmp);
> +                                       return NULL;
> +                               }
> +                               strcat(filenames, " ");
> +                               strcat(filenames, tmp);
> +                       } else {
> +                               len = strlen(tmp) + 1;
> +                               if ((filenames = malloc(len)) == NULL) {
> +                                       free(tmp);
> +                                       return NULL;
> +                               }
> +                               strcpy(filenames, tmp);
> +                       }
> +                       free(tmp);
> +               }
> +       }
> +
> +       return filenames;
> +}
> +
> +/*
>  *  fwts_log_open()
>  *     open a log file. if name is stderr or stdout, then attach log to these
>  *     streams.
> --
> 1.7.10.4
>
Acked-by: Keng-Yu Lin <kengyu at canonical.com>


More information about the fwts-devel mailing list