ACK: [PATCH 03/20] fwts_log_scan: move fwts_log_find_changes

Alex Hung alex.hung at canonical.com
Wed Jun 27 22:46:49 UTC 2018


On 2018-06-20 05:14 AM, Marcello Sylvester Bauer wrote:
> Signed-off-by: Marcello Sylvester Bauer <info at marcellobauer.com>
> ---
>   src/lib/include/fwts_log_scan.h |  1 +
>   src/lib/src/fwts_klog.c         | 46 +----------------------------------
>   src/lib/src/fwts_log_scan.c     | 54 +++++++++++++++++++++++++++++++++++++++++
>   3 files changed, 56 insertions(+), 45 deletions(-)
> 
> diff --git a/src/lib/include/fwts_log_scan.h b/src/lib/include/fwts_log_scan.h
> index b410db9b..34ac07e7 100644
> --- a/src/lib/include/fwts_log_scan.h
> +++ b/src/lib/include/fwts_log_scan.h
> @@ -39,5 +39,6 @@ typedef struct {
>   } fwts_log_pattern;
>   
>   void       fwts_log_free(fwts_list *list);
> +fwts_list *fwts_log_find_changes(fwts_list *log_old, fwts_list *log_new);
>   
>   #endif
> diff --git a/src/lib/src/fwts_klog.c b/src/lib/src/fwts_klog.c
> index 3083fb45..bf5ac20f 100644
> --- a/src/lib/src/fwts_klog.c
> +++ b/src/lib/src/fwts_klog.c
> @@ -51,51 +51,7 @@ void fwts_klog_free(fwts_list *klog)
>    */
>   fwts_list *fwts_klog_find_changes(fwts_list *klog_old, fwts_list *klog_new)
>   {
> -	fwts_list_link *l_old, *l_new = NULL;
> -	fwts_list *klog_diff;
> -
> -	if (klog_new == NULL) {
> -		/* Nothing new to compare, return nothing */
> -		return NULL;
> -	}
> -	if ((klog_diff = fwts_list_new()) == NULL)
> -		return NULL;
> -
> -	if (klog_old == NULL) {
> -		/* Nothing in old log, so clone all of new list */
> -		l_new = klog_new->head;
> -	} else {
> -		fwts_list_link *l_old_last = NULL;
> -
> -		/* Clone just the new differences */
> -
> -		/* Find last item in old log */
> -		fwts_list_foreach(l_old, klog_old)
> -			l_old_last = l_old;
> -
> -		if (l_old_last) {
> -			/* And now look for that last line in the new log */
> -			char *old = fwts_list_data(char *, l_old_last);
> -			fwts_list_foreach(l_new, klog_new) {
> -				const char *new = fwts_list_data(char *, l_new);
> -
> -				if (!strcmp(new, old)) {
> -					/* Found last line that matches, bump to next */
> -					l_new = l_new->next;
> -					break;
> -				}
> -			}
> -		}
> -	}
> -
> -	/* Clone the new unique lines to the klog_diff list */
> -	for (; l_new; l_new = l_new->next) {
> -		if (fwts_list_append(klog_diff, l_new->data) == NULL) {
> -			fwts_list_free(klog_diff, NULL);
> -			return NULL;
> -		}
> -	}
> -	return klog_diff;
> +	return fwts_log_find_changes(klog_old, klog_new);
>   }
>   
>   /*
> diff --git a/src/lib/src/fwts_log_scan.c b/src/lib/src/fwts_log_scan.c
> index 7ec81f6b..c5d174cb 100644
> --- a/src/lib/src/fwts_log_scan.c
> +++ b/src/lib/src/fwts_log_scan.c
> @@ -37,3 +37,57 @@ void fwts_log_free(fwts_list *log)
>   {
>   	fwts_text_list_free(log);
>   }
> +
> +/*
> + *  fwts_log_find_changes()
> + *      find new lines added to log, clone them from new list
> + *      must be freed with fwts_list_free(log_diff, NULL);
> + */
> +fwts_list *fwts_log_find_changes(fwts_list *log_old, fwts_list *log_new)
> +{
> +        fwts_list_link *l_old, *l_new = NULL;
> +        fwts_list *log_diff;
> +
> +        if (log_new == NULL) {
> +                /* Nothing new to compare, return nothing */
> +                return NULL;
> +        }
> +        if ((log_diff = fwts_list_new()) == NULL)
> +                return NULL;
> +
> +        if (log_old == NULL) {
> +                /* Nothing in old log, so clone all of new list */
> +                l_new = log_new->head;
> +        } else {
> +                fwts_list_link *l_old_last = NULL;
> +
> +                /* Clone just the new differences */
> +
> +                /* Find last item in old log */
> +                fwts_list_foreach(l_old, log_old)
> +                        l_old_last = l_old;
> +
> +                if (l_old_last) {
> +                        /* And now look for that last line in the new log */
> +                        char *old = fwts_list_data(char *, l_old_last);
> +                        fwts_list_foreach(l_new, log_new) {
> +                                const char *new = fwts_list_data(char *, l_new);
> +
> +                                if (!strcmp(new, old)) {
> +                                        /* Found last line that matches, bump to next */
> +                                        l_new = l_new->next;
> +                                        break;
> +                                }
> +                        }
> +                }
> +        }
> +
> +        /* Clone the new unique lines to the log_diff list */
> +        for (; l_new; l_new = l_new->next) {
> +                if (fwts_list_append(log_diff, l_new->data) == NULL) {
> +                        fwts_list_free(log_diff, NULL);
> +                        return NULL;
> +                }
> +        }
> +        return log_diff;
> +}
> 


Acked-by: Alex Hung <alex.hung at canonical.com>



More information about the fwts-devel mailing list