[pacman-dev] [PATCH] Fix FS#8905 (-Sp as non-root) RESUBMIT
Xavier
shiningxc at gmail.com
Sat Mar 8 13:07:17 EST 2008
On Sat, Mar 08, 2008 at 06:58:07PM +0100, Nagy Gabor wrote:
> >From c268ac9ee0afa9413ce4c91d4fcc8cb3c91ee0b1 Mon Sep 17 00:00:00 2001
> From: Nagy Gabor <ngaba at bibl.u-szeged.hu>
> Date: Sat, 8 Mar 2008 18:57:26 +0100
> Subject: [PATCH] Fix FS#8905 (-Sp as non-root)
>
> This patch is quite ugly, but solves the issue without API change.
>
> Signed-off-by: Nagy Gabor <ngaba at bibl.u-szeged.hu>
> ---
> lib/libalpm/trans.c | 14 +++++++++++---
> 1 files changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c
> index 52dbe7a..a19fb28 100644
> --- a/lib/libalpm/trans.c
> +++ b/lib/libalpm/trans.c
> @@ -72,9 +72,11 @@ int SYMEXPORT alpm_trans_init(pmtranstype_t type, pmtransflag_t flags,
> ASSERT(handle->trans == NULL, RET_ERR(PM_ERR_TRANS_NOT_NULL, -1));
>
> /* lock db */
> - handle->lckfd = _alpm_lckmk();
> - if(handle->lckfd == -1) {
> - RET_ERR(PM_ERR_HANDLE_LOCK, -1);
> + if(!(type == PM_TRANS_TYPE_SYNC && flags & PM_TRANS_FLAG_PRINTURIS)) {
> + handle->lckfd = _alpm_lckmk();
> + if(handle->lckfd == -1) {
> + RET_ERR(PM_ERR_HANDLE_LOCK, -1);
> + }
> }
>
> handle->trans = _alpm_trans_new();
> @@ -190,6 +192,7 @@ int SYMEXPORT alpm_trans_interrupt()
> int SYMEXPORT alpm_trans_release()
> {
> pmtrans_t *trans;
> + int nolock;
>
> ALPM_LOG_FUNC;
>
> @@ -200,10 +203,15 @@ int SYMEXPORT alpm_trans_release()
> ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
> ASSERT(trans->state != STATE_IDLE, RET_ERR(PM_ERR_TRANS_NULL, -1));
>
> + nolock = (trans->type == PM_TRANS_TYPE_SYNC) && (trans->flags & PM_TRANS_FLAG_PRINTURIS);
> +
> _alpm_trans_free(trans);
> handle->trans = NULL;
>
> /* unlock db */
> + if(nolock) {
> + return(0);
> + }
> if(handle->lckfd != -1) {
> close(handle->lckfd);
> handle->lckfd = -1;
> --
> 1.5.3.8
>
>
I was thinking about doing something like that as a quick fix for a 3.1.x
release, since some users were not happy.
I didn't test it yet but it looks fine. We agree that this is a ugly hack
though.
More information about the pacman-dev
mailing list