Re: Annoucement: Local Browser Execution
Date: Wed, 15 Dec 93 17:41:08 +0100
Message-id: <>
To: Axel Belinfante <>
Subject: Re: Annoucement: Local Browser Execution
In-reply-to: <>
References: <> <>
Reply-To: writes:
> It should catch the standard output of the commands in a (tmp)file, and
> be ready to give this file to Mosaic via the remote control feature.
> This is where the information about the document BASE will be needed:
> the stdout of the command is supposed to be HTML, which might contain
> relative links. I think that the Mosaic feature recently added to
> handle mailed documents will solve/handle this.
> One remaing problem: how/when do we remove the tmp-file that contains
> the standard output?
> What do people think? Could this be made to work? I'll try anyway.. :-)

I have tried it and it works:

----------------------------------------------cut here----------

$allowed = "(imaker|cal|ls)$";  # only programs that match this regex are allowed to run

$file = shift || &usage;
open(F, "$file") || die;
$cmd = <F>;
#print "<$cmd>\n"; exit;
@ARGV = split(/ /, $cmd);

if ($ARGV[0] =~ /^-/) {
   $how = shift;
   grep($_ eq $how, "-html", "-text", "-xterm", "-null") || &usage;
$how = "-html" unless defined $how;
die "Not allowed to run this program \"$ARGV[0]\""
    unless $ARGV[0] =~ /$allowed/;

if ($how eq "-text" || $how eq "-html")
   open(PIDFILE, "$ENV{'HOME'}/.mosaicpid") || die "No mosaic is running";
   $pid = <PIDFILE>;

   $tmpfile = "/tmp/out-$$";
   $tmpfile .= ".txt"  if $how eq "-text";
   $tmpfile .= ".html" if $how eq "-html";
   open(STDOUT, ">$tmpfile");
if ($how eq "-null")
   open(STDOUT, ">/dev/null");
   open(STDERR, ">/dev/null");
if ($how eq "-xterm")
   @xterm = ("xterm", "-e");

open(STDIN, "/dev/null");

system @xterm,@ARGV;

if ($how eq "-text" || $how eq "-html")
   open(CONTROL,"> /tmp/Mosaic.$pid");
   print CONTROL "goto\n";
   print CONTROL "file://localhost$tmpfile\n";


   kill "USR1",$pid;
   system "(sleep 5; rm -f $tmpfile)&"

sub usage
   die "Usage: mosaic-run [-text|-html|-xterm|-null] command args...\n";