| Server IP : 82.208.35.60 / Your IP : 216.73.216.89 Web Server : Apache/2.4.55 (FreeBSD) OpenSSL/1.1.1q-freebsd PHP/7.3.31 System : FreeBSD server7.d2m.cz 12.4-RELEASE-p9 FreeBSD 12.4-RELEASE-p9 GENERIC amd64 User : studiokobylisy_cz ( 1008) PHP Version : 7.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /usr/ports/www/amphetadesk/files/ |
Upload File : |
--- lib/AmphetaDesk/OS/Linux.pm.orig Thu May 23 23:35:38 2002
+++ lib/AmphetaDesk/OS/Linux.pm Tue Oct 11 18:46:17 2005
@@ -15,11 +15,26 @@
use strict;
use AmphetaDesk::Settings;
use AmphetaDesk::Utilities;
+use POSIX ":sys_wait_h";
+use POSIX ":unistd_h";
require Exporter;
use vars qw( @ISA @EXPORT );
@ISA = qw( Exporter );
@EXPORT = qw( gui_init gui_listen gui_note open_url );
+# taken from perlipc man page
+sub sigchild {
+ my $child;
+
+ # If a second child dies while in the signal handler caused by the
+ # first death, we won't get another signal. So must loop here else
+ # we will leave the unreaped child as a zombie. And the next time
+ # two children die we get another zombie. And so on.
+ while (($child = waitpid(-1,WNOHANG)) > 0) {}
+
+ $SIG{CHLD} = \&sigchild;
+}
+
###############################################################################
# gui_init - start the gui and display the window. #
###############################################################################
@@ -105,8 +120,41 @@
# construct our url.
my $url = "http://127.0.0.1:" . get_setting("urls_port") . "/index.html";
+ # default browser
+ my $browser;
+
# we spit out our suggestion just to catch all instances.
note("If your browser doesn't load, go to <$url>.", 1);
+
+ # what browser?
+ if ($ENV{'BROWSER'}) {
+ $browser = $ENV{'BROWSER'};
+ } else {
+ if (get_setting("user_browser_path")) {
+ $browser = get_setting("user_browser_path");
+ }
+ }
+
+ if ( ($browser) && ( (-x $browser) || (-X $browser) ) ) {
+ note("Your environment states that $browser is your default program.");
+
+ $SIG{CHLD} = \&sigchild;
+
+ if (fork() == 0) {
+ my @args = ("$browser", "$url");
+
+ setsid();
+ close(STDIN);
+ close(STDOUT);
+ close(STDERR);
+
+ exec(@args) == 0
+ or note("The browser <$browser> does not exist. Please select another.");
+
+ exit 1;
+ }
+
+ }
return 1;