return -1;
}
- /* temporary rebuild db, used with -re rebuild to delete unused CNIDs, not used with -f */
- if (! nocniddb && !(flags & DBD_FLAGS_FORCE)) {
- /* Get volume stamp */
- dbd_getstamp(dbd, &rqst, &rply);
- if (rply.result != CNID_DBD_RES_OK)
- goto exit;
- memcpy(stamp, rply.name, CNID_DEV_LEN);
+ /* Get volume stamp */
+ dbd_getstamp(dbd, &rqst, &rply);
+ if (rply.result != CNID_DBD_RES_OK) {
+ ret = -1;
+ goto exit;
+ }
+ memcpy(stamp, rply.name, CNID_DEV_LEN);
- /* open/create rebuild dbd, copy rootinfo key */
+ /* temporary rebuild db, used with -re rebuild to delete unused CNIDs, not used with -f */
+ if (! nocniddb && (flags & DBD_FLAGS_EXCL) && !(flags & DBD_FLAGS_FORCE)) {
tmpdb_path = get_tmpdb_path();
if (NULL == (dbd_rebuild = dbif_init(tmpdb_path, "cnid2.db"))) {
ret = -1;
exit:
if (! nocniddb) {
- if (dbif_txn_close(dbd, 2) != 0)
+ if (dbif_txn_close(dbd, ret == 0 ? 1 : 0) != 0)
ret = -1;
if (dbd_rebuild)
- if (dbif_txn_close(dbd_rebuild, 2) != 0)
+ if (dbif_txn_close(dbd_rebuild, ret == 0 ? 1 : 0) != 0)
ret = -1;
if ((ret == 0) && dbd_rebuild && (flags & DBD_FLAGS_EXCL) && !(flags & DBD_FLAGS_FORCE))
/* We can only do this in exclusive mode, otherwise we might delete CNIDs added from