Blame dbrointerruptable.diff

Bernhard M. Wiedemann 1250f9
--- ./lib/rpmdb.c.orig	2018-08-08 13:40:18.153941351 +0000
Bernhard M. Wiedemann 1250f9
+++ ./lib/rpmdb.c	2018-10-16 09:20:11.196708098 +0000
Bernhard M. Wiedemann 1250f9
@@ -387,9 +387,11 @@ int rpmdbClose(rpmdb db)
Bernhard M. Wiedemann 1250f9
 {
Bernhard M. Wiedemann 1250f9
     rpmdb * prev, next;
Bernhard M. Wiedemann 1250f9
     int rc = 0;
Bernhard M. Wiedemann 1250f9
+    int dbmode;
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
     if (db == NULL)
Bernhard M. Wiedemann 1250f9
 	goto exit;
Bernhard M. Wiedemann 1250f9
+    dbmode = db->db_mode;
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
     prev = &rpmdbRock;
Bernhard M. Wiedemann 1250f9
     while ((next = *prev) != NULL && next != db)
Bernhard M. Wiedemann 1250f9
@@ -424,7 +426,7 @@ int rpmdbClose(rpmdb db)
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
     db = _free(db);
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
-    if (rpmdbRock == NULL) {
Bernhard M. Wiedemann 1250f9
+    if (rpmdbRock == NULL && (dbmode & (O_RDWR|O_WRONLY)) != 0) {
Bernhard M. Wiedemann 1250f9
 	rpmsqActivate(0);
Bernhard M. Wiedemann 1250f9
     }
Bernhard M. Wiedemann 1250f9
 exit:
Bernhard M. Wiedemann 1250f9
@@ -509,7 +511,7 @@ static int openDatabase(const char * pre
Bernhard M. Wiedemann 1250f9
     rc = rpmioMkpath(rpmdbHome(db), 0755, getuid(), getgid());
Bernhard M. Wiedemann 1250f9
     if (rc == 0) {
Bernhard M. Wiedemann 1250f9
 	/* Enable signal queue on the first db open */
Bernhard M. Wiedemann 1250f9
-	if (db->db_next == NULL) {
Bernhard M. Wiedemann 1250f9
+	if (db->db_next == NULL &&  (db->db_mode & (O_RDWR|O_WRONLY)) != 0) {
Bernhard M. Wiedemann 1250f9
 	    rpmsqActivate(1);
Bernhard M. Wiedemann 1250f9
 	}
Bernhard M. Wiedemann 1250f9