X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fjournal%2Fjournal-vacuum.c;h=b2b47d69b2af815972133869c5618fffe165dc9c;hb=14f862a508ee64466fa8b3f036797d472f4d03ed;hp=c73ad8f3938f8ce015322b85b8b589c126ff03f8;hpb=289f910e16d0a962e128979b67fed5f2ef668e00;p=elogind.git diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c index c73ad8f39..b2b47d69b 100644 --- a/src/journal/journal-vacuum.c +++ b/src/journal/journal-vacuum.c @@ -180,9 +180,7 @@ int journal_directory_vacuum( return -errno; for (;;) { - int k; struct dirent *de; - union dirent_storage buf; size_t q; struct stat st; char *p; @@ -190,9 +188,10 @@ int journal_directory_vacuum( sd_id128_t seqnum_id; bool have_seqnum; - k = readdir_r(d, &buf.de, &de); - if (k != 0) { - r = -k; + errno = 0; + de = readdir(d); + if (!de && errno != 0) { + r = -errno; goto finish; } @@ -278,6 +277,8 @@ int journal_directory_vacuum( } else if (errno != ENOENT) log_warning("Failed to delete %s/%s: %m", directory, p); + free(p); + continue; } @@ -297,8 +298,7 @@ int journal_directory_vacuum( n_list ++; } - if (n_list > 0) - qsort(list, n_list, sizeof(struct vacuum_info), vacuum_compare); + qsort_safe(list, n_list, sizeof(struct vacuum_info), vacuum_compare); for (i = 0; i < n_list; i++) { struct statvfs ss;