diff --git a/src/alpm_utils.vala b/src/alpm_utils.vala index b5a92a2c59a9e8552632d7d8c957cc7407a2653e..c681706a49c62695b0d38078851da3db45b6a846 100644 --- a/src/alpm_utils.vala +++ b/src/alpm_utils.vala @@ -192,6 +192,21 @@ namespace Pamac { } } + internal void clean_cache (keep_nb, only_uninstalled) { + var database = new Pamac.Database (config); + HashTable<string, int64?> details = database.get_clean_cache_details (keep_nb, only_uninstalled); + var iter = HashTableIter<string, int64?> (details); + unowned string name; + while (iter.next (out name, null)) { + var file = GLib.File.new_for_path (name); + try { + file.delete (); + } catch (GLib.Error e) { + stderr.printf("%s\n", e.message); + } + } + } + unowned Alpm.Package? get_syncpkg (string name) { unowned Alpm.Package? pkg = null; unowned Alpm.List<unowned Alpm.DB> syncdbs = alpm_handle.syncdbs; diff --git a/src/system_daemon.vala b/src/system_daemon.vala index b322d6c172afcde56026030a161b975a456b5d63..d5dfe1bffbcdfc6ce2c71dff86bc85e402c80e64 100644 --- a/src/system_daemon.vala +++ b/src/system_daemon.vala @@ -356,18 +356,7 @@ namespace Pamac { check_authorization.begin (sender, (obj, res) => { bool authorized = check_authorization.end (res); if (authorized) { - string[] commands = {"paccache", "--nocolor", "-rq"}; - commands += "-k%llu".printf (keep_nb); - if (only_uninstalled) { - commands += "-u"; - } - try { - new Subprocess.newv ( - commands, - SubprocessFlags.STDOUT_SILENCE | SubprocessFlags.STDERR_SILENCE); - } catch (Error e) { - stderr.printf ("Error: %s\n", e.message); - } + alpm_utils.clean_cache (keep_nb, only_uninstalled); } }); } diff --git a/src/transaction_interface_root.vala b/src/transaction_interface_root.vala index 2dbb5ac6fd9d00182ddb86d89552fed98bdf24bd..b5174e04179b0793e4245d75391b12f9be44f2e4 100644 --- a/src/transaction_interface_root.vala +++ b/src/transaction_interface_root.vala @@ -134,18 +134,7 @@ namespace Pamac { } public void clean_cache (uint64 keep_nb, bool only_uninstalled) { - string[] commands = {"paccache", "--nocolor", "-rq"}; - commands += "-k%llu".printf (keep_nb); - if (only_uninstalled) { - commands += "-u"; - } - try { - new Subprocess.newv ( - commands, - SubprocessFlags.STDOUT_SILENCE | SubprocessFlags.STDERR_SILENCE); - } catch (Error e) { - stderr.printf ("Error: %s\n", e.message); - } + alpm_utils.clean_cache (keep_nb, only_uninstalled); } async void set_pkgreason (string pkgname, uint reason) {