Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Jun 2003 23:16:12 -0400
From:      parv <parv_fm@emailgroups.net>
To:        f-questions <freebsd-questions@freebsd.org>
Subject:   Re: mozilla is started instead of genuine netscape while opening a new window
Message-ID:  <20030627031612.GA92994@moo.holy.cow>
In-Reply-To: <20030619074104.GA70732@moo.holy.cow>
References:  <20030619074104.GA70732@moo.holy.cow>

next in thread | previous in thread | raw e-mail | index | archive | help
in message <20030619074104.GA70732@moo.holy.cow>, wrote parv
thusly...
>
> Problem does not happen when the genuine netscape is not running.
> In that case, it is started anew.  In addition, mozilla doesn't
> start if its is not already running.
> 
> Say, i have /both/ mozilla & netscape running.  If i want to open
> a new window of the genuine netscape, thru netscape-wrapper,
> a mozilla window is opened instead of navigator's.

Since nobody has replied, allow me to share the /workaround/, not a
real solution to the problem, which calls "netscape", from
netscape-wrapper port, only when mozilla is not

An optional URI is the only argument it takes/uses on the command
line.  It assumes that linux-netscape-navigator-4.8 port has been
installed.

  #!/usr/local/bin/perl -w

  use strict;

  #  regex to identify desired processes in ps output
  my $moz =
    { 're' => qr/^ [^\s]+ \b mozilla-bin \b/x
    , 'exists' => 0
    };
  my $netscape =
    { 're' => qr/^ [^\s]+ \b navigator-linux-\d+\.\d+\.bin \b/x
    , 'exists' => 0
    };

  exec_netscape( $moz , $netscape );

  sub exec_netscape
  { my ($moz , $netscape) = @_;

    #  "&sub;" usage is INTENTIONAL
    &find_proc;

    my @ex;
    push @ex
      , $moz->{'exists'} ? 'navigator-linux-4.8' : 'netscape'
      ;

    if ($netscape->{'exists'})
    { push @ex
        , qw{ -irix-session-management -remote }
        , ( !scalar @ARGV
            ? qw{ 'xfeDoCommand(openBrowser)' }
            : qw{ 'openURL( }
              . +(shift @ARGV)
              . " , new-window)'"
          )
        ;
    }

    system "@ex &"
      and die "@ex failed: $? $!\n";
  }

  sub find_proc
  { my @proc = qx/ps -axww/ or die "'ps -axww'  failed: $!\n";
    chomp @proc;

    foreach my $h (@_)
    { next if $h->{'exists'};

      foreach my $p (@proc)
      { last if $h->{'exists'};

        ++$h->{'exists'}
          if (split ' ' , $p , 5 )[-1] =~ m/ $h->{'re'} /x;
      }
    }
  }
  __END__


Happy programming!


  - Parv

-- 
A programmer, budding Unix system administrator, and amateur photographer
ISO employment...

  http://www103.pair.com/parv/work/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030627031612.GA92994>