home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / ubiquity / apt-setup / apt-setup-verify next >
Encoding:
Text File  |  2006-04-17  |  1.1 KB  |  68 lines

  1. #!/bin/sh
  2. # verify and optionally save out the file
  3. set -e
  4.  
  5. NOTEST=""
  6. if [ "$1" = "--invalid" ]; then
  7.     NOTEST=1
  8.     shift
  9. fi
  10.  
  11. file="$1"
  12. saveto="$2"
  13.  
  14. if [ -n "$ROOT" ]; then
  15.     chroot=chroot
  16. else
  17.     chroot=
  18. fi
  19.  
  20. saveline () {
  21.     if [ "$saveto" ]; then
  22.         echo "$*" >> $saveto
  23.     fi
  24. }
  25.  
  26. valid () {
  27.     line="$1"
  28.  
  29.     tmp=$($chroot $ROOT tempfile)
  30.     echo "$line" > $ROOT$tmp
  31.     
  32.     if $chroot $ROOT apt-get -o APT::Get::List-Cleanup=false \
  33.         -o Dir::Etc::sourcelist=$tmp update
  34.     then
  35.         rm -f $ROOT$tmp
  36.     else
  37.         rm -f $ROOT$tmp
  38.         false
  39.     fi
  40. }
  41.  
  42. items=0
  43. gooditems=0
  44.  
  45. IFS="
  46. "
  47. # Can't just iterate over $(cat $file) because that kills newlines, so
  48. # introduce a dummy colon.
  49. for line in $(sed 's/^/:/' $file); do
  50.     line="${line#:}"
  51.     if expr "$line" : '.*[^ ].*' >/dev/null && [ "$(expr "$line" : "#")" != 1 ]; then
  52.         items=$(expr "$items" + 1)
  53.         if [ -z "$NOTEST" ] && valid "$line"; then
  54.             gooditems=$(expr "$gooditems" + 1)
  55.             saveline "$line"
  56.         else
  57.             saveline "# Line commented out by installer because it failed to verify:"
  58.             saveline "#$line"
  59.         fi
  60.     else
  61.         saveline "$line"
  62.     fi
  63. done
  64.  
  65. if [ "$gooditems" != "$items" ]; then
  66.     exit 1
  67. fi
  68.