From: Panu Matilainen Date: Fri, 15 Apr 2011 06:18:15 +0000 (+0300) Subject: Only muck with signals on first and last db open/close X-Git-Tag: tznext/4.11.0.1.tizen20130304~1210 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=dcf650f5a73846773c7b81de08e2608391f733b8;p=tools%2Flibrpm-tizen.git Only muck with signals on first and last db open/close - Signals are per-process global, as long as there are other databases open (or references to the same db) we shouldn't mess with them. Less important on open, but if somebody is changing rpmsq-handling we shouldn't override that either. --- diff --git a/lib/rpmdb.c b/lib/rpmdb.c index eb7a49d..1ff2f29 100644 --- a/lib/rpmdb.c +++ b/lib/rpmdb.c @@ -654,12 +654,14 @@ int rpmdbClose(rpmdb db) db = _free(db); + if (rpmdbRock == NULL) { + (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; } @@ -721,11 +723,13 @@ static int openDatabase(const char * prefix, /* Try to ensure db home exists, error out if we cant even create */ rc = rpmioMkpath(rpmdbHome(db), 0755, getuid(), getgid()); if (rc == 0) { - (void) rpmsqEnable(SIGHUP, NULL); - (void) rpmsqEnable(SIGINT, NULL); - (void) rpmsqEnable(SIGTERM,NULL); - (void) rpmsqEnable(SIGQUIT,NULL); - (void) rpmsqEnable(SIGPIPE,NULL); + if (rpmdbRock == NULL) { + (void) rpmsqEnable(SIGHUP, NULL); + (void) rpmsqEnable(SIGINT, NULL); + (void) rpmsqEnable(SIGTERM, NULL); + (void) rpmsqEnable(SIGQUIT, NULL); + (void) rpmsqEnable(SIGPIPE, NULL); + } /* Just the primary Packages database opened here */ rc = (rpmdbOpenIndex(db, RPMDBI_PACKAGES, db->db_flags) != NULL) ? 0 : -2;