From 8d5bbe782ffd72c8cd1ccf2c32118344c4c059d6 Mon Sep 17 00:00:00 2001 From: IanSB Date: Sun, 5 Jan 2020 00:20:44 +0000 Subject: [PATCH] Fix save profile bug that sometimes stopped changes from being saved --- src/filesystem.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/filesystem.c b/src/filesystem.c index 5c88bb38..18199a0f 100644 --- a/src/filesystem.c +++ b/src/filesystem.c @@ -685,6 +685,7 @@ int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size) return result; } + // see if entries in buffer differ from comparison buffer comparison_buffer[bytes_read] = 0; strcpy(temp_buffer, buffer); char *temp_pointer = temp_buffer; @@ -709,6 +710,29 @@ int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size) temp_pointer += strlen(temp_pointer) + eol_size; } + // now see if entries in comparison buffer differ from buffer in case entries are present in original profile but removed from new profile + strcpy(temp_buffer, comparison_buffer); + temp_pointer = temp_buffer; + while (temp_pointer[0] != 0) { + char *eol = strstr(temp_pointer, "\r\n"); + int eol_size = 0; + if (eol != NULL) { + eol[0] = 0; + eol[1] = 0; + eol_size = 2; + } else { + eol = strchr(temp_pointer, '\n'); + if (eol != NULL) { + eol[0] = 0; + eol_size = 1; + } + } + if (strstr(buffer, temp_pointer) == NULL) { + different = 1; + } + temp_pointer += strlen(temp_pointer) + eol_size; + } + if (different) { log_info("Saving file %s", path);