summaryrefslogtreecommitdiffstats
path: root/etc/inc/pkg-utils.inc
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2010-03-06 18:09:16 -0500
committerScott Ullrich <sullrich@pfsense.org>2010-03-06 18:10:53 -0500
commit017d381c0ad97bb60b5ea127c4301ae873dee0c1 (patch)
tree8b5c56f518c095c79bb23f42347f4ce74f6f213f /etc/inc/pkg-utils.inc
parent6b605c976e6c47bc844a7e9ed1a899b828498607 (diff)
downloadpfsense-017d381c0ad97bb60b5ea127c4301ae873dee0c1.zip
pfsense-017d381c0ad97bb60b5ea127c4301ae873dee0c1.tar.gz
Ensure prefix directory exists before downloading and installing additional file
Diffstat (limited to 'etc/inc/pkg-utils.inc')
-rw-r--r--etc/inc/pkg-utils.inc46
1 files changed, 24 insertions, 22 deletions
diff --git a/etc/inc/pkg-utils.inc b/etc/inc/pkg-utils.inc
index 9fbba1b..1d7df59 100644
--- a/etc/inc/pkg-utils.inc
+++ b/etc/inc/pkg-utils.inc
@@ -238,34 +238,36 @@ function get_pkg_depends($pkg_name, $filetype = ".xml", $format = "files", $retu
} else {
$prefix = "/usr/local/pkg/";
}
+ // Ensure that the prefix exists to avoid installation errors.
+ if(!is_dir($prefix))
+ exec("mkdir -p {$prefix}");
if(!file_exists($prefix . $depend_file))
log_error("The {$package['name']} package is missing required dependencies and must be reinstalled.");
switch ($format) {
case "files":
- $depends[] = $depend_file;
- break;
- case "names":
- switch ($filetype) {
-
- case "all":
- if(preg_match("/\.xml/i", $depend_file)) {
- $depend_xml = parse_xml_config_pkg("/usr/local/pkg/" . $depend_file, "packagegui");
- $depends[] = $depend_xml['name'];
+ $depends[] = $depend_file;
break;
- } else {
- $depends[] = $depend_name; // If this dependency isn't package XML, use the stripped filename.
- break;
- }
- case ".xml":
- $depend_xml = parse_xml_config_pkg("/usr/local/pkg/" . $depend_file, "packagegui");
- $depends[] = $depend_xml['name'];
- break;
- default:
- $depends[] = $depend_name; // If we aren't looking for XML, use the stripped filename (it's all we have).
- break;
- }
+ case "names":
+ switch ($filetype) {
+ case "all":
+ if(preg_match("/\.xml/i", $depend_file)) {
+ $depend_xml = parse_xml_config_pkg("/usr/local/pkg/" . $depend_file, "packagegui");
+ $depends[] = $depend_xml['name'];
+ break;
+ } else {
+ $depends[] = $depend_name; // If this dependency isn't package XML, use the stripped filename.
+ break;
+ }
+ case ".xml":
+ $depend_xml = parse_xml_config_pkg("/usr/local/pkg/" . $depend_file, "packagegui");
+ $depends[] = $depend_xml['name'];
+ break;
+ default:
+ $depends[] = $depend_name; // If we aren't looking for XML, use the stripped filename (it's all we have).
+ break;
+ }
+ }
}
- }
return $depends;
}
}
OpenPOWER on IntegriCloud