Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:11.4:Update
rpm
dbrointerruptable.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File dbrointerruptable.diff of Package rpm
Do not block signals if the database is opened read-only, it jst annoys the users. [#48026] Index: lib/rpmdb.c =================================================================== --- lib/rpmdb.c.orig +++ lib/rpmdb.c @@ -819,10 +819,12 @@ int rpmdbClose(rpmdb db) rpmdb * prev, next; int dbix; int rc = 0; + int dbmode; if (db == NULL) goto exit; + dbmode = db->db_mode; (void) rpmdbUnlink(db, RPMDBG_M("rpmdbClose")); if (db->nrefs > 0) @@ -855,12 +857,14 @@ int rpmdbClose(rpmdb db) dbiTagsFree(); + if ((dbmode & (O_RDWR|O_WRONLY)) != 0) { + (void) rpmsqEnable(-SIGHUP, NULL); + (void) rpmsqEnable(-SIGINT, NULL); + (void) rpmsqEnable(-SIGTERM,NULL); + (void) rpmsqEnable(-SIGQUIT,NULL); + (void) rpmsqEnable(-SIGPIPE,NULL); + } exit: - (void) rpmsqEnable(-SIGHUP, NULL); - (void) rpmsqEnable(-SIGINT, NULL); - (void) rpmsqEnable(-SIGTERM,NULL); - (void) rpmsqEnable(-SIGQUIT,NULL); - (void) rpmsqEnable(-SIGPIPE,NULL); return rc; } @@ -956,11 +960,13 @@ static int openDatabase(const char * pre if (db == NULL) return 1; - (void) rpmsqEnable(SIGHUP, NULL); - (void) rpmsqEnable(SIGINT, NULL); - (void) rpmsqEnable(SIGTERM,NULL); - (void) rpmsqEnable(SIGQUIT,NULL); - (void) rpmsqEnable(SIGPIPE,NULL); + if ((db->db_mode & (O_RDWR|O_WRONLY)) != 0) { + (void) rpmsqEnable(SIGHUP, NULL); + (void) rpmsqEnable(SIGINT, NULL); + (void) rpmsqEnable(SIGTERM,NULL); + (void) rpmsqEnable(SIGQUIT,NULL); + (void) rpmsqEnable(SIGPIPE,NULL); + } db->db_api = _dbapi;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor