[BACK]Return to fw_install.sh CVS log [TXT][DIR] Up to [local] / openbsd / fw_update

Diff for /openbsd/fw_update/fw_install.sh between version 1.58 and 1.64

version 1.58, 2021/12/08 03:51:48 version 1.64, 2021/12/09 02:37:38
Line 61 
Line 61 
 fetch() {  fetch() {
         local _file=$1 _user=_file _exit          local _file=$1 _user=_file _exit
   
         >"$_file"  
         chown "$_user" "$_file"  
   
         # If we're not in the installer, we have su(1)          # If we're not in the installer, we have su(1)
         # and doas(1) is unlikely to be configured.          # and doas(1) is unlikely to be configured.
         if [ -x /usr/bin/su ]; then          if [ -x /usr/bin/su ]; then
                 /usr/bin/su -s /bin/ksh "$_user" -c \                  /usr/bin/su -s /bin/ksh "$_user" -c \
                     "/usr/bin/ftp -D 'Get/Verify' -Vm \                      "/usr/bin/ftp -D 'Get/Verify' -Vm \
                         -o '$_file' '${FWURL}/${_file}'"                          -o- '${FWURL}/${_file}'" > "$_file"
                 _exit="$?"                  _exit="$?"
         else          else
                 /usr/bin/doas -u "$_user" \                  /usr/bin/doas -u "$_user" \
                     ftp -D 'Get/Verify' -Vm \                      ftp -D 'Get/Verify' -Vm \
                         -o "$_file" "${FWURL}/${_file}"                          -o- "${FWURL}/${_file}" > "$_file"
                 _exit="$?"                  _exit="$?"
         fi          fi
   
Line 83 
Line 80 
                 echo "Cannot fetch $_file" >&2                  echo "Cannot fetch $_file" >&2
                 return 1                  return 1
         fi          fi
   
         chown root "$_file"  
 }  }
   
 verify() {  verify() {
Line 186 
Line 181 
         done          done
 }  }
   
   usage() {
           echo "Usage: fw_install [ -d dir | -L dir ] [ driver | file [ ... ] ]"
           exit 2
   }
   
   DOWNLOADDIR=
   LOCALDIR=
   while getopts d:L: name
   do
          case "$name" in
          d) DOWNLOADDIR=$OPTARG ;;
          L) LOCALDIR=$OPTARG    ;;
          ?) usage 2 ;;
          esac
   done
   shift $((OPTIND - 1))
   
   if [[ -n "${DOWNLOADDIR:-}" && -n "${LOCALDIR:-}" ]]; then
           echo "Cannot use -d and -L" >&2
           usage 2
   fi
   
 set -A devices -- "$@"  set -A devices -- "$@"
   
 [ "${devices[*]:-}" ] ||  [ "${devices[*]:-}" ] ||
Line 204 
Line 221 
         d=$( firmware_devicename "$f" )          d=$( firmware_devicename "$f" )
         [ "$f" = "$d" ] && f="$( echo "$f"-firmware-*.tgz | sed '$!d' )"          [ "$f" = "$d" ] && f="$( echo "$f"-firmware-*.tgz | sed '$!d' )"
         if [ -e "$f" ]; then          if [ -e "$f" ]; then
                   if [ "${DOWNLOADDIR:-}" ]; then
                           echo "Cannot download local file $f" >&2
                           exit 2
                   fi
                 devices[$i]="$d:$( realpath "$f" )"                  devices[$i]="$d:$( realpath "$f" )"
         fi          fi
         i=$((i + 1))          i=$((i + 1))
 done  done
   
 TMPDIR=$( tmpdir "${DESTDIR}/tmp/fw_install" )  if [ "$DOWNLOADDIR" ]; then
 cd "$TMPDIR"          if ! cd "$DOWNLOADDIR"; then
                   echo "Unable to use $DOWNLOADDIR, make sure it is a directory"
                   exit 2
           fi
   elif [ "$LOCALDIR" ]; then
           if ! cd "$LOCALDIR"; then
                   echo "Unable to use $LOCALDIR, make sure it is a directory"
                   exit 2
           fi
   else
           TMPDIR=$( tmpdir "${DESTDIR}/tmp/fw_install" )
           cd "$TMPDIR"
   fi
   
 # To unpriv we need to let the unpriv user into this dir  if ! [[ -n "$LOCALDIR" && -e "$CFILE" ]]; then
 chmod go+x .          fetch "$CFILE"
           ! signify -qVep "$FWPUB_KEY" -x "$CFILE" -m "$CFILE" &&
               echo "Signature check of SHA256.sig failed" >&2 && exit 1
   fi
   
 fetch "$CFILE"  
 ! signify -qVep "$FWPUB_KEY" -x "$CFILE" -m "$CFILE" &&  
     echo "Signature check of SHA256.sig failed" >&2 && exit 1  
   
 for d in "${devices[@]}"; do  for d in "${devices[@]}"; do
         f="${d##*:}"          f="${d##*:}"
         if [ "$f" = "$d" ]; then          if [ "$f" = "$d" ]; then
                 f=$( firmware_filename "$d" || true )                  f=$( firmware_filename "$d" || true )
                 [ "$f" ] || continue                  [ "$f" ] || continue
         else          else
             d="${d%:*}"                  d="${d%:*}"
         fi          fi
   
         set -A installed -- $( installed_firmware "$d" )          set -A installed -- $( installed_firmware "$d" )
   
         if [ "${installed:-}" ]; then          if [ ! "${DOWNLOADDIR:-}" ] && [ "${installed:-}" ]; then
                 for i in "${installed[@]:-}"; do                  for i in "${installed[@]:-}"; do
                         if [ "${f##*/}" = "$i.tgz" ]; then                          if [ "${f##*/}" = "$i.tgz" ]; then
                                 echo "$i already installed"                                  echo "$i already installed"
Line 240 
Line 272 
         fi          fi
   
         if [ ! -e "$f" ]; then          if [ ! -e "$f" ]; then
                   [ "$LOCALDIR" ] && echo "Cannot install $f, not found" >&2 && continue
                 fetch  "$f" || continue                  fetch  "$f" || continue
                 verify "$f" || continue                  verify "$f" || continue
           elif [ "${DOWNLOADDIR:-}" ]; then
                   echo "Already have $f"
                   verify "$f" || continue
         fi          fi
   
           [ "${DOWNLOADDIR:-}" ] && continue
   
         if [ "${installed:-}" ]; then          if [ "${installed:-}" ]; then
                 for i in "${installed[@]}"; do                  for i in "${installed[@]}"; do

Legend:
Removed from v.1.58  
changed lines
  Added in v.1.64

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>