diff options
author | Chantry Xavier <shiningxc@gmail.com> | 2008-02-19 21:57:40 +0100 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2008-02-20 05:08:06 +0100 |
commit | 7879e4bef7c158814a547d232f0bde8960ee1341 (patch) | |
tree | d20aa4cfbf51816d3220e370b3c5d5bab2a4b4b1 /src | |
parent | 6f3949e3da4325f61ac53d7c8b86a18ff6acb64e (diff) | |
download | pacman-7879e4bef7c158814a547d232f0bde8960ee1341.tar.gz pacman-7879e4bef7c158814a547d232f0bde8960ee1341.tar.xz |
Lock the database on -Sc operation.
This partly fixes FS#9609.
Weird things could happen when running -Sc while another instance was
already running. The cleancache function could delete packages that were
just being downloaded.
Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/pacman/sync.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/pacman/sync.c b/src/pacman/sync.c index 5f83c753..e3e87703 100644 --- a/src/pacman/sync.c +++ b/src/pacman/sync.c @@ -774,8 +774,19 @@ int pacman_sync(alpm_list_t *targets) /* clean the cache */ if(config->op_s_clean) { - int ret = sync_cleancache(config->op_s_clean); + int ret = 0; + + if(sync_trans_init(0) == -1) { + return(1); + } + + ret += sync_cleancache(config->op_s_clean); ret += sync_cleandb_all(); + + if(sync_trans_release() == -1) { + ret++; + } + return(ret); } |