#! /bin/sh # -*-sh-*- # # Find files which could be links to the repository # # (c) 1997 Mark Wooding # #----- Licensing notice ----------------------------------------------------- # # This file is part of the Common Files Distribution (`common'). # # `Common' 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. # # `Common' 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 `common'; if not, write to the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # --- Configuration variables --- prefix=@prefix@ datarootdir=@datarootdir@ datadir=@datadir@/@PACKAGE@ # --- Parse command line arguments --- while [ $# -gt 0 ]; do case $1 in -h | --h | --he | --hel | --help) cat <&2 exit 1 ;; esac shift done # --- Read the names of all the files I support --- # # Yes, this is ugly and hacky: well spotted. Shells have a nasty habit of # spontaneously forking when redirection gets too hard for them to think # about, so instead of something nice along the lines of # # find ... | while read name; do done # # I have to stick the whole lot in backticks and echo the result when it's # all done. Yuk. # # Oh, I almost forgot: that colon on the end there, that's to make sure that # all the entries are surrounded by colons on both sides, which makes the # pattern match in the `case' below work properly. files=` files="" find $datadir -type f -print | { while read name; do files="$files:\`echo $name | sed -e 's;^.*/;;'\`" done echo $files; } `: # --- Now examine the current directory --- # # Remember to include things which are already linked, so that users can say # `findlinks >.links' without any problems. find . \( -type f -o -type l \) -print | while read name; do base="`echo $name | sed -e 's;^.*/;;'`" case "$files" in *:$base:*) echo $name ;; *) esac done | sed -e 's,^\./,,' | sort