Makeclean.rc (1255B)
1 #!/bin/rc 2 3 # This script will remove any deleted scripts/dirs previously copied into $1 4 # If a directory is present, has previously been copied into $1, 5 # but no longer contains any executable scripts, this will also be removed. 6 7 bin = $1 8 9 touch .installed .dirsmade 10 installed = `$nl{cat .installed} 11 dirsmade = `$nl{cat .dirsmade} 12 13 fn sigexit { 14 if (~ $clean_installed ()) { 15 rm .installed 16 } else { 17 {for (s in $clean_installed) { echo $s }} > .installed 18 } 19 20 if (~ $clean_dirsmade ()) { 21 rm .dirsmade 22 } else { 23 {for (d in $clean_dirsmade) { echo $d }} > .dirsmade 24 } 25 } 26 27 for (s in $installed) { 28 p = $bin/$s 29 if (test -f $s && test -x $s) { 30 clean_installed = ($clean_installed $s) 31 } else { 32 echo RM $p 33 rm $p 34 removed = ($removed $p) 35 } 36 } 37 38 fn check_dir_used { 39 d = $1 { 40 for (s in $clean_installed) { 41 ds = `$nl{dirname $s} 42 if (!~ $ds '.') { 43 p = '.' 44 for (e in `$nl'/'{echo $ds}) { 45 p = $p/$e 46 if (~ `$nl{echo $p | sed 's/^\.\///'} $d){ 47 return 0 48 } 49 } 50 } 51 } 52 } 53 return 1 54 } 55 56 for (d in $dirsmade) { 57 p = $bin/$d 58 if (test -d $d && check_dir_used $d) { 59 clean_dirsmade = ($clean_dirsmade $d) 60 } else { 61 echo RMDIR $p 62 rmdir $p 63 removed = ($removed $p) 64 } 65 } 66 67 if (~ $removed ()) { 68 echo nothing to clean 69 }