mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-21 23:38:49 -05:00
Applied reworked patch from VMiklos (vmiklos@frugalware.org)
Close the lock file descriptor upon handle release
This commit is contained in:
parent
d7e781a54b
commit
af15744967
@ -74,7 +74,8 @@ int alpm_initialize(char *root)
|
||||
|
||||
/* lock db */
|
||||
if(handle->access == PM_ACCESS_RW) {
|
||||
if(_alpm_lckmk(PM_LOCK) == -1) {
|
||||
handle->lckfd = _alpm_lckmk(PM_LOCK);
|
||||
if(handle->lckfd == -1) {
|
||||
FREE(handle);
|
||||
RET_ERR(PM_ERR_HANDLE_LOCK, -1);
|
||||
}
|
||||
@ -98,6 +99,10 @@ int alpm_release()
|
||||
|
||||
/* unlock db */
|
||||
if(handle->access == PM_ACCESS_RW) {
|
||||
if(handle->lckfd != -1) {
|
||||
close(handle->lckfd);
|
||||
handle->lckfd = -1;
|
||||
}
|
||||
if(_alpm_lckrm(PM_LOCK)) {
|
||||
_alpm_log(PM_LOG_WARNING, "could not remove lock file %s", PM_LOCK);
|
||||
alpm_logaction("warning: could not remove lock file %s", PM_LOCK);
|
||||
|
@ -50,6 +50,7 @@ pmhandle_t *handle_new()
|
||||
}
|
||||
|
||||
memset(handle, 0, sizeof(pmhandle_t));
|
||||
handle->lckfd = -1;
|
||||
|
||||
/* see if we're root or not */
|
||||
handle->uid = geteuid();
|
||||
|
@ -37,6 +37,7 @@ typedef struct __pmhandle_t {
|
||||
pmdb_t *db_local;
|
||||
PMList *dbs_sync; /* List of (pmdb_t *) */
|
||||
FILE *logfd;
|
||||
int lckfd;
|
||||
pmtrans_t *trans;
|
||||
/* parameters */
|
||||
char *root;
|
||||
|
@ -212,17 +212,14 @@ int _alpm_lckmk(char *file)
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
return(fd > 0 ? 0 : -1);
|
||||
|
||||
return(0);
|
||||
return(fd > 0 ? fd : -1);
|
||||
}
|
||||
|
||||
/* Remove a lock file
|
||||
*/
|
||||
int _alpm_lckrm(char *file)
|
||||
{
|
||||
/* ORE
|
||||
we should close the file descriptor opened by lckmk */
|
||||
return(unlink(file) == -1);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user