| From b0902e36108b49e6bc88d6b251cc2f8cffcd5a13 Mon Sep 17 00:00:00 2001 |
| From: Ricardo Ribalda <ricardo@ribalda.com> |
| Date: Sun, 5 Apr 2020 11:40:30 +0000 |
| Subject: [PATCH] pseudo: On a DB fixup remove files that do not exist anymore |
| |
| If the user decides to fix a database, remove the files that do not |
| exist anymore. |
| If only DB test is selected do not change the behaviour (return error). |
| |
| Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com> |
| Upstream-Status: Submitted [https://lists.openembedded.org/g/openembedded-core/message/137045] |
| --- |
| pseudo.c | 13 ++++++++++--- |
| 1 file changed, 10 insertions(+), 3 deletions(-) |
| |
| diff --git a/pseudo.c b/pseudo.c |
| index 0f5850e..98e5b0c 100644 |
| --- a/pseudo.c |
| +++ b/pseudo.c |
| @@ -1087,9 +1087,15 @@ pseudo_db_check(int fix) { |
| int fixup_needed = 0; |
| pseudo_debug(PDBGF_DB, "Checking <%s>\n", m->path); |
| if (lstat(m->path, &buf)) { |
| - errors = EXIT_FAILURE; |
| - pseudo_diag("can't stat <%s>\n", m->path); |
| - continue; |
| + if (!fix) { |
| + pseudo_diag("can't stat <%s>\n", m->path); |
| + errors = EXIT_FAILURE; |
| + continue; |
| + } else { |
| + pseudo_debug(PDBGF_DB, "can't stat <%s>\n", m->path); |
| + fixup_needed = 2; |
| + goto do_fixup; |
| + } |
| } |
| /* can't check for device type mismatches, uid/gid, or |
| * permissions, because those are the very things we |
| @@ -1125,6 +1131,7 @@ pseudo_db_check(int fix) { |
| S_ISDIR(m->mode)); |
| fixup_needed = 2; |
| } |
| + do_fixup: |
| if (fixup_needed) { |
| /* in fixup mode, either delete (mismatches) or |
| * correct (dev/ino). |
| -- |
| 2.21.1 |
| |