[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.63

version 1.58, 2021/12/08 03:51:48 version 1.63, 2021/12/09 02:23:15
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 ] [ driver | file [ ... ] ]"
           exit 2
   }
   
   DOWNLOADDIR=
   while getopts d: name
   do
          case "$name" in
          d) DOWNLOADDIR=$OPTARG ;;
          ?) usage 2 ;;
          esac
   done
   shift $((OPTIND - 1))
   
 set -A devices -- "$@"  set -A devices -- "$@"
   
 [ "${devices[*]:-}" ] ||  [ "${devices[*]:-}" ] ||
Line 204 
Line 214 
         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
   else
           TMPDIR=$( tmpdir "${DESTDIR}/tmp/fw_install" )
           cd "$TMPDIR"
   fi
   
 # To unpriv we need to let the unpriv user into this dir  
 chmod go+x .  
   
 fetch "$CFILE"  fetch "$CFILE"
 ! signify -qVep "$FWPUB_KEY" -x "$CFILE" -m "$CFILE" &&  ! signify -qVep "$FWPUB_KEY" -x "$CFILE" -m "$CFILE" &&
     echo "Signature check of SHA256.sig failed" >&2 && exit 1      echo "Signature check of SHA256.sig failed" >&2 && exit 1
Line 225 
Line 243 
                 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 242 
Line 260 
         if [ ! -e "$f" ]; then          if [ ! -e "$f" ]; then
                 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.63

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