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