|
|
@@ -399,7 +399,7 @@ writerecord(FILE *file, const char *filename,
|
|
|
}
|
|
|
|
|
|
void
|
|
|
-writedb(const char *filename, bool available, bool mustsync)
|
|
|
+writedb(const char *filename, enum writedb_flags flags)
|
|
|
{
|
|
|
static char writebuf[8192];
|
|
|
|
|
|
@@ -412,7 +412,7 @@ writedb(const char *filename, bool available, bool mustsync)
|
|
|
struct varbuf vb = VARBUF_INIT;
|
|
|
int old_umask;
|
|
|
|
|
|
- which = available ? "available" : "status";
|
|
|
+ which = (flags & wdb_dump_available) ? "available" : "status";
|
|
|
m_asprintf(&oldfn, "%s%s", filename, OLDDBEXT);
|
|
|
m_asprintf(&newfn, "%s%s", filename, NEWDBEXT);
|
|
|
|
|
|
@@ -427,7 +427,7 @@ writedb(const char *filename, bool available, bool mustsync)
|
|
|
|
|
|
it = pkg_db_iter_new();
|
|
|
while ((pigp = pkg_db_iter_next(it)) != NULL) {
|
|
|
- pifp= available ? &pigp->available : &pigp->installed;
|
|
|
+ pifp = (flags & wdb_dump_available) ? &pigp->available : &pigp->installed;
|
|
|
/* Don't dump records which have no useful content. */
|
|
|
if (!pkg_is_informative(pigp, pifp))
|
|
|
continue;
|
|
|
@@ -441,7 +441,7 @@ writedb(const char *filename, bool available, bool mustsync)
|
|
|
}
|
|
|
pkg_db_iter_free(it);
|
|
|
varbuf_destroy(&vb);
|
|
|
- if (mustsync) {
|
|
|
+ if (flags & wdb_must_sync) {
|
|
|
if (fflush(file))
|
|
|
ohshite(_("failed to flush %s database to '%.250s'"), which, filename);
|
|
|
if (fsync(fileno(file)))
|
|
|
@@ -458,7 +458,7 @@ writedb(const char *filename, bool available, bool mustsync)
|
|
|
ohshite(_("failed to install '%.250s' as '%.250s' containing %s database"),
|
|
|
newfn, filename, which);
|
|
|
|
|
|
- if (mustsync)
|
|
|
+ if (flags & wdb_must_sync)
|
|
|
dir_sync_path_parent(filename);
|
|
|
|
|
|
free(newfn);
|