summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJory Pratt <anarchy@gentoo.org>2010-02-18 00:09:52 +0000
committerJory Pratt <anarchy@gentoo.org>2010-02-18 00:09:52 +0000
commited7a8d050109374524b91424de96203a97b9dc66 (patch)
tree2ce5f0ec2d8e7eed9bd7d766695cd1f6c4ffc76b /www-client/seamonkey/files
parent[x11-libs/qt-phonon] added exceptions USE flag description (diff)
downloadgentoo-2-ed7a8d050109374524b91424de96203a97b9dc66.tar.gz
gentoo-2-ed7a8d050109374524b91424de96203a97b9dc66.tar.bz2
gentoo-2-ed7a8d050109374524b91424de96203a97b9dc66.zip
Readd seamonkey-rebuild-databases.pl bug #302694
(Portage version: 2.1.7.17/cvs/Linux x86_64)
Diffstat (limited to 'www-client/seamonkey/files')
-rw-r--r--www-client/seamonkey/files/seamonkey-rebuild-databases.pl99
1 files changed, 99 insertions, 0 deletions
diff --git a/www-client/seamonkey/files/seamonkey-rebuild-databases.pl b/www-client/seamonkey/files/seamonkey-rebuild-databases.pl
new file mode 100644
index 000000000000..2556041dae11
--- /dev/null
+++ b/www-client/seamonkey/files/seamonkey-rebuild-databases.pl
@@ -0,0 +1,99 @@
+#!/usr/bin/perl
+
+use File::Path;
+use File::Copy;
+use File::Glob ":glob";
+use POSIX ":sys_wait_h";
+
+$timeout = 60;
+
+%{ENV}->{"MOZILLA_FIVE_HOME"}="/usr/lib/seamonkey";
+%{ENV}->{"LD_LIBRARY_PATH"}="/usr/lib/seamonkey";
+
+umask 022;
+
+if ( -f "/usr/lib/seamonkey/regxpcom" )
+{
+ # remove all of the old files
+ rmtree("/usr/lib/seamonkey/chrome/overlayinfo");
+ unlink </usr/lib/seamonkey/chrome/*.rdf>;
+ unlink("/usr/lib/seamonkey/component.reg");
+ unlink("/usr/lib/seamonkey/components/compreg.dat");
+ unlink("/usr/lib/seamonkey/components/xpti.dat");
+
+ # create a new clean path
+ mkpath("/usr/lib/seamonkey/chrome/overlayinfo");
+
+ # rebuild the installed-chrome.txt file from the installed
+ # languages
+ if ( -f "/usr/lib/seamonkey/chrome/lang/installed-chrome.txt" ) {
+ rebuild_lang_files();
+ }
+
+ # run regxpcom
+ $pid = fork();
+
+ # I am the child.
+ if ($pid == 0) {
+ exec("/usr/lib/seamonkey/regxpcom > /dev/null 2> /dev/null");
+ }
+ # I am the parent.
+ else {
+ my $timepassed = 0;
+ do {
+ $kid = waitpid($pid, &WNOHANG);
+ sleep(1);
+ $timepassed++;
+ } until $kid == -1 || $timepassed > $timeout;
+
+ # should we kill?
+ if ($timepassed > $timeout) {
+ kill (9, $pid);
+ # kill -9 can leave threads hanging around
+ system("/usr/bin/killall -9 regxpcom");
+ }
+ }
+
+ # and run regchrome for good measure
+ $pid = fork();
+
+ # I am the child.
+ if ($pid == 0) {
+ exec("/usr/lib/seamonkey/regchrome > /dev/null 2> /dev/null");
+ }
+ # I am the parent.
+ else {
+ my $timepassed = 0;
+ do {
+ $kid = waitpid($pid, &WNOHANG);
+ sleep(1);
+ $timepassed++;
+ } until $kid == -1 || $timepassed > $timeout;
+
+ # should we kill?
+ if ($timepassed > $timeout) {
+ kill (9, $pid);
+ # kill -9 can leave threads hanging around
+ system("/usr/bin/killall -9 regchrome");
+ }
+ }
+
+}
+
+
+sub rebuild_lang_files {
+ unlink("/usr/lib/seamonkey/chrome/installed-chrome.txt");
+
+ open (OUTPUT, "+>", "/usr/lib/seamonkey/chrome/installed-chrome.txt")||
+ die("Failed to open installed-chrome.txt: $!\n");
+
+ copy("/usr/lib/seamonkey/chrome/lang/installed-chrome.txt",
+ \*OUTPUT);
+
+ foreach (bsd_glob("/usr/lib/seamonkey/chrome/lang/lang-*.txt")) {
+ copy($_, \*OUTPUT);
+ }
+
+ copy("/usr/lib/seamonkey/chrome/lang/default.txt",
+ \*OUTPUT);
+}