Current Path : /usr/local/bin/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //usr/local/bin/bnamazu |
#! /usr/local/bin/perl -w # -*- Perl -*- # # bnamazu -- search with "namazu" and browse its results with a web browser. # $Id: bnamazu.in,v 1.4.8.2 2004/09/19 03:37:44 opengl2772 Exp $ # # Copyright (C) 1998 Hajime BABA. All rights reserved. # # Modified by Satoru Takabayashi, 1998-1999. No rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either versions 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA use strict; my $namazu = "namazu"; my $namazu_opts = "-h"; # default options for namazu my $newwindow = 0; my $browser = "lynx"; # default web browser my $tmpdir = "."; $tmpdir = "/tmp" if -d "/tmp"; $tmpdir = $ENV{"TMPDIR"} if defined $ENV{"TMPDIR"}; my $user = "unknown"; $user = $ENV{"USER"} if defined $ENV{"USER"}; $user = $ENV{"USERNAME"} if defined $ENV{"USERNAME"}; main(); sub main { my @args = parse_options(); @args = map {"'$_'"} @args; my $results_html = ""; if ($browser =~ /netscape/) { # It is not good to remove a tmpfile immediately after invoking # netscape. Because netscape requires the tmpfile to go back to it. # So, we should remove a previous tmpfile at this time. unlink_previous_netscape_tmpfile(); $results_html = "$tmpdir/.bnamazu-$user-netscape-$$.html"; } else { $results_html = "$tmpdir/.bnamazu-$user-$$.html"; } # invoke namazu my $cmd = "$namazu $namazu_opts @args > $results_html 2> /dev/null"; system $cmd; # error handling if ($?) { print STDERR "$namazu: unknown error: $?\n"; exit 1; } # browse the result! exec_browser($results_html); exit 0; } sub usage () { print <<EOUsage; Usage: bnamazu [-n] [-b browser] [namazu's options] <query> [index]... -b browser set your faborite browser for browsing. [lynx] -n open a new window when you browse with netscape. Notes: Other options will be passed to namazu. EOUsage exit 1; } sub parse_options () { usage() if @ARGV == 0; while (@ARGV) { if ($ARGV[0] eq "-n") { $newwindow = 1; shift @ARGV; } elsif ($ARGV[0] eq "-b" && defined $ARGV[1]) { $browser = $ARGV[1]; shift @ARGV; shift @ARGV; } elsif ($ARGV[0] =~ /^-b(.+)/) { $browser = $1; shift @ARGV; } else { last; } } return @ARGV; } sub exec_browser ($) { my ($file) = @_; my $cmd = ""; if ($browser =~ /netscape/i) { my $netscape_lockfile = "$ENV{\"HOME\"}/.netscape/lock"; # if symbolic link exists if (-l $netscape_lockfile ) { # browse result with netscape. if ($newwindow) { $cmd = "$browser -noraise -remote 'openURL($file,new-window)'"; } else { $cmd = "$browser -remote 'openURL($file)'"; } } else { # invoke new netscape as a background process. $cmd = "$browser $file &"; } } else { # remove tmpfile immediately after a browser exits. $cmd = "$browser $file; rm -f $file"; } # go! system $cmd; } sub unlink_previous_netscape_tmpfile () { my @tmpfiles = glob "$tmpdir/.bnamazu-$user-netscape-[-0-9]*.html"; unlink @tmpfiles; }