#!/bin/sh
# -*- perl -*-
# This code allows us to start perl from our path or an environment variable
# rather than hardcoding a path into the #! line.  It works from sh or csh.
(exit $?0) && eval 'exec ${QPERLQ-perl} -x $0 ${1+"$@"}'
if (! $?QPERLQ) setenv QPERLQ perl
exec $QPERLQ -x $0 $argv:q

#!/usr/local/bin/perl -w
#
# $Id: flag-search,v 1.2 1998/05/10 14:29:51 ejb Exp $
# $Source: /home/ejb/scripts/RCS/flag-search,v $
# $Author: ejb $
#

{
    local(@whoami) = split('/', $0);
    $whoami = pop(@whoami);
};

&usage if (scalar(@ARGV) < 1);

@flags = (@ARGV);

$st_between = 0;
$st_index = 1;
$st_flags = 2;
$st_label = 3;
$st_extra = 4;

$state = $st_between;

while (<STDIN>)
{
    chop;
    s/%.*//;

    if ($state == $st_between)
    {
	m/^\s*$/ && next;
	$state = $st_index;
    }

    if ($state == $st_index)
    {
	m/^\s*$/ && do { $state = $st_between; next };
	m/^---/ && do { $state = $st_flags };
    }

    if ($state == $st_flags)
    {
	$label = "";
	$done = 0;
	s/^---\s*//;
	$print = 0;
	foreach $i (@flags)
	{
	    m/$i/ && ($print = 1);
	}
	$state = ($print ? $st_label : $st_extra);
	next;
    }

    if ($state == $st_label)
    {
	m/^---/ && do { $done = 1; $state = $st_extra; };
	m/^\s*$/ && do { $done = 1; $state = $st_between; };
	if (($done == 1) && ($label ne ""))
	{
	    print $label, "\n";
	}
	else
	{
	    $label .= $_ . "\n";
	}
    }

    if ($state == $st_extra)
    {
	m/^\s*$/ && do { $state = $st_between; next };
    }
}


sub usage {
    print STDERR "Usage: $whoami flag [ flag ... ] < list\n";
    exit 1;
}
