summaryrefslogtreecommitdiffstats
path: root/etc/inc/pkg-utils.inc
diff options
context:
space:
mode:
authorColin Smith <colin@pfsense.org>2005-06-20 03:56:34 +0000
committerColin Smith <colin@pfsense.org>2005-06-20 03:56:34 +0000
commitb8a1c2a3b311a10be9476245c7869e01999e2508 (patch)
tree482ff66a1b209551f78701be842c5b380b1529da /etc/inc/pkg-utils.inc
parent2d34249cb90ed9e5ff5800b2635762ce82fe13c0 (diff)
downloadpfsense-b8a1c2a3b311a10be9476245c7869e01999e2508.zip
pfsense-b8a1c2a3b311a10be9476245c7869e01999e2508.tar.gz
Don't count duplicated dependencies.
Diffstat (limited to 'etc/inc/pkg-utils.inc')
-rw-r--r--etc/inc/pkg-utils.inc22
1 files changed, 16 insertions, 6 deletions
diff --git a/etc/inc/pkg-utils.inc b/etc/inc/pkg-utils.inc
index 7cf2aa5..21d1cd3 100644
--- a/etc/inc/pkg-utils.inc
+++ b/etc/inc/pkg-utils.inc
@@ -41,10 +41,11 @@ $listtags = array_merge($listtags, array("onetoone", "queue", "rule", "servernat
require_once("pfsense-utils.inc");
require_once("globals.inc");
+/*
safe_mkdir("/var/db/pkg");
safe_mkdir("/usr/local/pkg");
safe_mkdir("/usr/local/pkg/pf");
-
+*/
/****f* pkg-utils/is_package_installed
* NAME
@@ -762,13 +763,22 @@ function get_pkg_db() {
return return_dir_as_array($g['vardb_path'] . '/pkg');
}
-function walk_depend($depend, $pkgdb = "") {
+function walk_depend($depend, $pkgdb = "", $alreadyseen = "") {
if(!$pkgdb) $pkgdb = get_pkg_db();
+ if(!$alreadyseen) $alreadyseen = array();
foreach($depend as $adepend) {
$pkgname = reverse_strrchr($adepend['name'], '.');
- if(!in_array($pkgname, $pkgdb)) $size += expand_to_bytes($adepend['size']);
- if(is_array($adepend['depend'])) $size += walk_depend($adepend['depend'], $pkgdb);
+ if(in_array($pkgname, $alreadyseen)) {
+ continue;
+ } elseif(!in_array($pkgname, $pkgdb)) {
+ $size += expand_to_bytes($adepend['size']);
+ $alreadyseen[] = $pkgname;
+ if(is_array($adepend['depend'])) $size += walk_depend($adepend['depend'], $pkgdb, $alreadyseen);
+ } else {
+ continue;
+ }
}
+ print $size;
return $size;
}
@@ -780,8 +790,8 @@ function get_package_install_size($pkg = 'all', $pkg_info = "") {
foreach($pkg as $apkg) {
$size = 0;
if(!$pkg_info[$apkg]) continue;
- $size += expand_to_bytes(walk_depend($depend, $pkgdb));
- $toreturn[$apkg] = $size;
+ $toreturn[$apkg] = expand_to_bytes(walk_depend(array($pkg_info[$apkg]), $pkgdb));
}
+ return $toreturn;
}
?>
OpenPOWER on IntegriCloud