[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.59 and 1.63

version 1.59, 2021/12/09 02:08:03 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 187 
Line 182 
 }  }
   
 usage() {  usage() {
         echo "Usage: fw_install [ driver | file [ ... ] ]"          echo "Usage: fw_install [ -d dir ] [ driver | file [ ... ] ]"
         exit 2          exit 2
 }  }
   
 while getopts '?' name  DOWNLOADDIR=
   while getopts d: name
 do  do
        case "$name" in         case "$name" in
          d) DOWNLOADDIR=$OPTARG ;;
        ?) usage 2 ;;         ?) usage 2 ;;
        esac         esac
 done  done
Line 217 
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 238 
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 255 
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.59  
changed lines
  Added in v.1.63

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