RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c

From: Alexey Tourbin <at@rpm5.org>
Date: Mon 18 Aug 2008 - 18:56:55 CEST
Message-Id: <20080818165655.DED684B899@rpm5.org>
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Alexey Tourbin
  Root:   /v/rpm/cvs                       Email:  at@rpm5.org
  Module: rpm                              Date:   18-Aug-2008 18:56:55
  Branch: HEAD                             Handle: 2008081816565500

  Modified files:
    rpm                     CHANGES
    rpm/rpmdb               rpmdb.c

  Log:
    rpmdb.c: enable/disable rpmsq signal handlers with respect to
    rpmdbRock

  Summary:
    Revision    Changes     Path
    1.2523      +1  -0      rpm/CHANGES
    1.264       +30 -16     rpm/rpmdb/rpmdb.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2522 -r1.2523 CHANGES
  --- rpm/CHANGES	17 Aug 2008 20:43:58 -0000	1.2522
  +++ rpm/CHANGES	18 Aug 2008 16:56:55 -0000	1.2523
  @@ -1,5 +1,6 @@
   
   5.1.0 -> 5.2a0:
  +    - at: rpmdb.c: enable/disable rpmsq signal handlers with respect to rpmdbRock
       - jbj: WR: run-time discovered configuration goopiness, take 1.
       - jbj: WR: rely on PATH to find pkg-config.
       - jbj: WR: don't spew error messages with internal lua shadow module.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.c
  ============================================================================
  $ cvs diff -u -r1.263 -r1.264 rpmdb.c
  --- rpm/rpmdb/rpmdb.c	18 Aug 2008 06:16:08 -0000	1.263
  +++ rpm/rpmdb/rpmdb.c	18 Aug 2008 16:56:55 -0000	1.264
  @@ -1017,13 +1017,13 @@
       int rc = 0;
   
       if (db == NULL)
  -	goto exit;
  +	return rc;
   
       (void) rpmdbUnlink(db, "rpmdbClose");
   
       /*@-usereleased@*/
       if (db->nrefs > 0)
  -	goto exit;
  +	return rc;
   
       if (db->_dbi)
       for (dbix = db->db_ndbi; dbix;) {
  @@ -1055,15 +1055,20 @@
       }
   /*@=newreftrans@*/
   
  +    if (rpmdbRock == NULL && rpmmiRock == NULL) {
  +	/* Last close uninstalls special signal handling. */
  +	(void) rpmsqEnable(-SIGHUP,	NULL);
  +	(void) rpmsqEnable(-SIGINT,	NULL);
  +	(void) rpmsqEnable(-SIGTERM,	NULL);
  +	(void) rpmsqEnable(-SIGQUIT,	NULL);
  +	(void) rpmsqEnable(-SIGPIPE,	NULL);
  +	/* Pending signals strike here. */
  +	(void) rpmdbCheckSignals();
  +    }
  +
       /*@-refcounttrans@*/ db = _free(db); /*@=refcounttrans@*/
       /*@=usereleased@*/
   
  -exit:
  -    (void) rpmsqEnable(-SIGHUP,	NULL);
  -    (void) rpmsqEnable(-SIGINT,	NULL);
  -    (void) rpmsqEnable(-SIGTERM,NULL);
  -    (void) rpmsqEnable(-SIGQUIT,NULL);
  -    (void) rpmsqEnable(-SIGPIPE,NULL);
       return rc;
   }
   /*@=incondefs@*/
  @@ -1229,11 +1234,19 @@
       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 (rpmdbRock == NULL && rpmmiRock == NULL) {
  +	/* First open installs special signal handling. */
  +	(void) rpmsqEnable(SIGHUP,	NULL);
  +	(void) rpmsqEnable(SIGINT,	NULL);
  +	(void) rpmsqEnable(SIGTERM,	NULL);
  +	(void) rpmsqEnable(SIGQUIT,	NULL);
  +	(void) rpmsqEnable(SIGPIPE,	NULL);
  +    }
  +
  +/*@-assignexpose -newreftrans@*/
  +/*@i@*/	db->db_next = rpmdbRock;
  +	rpmdbRock = db;
  +/*@=assignexpose =newreftrans@*/
   
       db->db_api = _dbapi;
   
  @@ -1289,8 +1302,6 @@
   	xx = rpmdbClose(db);
       else {
   /*@-assignexpose -newreftrans@*/
  -/*@i@*/	db->db_next = rpmdbRock;
  -	rpmdbRock = db;
   /*@i@*/	*dbp = db;
   /*@=assignexpose =newreftrans@*/
       }
  @@ -1962,7 +1973,10 @@
   
       mi->mi_set = dbiFreeIndexSet(mi->mi_set);
       mi->mi_keyp = _free(mi->mi_keyp);
  -    mi->mi_db = rpmdbUnlink(mi->mi_db, "matchIterator");
  +    /* XXX rpmdbUnlink will not do.
  +     * NB: must be called after rpmmiRock cleanup. */
  +    (void) rpmdbClose(mi->mi_db);
  +    mi->mi_db = NULL;
   
       mi = _free(mi);
   
  @@ .
Received on Mon Aug 18 18:56:55 2008
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.