summaryrefslogtreecommitdiffstats
path: root/etc/inc/pkg-utils.inc
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2006-01-20 04:20:21 +0000
committerScott Ullrich <sullrich@pfsense.org>2006-01-20 04:20:21 +0000
commite65a287f12d889997245190669237cffbb601de9 (patch)
treecba4a4a6b6e2fa5cdf297352d59609fb153fbecc /etc/inc/pkg-utils.inc
parent6657b2121f482bd6c397891919a128ed7f5fcdcb (diff)
downloadpfsense-e65a287f12d889997245190669237cffbb601de9.zip
pfsense-e65a287f12d889997245190669237cffbb601de9.tar.gz
MFC
Diffstat (limited to 'etc/inc/pkg-utils.inc')
-rw-r--r--etc/inc/pkg-utils.inc453
1 files changed, 226 insertions, 227 deletions
diff --git a/etc/inc/pkg-utils.inc b/etc/inc/pkg-utils.inc
index d6e632d..9be67ac 100644
--- a/etc/inc/pkg-utils.inc
+++ b/etc/inc/pkg-utils.inc
@@ -45,7 +45,6 @@ if($g['platform'] == "pfSense") {
safe_mkdir("/usr/local/pkg/pf");
}
-
/****f* pkg-utils/is_package_installed
* NAME
* is_package_installed - Check whether a package is installed.
@@ -71,15 +70,16 @@ function is_package_installed($packagename) {
* integer - -1 if package is not found, >-1 otherwise
******/
function get_pkg_id($pkg_name) {
- global $config;
- if(is_array($config['installedpackages']['package'])) {
- $i = 0;
- foreach($config['installedpackages']['package'] as $pkg) {
- if($pkg['name'] == $pkg_name) return $i;
- $i++;
- }
- }
- return -1;
+ global $config;
+
+ if(is_array($config['installedpackages']['package'])) {
+ $i = 0;
+ foreach($config['installedpackages']['package'] as $pkg) {
+ if($pkg['name'] == $pkg_name) return $i;
+ $i++;
+ }
+ }
+ return -1;
}
/****f* pkg-utils/get_pkg_info
@@ -93,48 +93,41 @@ function get_pkg_id($pkg_name) {
******/
function get_pkg_info($pkgs = 'all', $info = 'all') {
global $g;
- $params = array("pkg" => $pkgs, "info" => $info);
- $msg = new XML_RPC_Message('pfsense.get_pkgs', array(php_value_to_xmlrpc($params)));
- $cli = new XML_RPC_Client($g['xmlrpcpath'], $g['xmlrpcbaseurl']);
- $resp = $cli->send($msg, 10);
+ $params = array("pkg" => $pkgs, "info" => $info);
+ $resp = call_pfsense_method('pfsense.get_pkgs', $params, 10);
+ return $resp ? $resp : array();
+}
+
+function get_pkg_sizes($pkgs = 'all') {
+ global $g;
+ $params = array("pkg" => $pkgs);
+ $msg = new XML_RPC_Message('pfsense.get_pkg_sizes', array(php_value_to_xmlrpc($params)));
+ $cli = new XML_RPC_Client($g['xmlrpcpath'], $g['xmlrpcbaseurl']);
+ $resp = $cli->send($msg, 10);
if($resp and !$resp->faultCode()) {
- $raw_versions = $resp->value();
+ $raw_versions = $resp->value();
return xmlrpc_value_to_php($raw_versions);
} else {
return array();
}
}
-function get_pkg_sizes($pkgs = 'all') {
- global $g;
- $params = array("pkg" => $pkgs);
- $msg = new XML_RPC_Message('pfsense.get_pkg_sizes', array(php_value_to_xmlrpc($params)));
- $cli = new XML_RPC_Client($g['xmlrpcpath'], $g['xmlrpcbaseurl']);
- $resp = $cli->send($msg, 10);
- if($resp and !$resp->faultCode()) {
- $raw_versions = $resp->value();
- return xmlrpc_value_to_php($raw_versions);
- } else {
- return array();
- }
-}
-
/*
* resync_all_package_configs() Force packages to setup their configuration and rc.d files.
* This function may also print output to the terminal indicating progress.
*/
function resync_all_package_configs($show_message = false) {
- global $config;
- $i = 0;
- log_error("Resyncing configuration for all packages.");
- if(!$config['installedpackages']['package']) return;
- if($show_message == true) print "Syncing packages:";
- foreach($config['installedpackages']['package'] as $package) {
- if($show_message == true) print " " . $package['name'];
- sync_package($i, true, true);
- $i++;
- }
- if($show_message == true) print ".\n";
+ global $config;
+ $i = 0;
+ log_error("Resyncing configuration for all packages.");
+ if(!$config['installedpackages']['package']) return;
+ if($show_message == true) print "Syncing packages:";
+ foreach($config['installedpackages']['package'] as $package) {
+ if($show_message == true) print " " . $package['name'];
+ sync_package($i, true, true);
+ $i++;
+ }
+ if($show_message == true) print ".\n";
}
/*
@@ -156,60 +149,61 @@ function is_freebsd_pkg_installed($pkg) {
*
*/
function get_pkg_depends($pkg_name, $filetype = ".xml", $format = "files", $return_nosync = 1) {
- global $config;
- if(!is_numeric($pkg_name)) {
- $pkg_id = get_pkg_id($pkg_name);
- if($pkg_id == -1) return -1; // This package doesn't really exist - exit the function.
- } else {
- if(!isset($config['installedpackages']['package'][$pkg_id])) return; // No package belongs to the pkg_id passed to this function.
- }
- $package = $config['installedpackages']['package'][$pkg_id];
- if(!file_exists("/usr/local/pkg/" . $package['configurationfile'])) {
- file_notice($package['name'], "The {$package['name']} package is missing its configuration file and must be reinstalled.", "Packages", "/pkg_mgr_install.php?mode=reinstallpkg&pkg={$package['name']}", 1);
+ global $config;
+ $pkg_id = get_pkg_id($pkg_name);
+ if(!is_numeric($pkg_name)) {
+ if($pkg_id == -1) return -1; // This package doesn't really exist - exit the function.
+ } else {
+ if(!isset($config['installedpackages']['package'][$pkg_id])) return; // No package belongs to the pkg_id passed to this function.
+ }
+ $package = $config['installedpackages']['package'][$pkg_id];
+ if(!file_exists("/usr/local/pkg/" . $package['configurationfile'])) {
+ file_notice($package['name'], "The {$package['name']} package is missing its configuration file and must be reinstalled.", "Packages", "/pkg_mgr_install.php?mode=reinstallpkg&pkg={$package['name']}", 1);
return;
}
$pkg_xml = parse_xml_config_pkg("/usr/local/pkg/" . $package['configurationfile'], "packagegui");
- if($pkg_xml['additional_files_needed'] != "") {
- foreach($pkg_xml['additional_files_needed'] as $item) {
- if (($return_nosync == 0) && (isset($item['nosync']))) continue; // Do not return depends with nosync set if not required.
- $depend_file = substr(strrchr($item['item']['0'], '/'),1); // Strip URLs down to filenames.
- $depend_name = substr(substr($depend_file,0,strpos($depend_file,".")+1),0,-1); // Strip filename down to dependency name.
- if (($filetype != "all") && (!preg_match("/${filetype}/i", $depend_file))) continue;
- if ($item['prefix'] != "") {
- $prefix = $item['prefix'];
- } else {
- $prefix = "/usr/local/pkg/";
- }
- if(!file_exists($prefix . $pkg_name)) {
+ if($pkg_xml['additional_files_needed'] != "") {
+ foreach($pkg_xml['additional_files_needed'] as $item) {
+ if (($return_nosync == 0) && (isset($item['nosync']))) continue; // Do not return depends with nosync set if not required.
+ $depend_file = substr(strrchr($item['item']['0'], '/'),1); // Strip URLs down to filenames.
+ $depend_name = substr(substr($depend_file,0,strpos($depend_file,".")+1),0,-1); // Strip filename down to dependency name.
+ if (($filetype != "all") && (!preg_match("/${filetype}/i", $depend_file))) continue;
+ if ($item['prefix'] != "") {
+ $prefix = $item['prefix'];
+ } else {
+ $prefix = "/usr/local/pkg/";
+ }
+ if(!file_exists($prefix . $pkg_name)) {
file_notice($package['name'], "The {$package['name']} package is missing required dependencies and must be reinstalled.", "Packages", "/pkg_mgr_install.php?mode=reinstallpkg&pkg={$package['name']}", 1);
- }
- 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'];
- 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;
- }
+ }
+ 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'];
+ 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;
+ }
}
/*
@@ -236,8 +230,8 @@ function sync_package($pkg_name, $sync_depends = true, $show_message = false) {
* The code is obviously wrong, but I'm not sure what it's supposed to do?
*/
if(isset($pkg_config['nosync'])) continue;
- if($pkg['custom_php_global_functions'] <> "")
- eval($pkg['custom_php_global_functions']);
+ if($pkg_config['custom_php_global_functions'] <> "")
+ eval($pkg_config['custom_php_global_functions']);
if($pkg_config['custom_php_resync_config_command'] <> "")
eval($pkg_config['custom_php_resync_config_command']);
if($sync_depends == true) {
@@ -270,90 +264,93 @@ function sync_package($pkg_name, $sync_depends = true, $show_message = false) {
* XXX: This function needs to return where a pkg_add fails. Our current error messages aren't very descriptive.
*/
function pkg_fetch_recursive($pkgname, $filename, $dependlevel = 0, $base_url = 'http://ftp2.freebsd.org/pub/FreeBSD/ports/i386/packages-5.4-release/Latest') {
- global $pkgent, $static_output, $g, $fd_log;
- $pkg_extension = strrchr($filename, '.');
- $static_output .= "\n" . str_repeat(" ", $dependlevel * 2) . $pkgname . " ";
- $fetchto = "/tmp/apkg_" . $pkgname . $pkg_extension;
+ global $pkgent, $static_output, $g, $fd_log;
+ $pkg_extension = strrchr($filename, '.');
+ $static_output .= "\n" . str_repeat(" ", $dependlevel * 2) . $pkgname . " ";
+ $fetchto = "/tmp/apkg_" . $pkgname . $pkg_extension;
download_file_with_progress_bar($base_url . '/' . $filename, $fetchto);
$static_output .= " (extracting)";
update_output_window($static_output);
- exec("/usr/bin/tar --fast-read -O -f {$fetchto} -x +CONTENTS 2>&1", $slaveout);
- $workingdir = preg_grep("/instmp/", $slaveout);
- $workingdir = $workingdir[0];
- $raw_depends_list = array_values(preg_grep("/\@pkgdep/", $slaveout));
- if($raw_depends_list != "") {
- if($pkgent['exclude_dependency'] != "")
- $raw_depends_list = array_values(preg_grep($pkgent['exclude_dependency'], PREG_GREP_INVERT));
- foreach($raw_depends_list as $adepend) {
- $working_depend = explode(" ", $adepend);
- //$working_depend = explode("-", $working_depend[1]);
- $depend_filename = $working_depend[1] . $pkg_extension;
- if(is_freebsd_pkg_installed($working_depend[1]) === false) {
- pkg_fetch_recursive($working_depend[1], $depend_filename, $dependlevel + 1, $base_url);
- } else {
-// $dependlevel++;
- $static_output .= "\n" . str_repeat(" ", $dependlevel * 2) . $working_depend[1] . " ";
- @fwrite($fd_log, $working_depend[1] . "\n");
- }
- }
- }
- exec("cat {$g['tmp_path']}/y | /usr/sbin/pkg_add -fv {$fetchto} 2>&1", $pkgaddout);
- @fwrite($fd_log, $pkgname . " " . print_r($pkgaddout, true) . "\n");
- return true;
+ $slaveout = "";
+ exec("/usr/bin/tar --fast-read -O -f {$fetchto} -x +CONTENTS 2>&1", $slaveout);
+ $workingdir = preg_grep("/instmp/", $slaveout);
+ $workingdir = $workingdir[0];
+ $raw_depends_list = array_values(preg_grep("/\@pkgdep/", $slaveout));
+ if($raw_depends_list != "") {
+ if($pkgent['exclude_dependency'] != "")
+ $raw_depends_list = array_values(preg_grep($pkgent['exclude_dependency'], PREG_GREP_INVERT));
+ foreach($raw_depends_list as $adepend) {
+ $working_depend = explode(" ", $adepend);
+ //$working_depend = explode("-", $working_depend[1]);
+ $depend_filename = $working_depend[1] . $pkg_extension;
+ if(is_freebsd_pkg_installed($working_depend[1]) === false) {
+ pkg_fetch_recursive($working_depend[1], $depend_filename, $dependlevel + 1, $base_url);
+ } else {
+// $dependlevel++;
+ $static_output .= "\n" . str_repeat(" ", $dependlevel * 2) . $working_depend[1] . " ";
+ @fwrite($fd_log, $working_depend[1] . "\n");
+ }
+ }
+ }
+ $pkgaddout = "";
+ exec("cat {$g['tmp_path']}/y | /usr/sbin/pkg_add -fv {$fetchto} 2>&1", $pkgaddout);
+ @fwrite($fd_log, $pkgname . " " . print_r($pkgaddout, true) . "\n");
+ return true;
}
function download_file_with_progress_bar($url_file, $destination_file) {
- global $ch, $fout, $file_size, $downloaded, $pkg_interface;
- $file_size = 1;
- $downloaded = 1;
- /* open destination file */
- $fout = fopen($destination_file, "wb");
-
- /*
- Originally by Author: Keyvan Minoukadeh
- Modified by Scott Ullrich to return Content-Length size
- */
-
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url_file);
- curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header');
- curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'read_body');
- curl_setopt($ch, CURLOPT_NOPROGRESS, '1');
-
- curl_exec($ch);
+ global $ch, $fout, $file_size, $downloaded, $pkg_interface;
+ $file_size = 1;
+ $downloaded = 1;
+ /* open destination file */
+ $fout = fopen($destination_file, "wb");
+
+ /*
+ * Originally by Author: Keyvan Minoukadeh
+ * Modified by Scott Ullrich to return Content-Length size
+ */
+
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, $url_file);
+ curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header');
+ curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'read_body');
+ curl_setopt($ch, CURLOPT_NOPROGRESS, '1');
+
+ curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
- fclose($fout);
- curl_close($ch);
+ fclose($fout);
+ curl_close($ch);
return ($http_code == 200) ? true : $http_code;
}
function read_header($ch, $string) {
- global $file_size, $fout;
- $length = strlen($string);
- ereg("(Content-Length:) (.*)", $string, $regs);
- if($regs[2] <> "") {
- $file_size = intval($regs[2]);
- }
- return $length;
+ global $file_size, $fout;
+ $length = strlen($string);
+ $regs = "";
+ ereg("(Content-Length:) (.*)", $string, $regs);
+ if($regs[2] <> "") {
+ $file_size = intval($regs[2]);
+ }
+ return $length;
}
function read_body($ch, $string) {
- global $fout, $file_size, $downloaded, $sendto, $static_status, $static_output, $lastseen, $pkg_interface;
- $length = strlen($string);
- $downloaded += intval($length);
- $downloadProgress = round(100 * (1 - $downloaded / $file_size), 0);
- $downloadProgress = 100 - $downloadProgress;
+ global $fout, $file_size, $downloaded, $sendto, $static_status, $static_output, $lastseen, $pkg_interface;
+ $length = strlen($string);
+ $downloaded += intval($length);
+ $downloadProgress = round(100 * (1 - $downloaded / $file_size), 0);
+ $downloadProgress = 100 - $downloadProgress;
if($lastseen <> $downloadProgress and $downloadProgress < 101) {
- if($sendto == "status") {
- $tostatus = $static_status . $downloadProgress . "%";
- update_status($tostatus);
- } else {
- $tooutput = $static_output . $downloadProgress . "%";
- update_output_window($tooutput);
- }
- update_progress_bar($downloadProgress);
- $lastseen = $downloadProgress;
- }
+ if($sendto == "status") {
+ $tostatus = $static_status . $downloadProgress . "%";
+ update_status($tostatus);
+ } else {
+ $tooutput = $static_output . $downloadProgress . "%";
+ update_output_window($tooutput);
+ }
+ update_progress_bar($downloadProgress);
+ $lastseen = $downloadProgress;
+ }
fwrite($fout, $string);
return $length;
}
@@ -451,55 +448,56 @@ function install_package_xml($pkg) {
}
/* set up package logging streams */
- if($pkg_info['logging']) {
- mwexec("/usr/sbin/clog -i -s 32768 {$g['varlog_path']}/{$pkg_info['logging']['logfilename']}");
- chmod($g['varlog_path'] . '/' . $pkg_info['logging']['logfilename'], 0600);
- @fwrite($fd_log, "Adding text to file /etc/syslog.conf\n");
+ if($pkg_info['logging']) {
+ mwexec("/usr/sbin/clog -i -s 32768 {$g['varlog_path']}/{$pkg_info['logging']['logfilename']}");
+ chmod($g['varlog_path'] . '/' . $pkg_info['logging']['logfilename'], 0600);
+ @fwrite($fd_log, "Adding text to file /etc/syslog.conf\n");
mwexec("killall syslogd");
- system_syslogd_start();
- }
+ system_syslogd_start();
+ }
/* make 'y' file */
- $fd = fopen("{$g['tmp_path']}/y", "w");
- for($line = 0; $line < 10; $line++) {
- fwrite($fd, "y\n");
- }
- fclose($fd);
+ $fd = fopen("{$g['tmp_path']}/y", "w");
+ for($line = 0; $line < 10; $line++) {
+ fwrite($fd, "y\n");
+ }
+ fclose($fd);
/* pkg_add the package and its dependencies */
- if($pkg_info['depends_on_package_base_url'] != "") {
- update_status("Installing " . $pkg_info['name'] . " and its dependencies.");
- $static_output .= "Downloading " . $pkg_info['name'] . " and its dependencies... ";
- $static_orig = $static_output;
- $static_output .= "\n";
- update_output_window($static_output);
- $pkg_name = substr(reverse_strrchr($pkg_info['depends_on_package'], "."), 0, -1);
- if(isset($pkg_info['skip_install_checks'])) {
- $pkg_installed = true;
- } else {
- $pkg_installed = is_freebsd_pkg_installed($pkg_name);
- }
- if($pkg_installed == false) pkg_fetch_recursive($pkg_name, $pkg_info['depends_on_package'], 0, $pkg_info['depends_on_package_base_url']);
- $static_output = $static_orig . "done.\nChecking for successful package installation... ";
- update_output_window($static_output);
- /* make sure our package was successfully installed */
- if($pkg_installed == false) $pkg_installed = is_freebsd_pkg_installed($pkg_name);
- if($pkg_installed == true) {
- $static_output .= "done.\n";
- update_output_window($static_output);
- fwrite($fd_log, "pkg_add successfully completed.\n");
- } else {
- $static_output .= "failed!\n\nInstallation aborted.";
- update_output_window($static_output);
- fwrite($fd_log, "Package WAS NOT installed properly.\n");
- fclose($fd_log);
- echo "\n<script language=\"JavaScript\">document.progressbar.style.visibility='hidden';</script>";
- echo "\n<script language=\"JavaScript\">document.progholder.style.visibility='hidden';</script>";
- sleep(1);
- die;
- }
- }
-
+ if($pkg_info['depends_on_package_base_url'] != "") {
+ update_status("Installing " . $pkg_info['name'] . " and its dependencies.");
+ $static_output .= "Downloading " . $pkg_info['name'] . " and its dependencies... ";
+ $static_orig = $static_output;
+ $static_output .= "\n";
+ update_output_window($static_output);
+ foreach((array) $pkg_info['depends_on_package'] as $pkgdep) {
+ $pkg_name = substr(reverse_strrchr($pkgdep, "."), 0, -1);
+ if(isset($pkg_info['skip_install_checks'])) {
+ $pkg_installed = true;
+ } else {
+ $pkg_installed = is_freebsd_pkg_installed($pkg_name);
+ }
+ if($pkg_installed == false) pkg_fetch_recursive($pkg_name, $pkgdep, 0, $pkg_info['depends_on_package_base_url']);
+ $static_output = $static_orig . "done.\nChecking for successful package installation... ";
+ update_output_window($static_output);
+ /* make sure our package was successfully installed */
+ if($pkg_installed == false) $pkg_installed = is_freebsd_pkg_installed($pkg_name);
+ if($pkg_installed == true) {
+ $static_output .= "done.\n";
+ update_output_window($static_output);
+ fwrite($fd_log, "pkg_add successfully completed.\n");
+ } else {
+ $static_output .= "failed!\n\nInstallation aborted.";
+ update_output_window($static_output);
+ fwrite($fd_log, "Package WAS NOT installed properly.\n");
+ fclose($fd_log);
+ echo "\n<script language=\"JavaScript\">document.progressbar.style.visibility='hidden';</script>";
+ echo "\n<script language=\"JavaScript\">document.progholder.style.visibility='hidden';</script>";
+ sleep(1);
+ die;
+ }
+ }
+ }
$configfile = substr(strrchr($pkg_info['config_file'], '/'), 1);
if(file_exists("/usr/local/pkg/" . $configfile)) {
$static_output .= "Loading package configuration... ";
@@ -543,6 +541,7 @@ function install_package_xml($pkg) {
download_file_with_progress_bar($afn['item'][0], $prefix . $filename);
if(stristr($filename, ".tgz") <> "") {
fwrite($fd_log, "Extracting tarball to -C for " . $filename . "...\n");
+ $tarout = "";
exec("/usr/bin/tar xvzf " . $prefix . $filename . " -C / 2>&1", $tarout);
fwrite($fd_log, print_r($tarout, true) . "\n");
}
@@ -588,27 +587,24 @@ function install_package_xml($pkg) {
$static_output .= "\tCustom commands... ";
update_output_window($static_output);
if($pkg_config['custom_php_global_functions'] <> "") {
- update_output_window("Running custom_php_global_functions...");
eval_once($pkg_config['custom_php_global_functions']);
}
if($pkg_config['custom_php_install_command']) {
- update_output_window("Running custom_php_install_command...");
eval_once($pkg_config['custom_php_install_command']);
}
if($pkg_config['custom_php_resync_config_command'] <> "") {
- update_output_window("Running custom_php_resync_config_command...");
- eval_once($pkg_config['custom_php_resync_config_command']);
- }
+ eval_once($pkg_config['custom_php_resync_config_command']);
+ }
$static_output .= "done.\n";
update_output_window($static_output);
} else {
$static_output .= "Loading package configuration... failed!\n\nInstallation aborted.";
update_output_window($static_output);
fwrite($fd_log, "Unable to load package configuration. Installation aborted.\n");
- fclose($fd_log);
- echo "\n<script language=\"JavaScript\">document.progressbar.style.visibility='hidden';</script>";
- echo "\n<script language=\"JavaScript\">document.progholder.style.visibility='hidden';</script>";
- sleep(1);
+ fclose($fd_log);
+ echo "\n<script language=\"JavaScript\">document.progressbar.style.visibility='hidden';</script>";
+ echo "\n<script language=\"JavaScript\">document.progholder.style.visibility='hidden';</script>";
+ sleep(1);
return;
}
}
@@ -625,8 +621,10 @@ function delete_package($pkg) {
}
function delete_package_recursive($pkg) {
+ $info = "";
exec("/usr/sbin/pkg_info -r " . $pkg . " 2>&1", $info);
exec("cat {$g['tmp_path']}/y | /usr/sbin/pkg_delete " . $pkg ." > /dev/null 2>&1");
+ $pkgdb = "";
exec("/bin/ls /var/db/pkg", $pkgdb);
if(stristr($info[0], "can't find package") != false) return;
foreach($info as $line) {
@@ -644,19 +642,20 @@ function delete_package_recursive($pkg) {
function delete_package_xml($pkg) {
global $g, $config, $fd_log, $static_output;
if(($pkgid = get_pkg_id($pkg)) == -1) {
- $static_output .= "The {$pkg} package is not installed.\n\nDeletion aborted.";
- update_output_window($static_output);
- echo "\n<script language=\"JavaScript\">document.progressbar.style.visibility='hidden';</script>";
- echo "\n<script language=\"JavaScript\">document.progholder.style.visibility='hidden';</script>";
- sleep(1);
- return;
- }
+ $static_output .= "The {$pkg} package is not installed.\n\nDeletion aborted.";
+ update_output_window($static_output);
+ echo "\n<script language=\"JavaScript\">document.progressbar.style.visibility='hidden';</script>";
+ echo "\n<script language=\"JavaScript\">document.progholder.style.visibility='hidden';</script>";
+ ob_flush();
+ sleep(1);
+ return;
+ }
/* set up logging if needed */
- if(!$fd_log) {
- if(!$fd_log = fopen("{$g['tmp_path']}/pkg_mgr_{$pkg}.log", "w")) {
- update_output_window("Warning, could not open log for writing.");
- }
- }
+ if(!$fd_log) {
+ if(!$fd_log = fopen("{$g['tmp_path']}/pkg_mgr_{$pkg}.log", "w")) {
+ update_output_window("Warning, could not open log for writing.");
+ }
+ }
update_status("Removing {$pkg} components...");
fwrite($fd_log, "Removing {$pkg} package... ");
$static_output .= "Removing {$pkg} components...\n";
@@ -836,4 +835,4 @@ function squash_from_bytes($size, $round = "") {
}
return;
}
-?> \ No newline at end of file
+?>
OpenPOWER on IntegriCloud