#!/bin/bash #name=pkgthing program finder #version=??? # Copyright (C) 2009 Luke Shumaker # # 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 version 2 of the # License, 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; see the file COPYING. # If not, see . # option handling case "$1" in -v|-q) volume=$1; prog=$2;; *) prog="$1";; esac # core error() { echo "$0:$@" exit 1 } checkList() { prog=$1 src=$2 file=$3 sed -n "s/^\($prog\) \.* \(.*\)/\1\t\2/p" "$src/$file" | \ while read line; do _prg=`echo "$line" | cut -f 1` _pkg=`echo "$line" | cut -f 2` echo "\`$_prg' is in the $src package \`$_pkg'" if [ "$volume" == '-v' ]; then pkgthing search "$_pkg" "$src" | sed 's/^\(.\)/ \1/g' fi done } useVar() { var=$1 val=$2 case "$var" in \$name) _name="$val";; \$union) :;; \$progs) checkList "$prog" "$_name" "$val" :;; esac } # parse files for lst in *.lst; do _name='oops' while read line; do if [ -n "$line" ]; then case "$line" in \#*) :;; # comment, do nothing \$*) # setting a variable var=${line%%=*} val=${line#$var=} useVar "$var" "$val" :;; *) :;; # setting a source esac fi done < "$lst" done