#!/bin/rc # This script will remove any deleted scripts/dirs previously copied into $1 # If a directory is present, has previously been copied into $1, # but no longer contains any executable scripts, this will also be removed. bin = $1 touch .installed .dirsmade installed = `$nl{cat .installed} dirsmade = `$nl{cat .dirsmade} fn sigexit { if (~ $clean_installed ()) { rm .installed } else { {for (s in $clean_installed) { echo $s }} > .installed } if (~ $clean_dirsmade ()) { rm .dirsmade } else { {for (d in $clean_dirsmade) { echo $d }} > .dirsmade } } for (s in $installed) { p = $bin/$s if (test -f $s && test -x $s) { clean_installed = ($clean_installed $s) } else { echo RM $p rm $p removed = ($removed $p) } } fn check_dir_used { d = $1 { for (s in $clean_installed) { ds = `$nl{dirname $s} if (!~ $ds '.') { p = '.' for (e in `$nl'/'{echo $ds}) { p = $p/$e if (~ `$nl{echo $p | sed 's/^\.\///'} $d){ return 0 } } } } } return 1 } for (d in $dirsmade) { p = $bin/$d if (test -d $d && check_dir_used $d) { clean_dirsmade = ($clean_dirsmade $d) } else { echo RMDIR $p rmdir $p removed = ($removed $p) } } if (~ $removed ()) { echo nothing to clean }