| version 1.68, 2021/12/11 03:56:35 | 
version 1.69, 2021/12/11 05:08:38 | 
 | 
 | 
|  FWURL=http://firmware.openbsd.org/firmware/${HTTP_FWDIR} | 
 FWURL=http://firmware.openbsd.org/firmware/${HTTP_FWDIR} | 
|  FWPUB_KEY=${DESTDIR}/etc/signify/openbsd-${VERSION}-fw.pub | 
 FWPUB_KEY=${DESTDIR}/etc/signify/openbsd-${VERSION}-fw.pub | 
|   | 
  | 
|   | 
 LOCALSRC= | 
|   | 
  | 
|  tmpdir() { | 
 tmpdir() { | 
|          local _i=1 _dir | 
         local _i=1 _dir | 
|   | 
  | 
 | 
 | 
|  } | 
 } | 
|   | 
  | 
|  fetch() { | 
 fetch() { | 
|          local _file=$1 _user=_file _exit | 
         local _src="${FWURL}/${1##*/}" _dst=$1 _user=_file _exit | 
|   | 
  | 
|          # 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- '$_src'" > "$_dst" | 
|                          -o- '${FWURL}/${_file}'" > "$_file" | 
  | 
|                  _exit="$?" | 
                 _exit="$?" | 
|          else | 
         else | 
|                  /usr/bin/doas -u "$_user" \ | 
                 /usr/bin/doas -u "$_user" \ | 
|                      ftp -D 'Get/Verify' -Vm \ | 
                     /usr/bin/ftp -D 'Get/Verify' -Vm -o- "$_src" > "$_dst" | 
|                          -o- "${FWURL}/${_file}" > "$_file" | 
  | 
|                  _exit="$?" | 
                 _exit="$?" | 
|          fi | 
         fi | 
|   | 
  | 
|          if [ "$_exit" -ne 0 ]; then | 
         if [ "$_exit" -ne 0 ]; then | 
|                  rm -f "$_file" | 
                 rm -f "$_dst" | 
|                  echo "Cannot fetch $_file" >&2 | 
                 echo "Cannot fetch $_src" >&2 | 
|                  return 1 | 
                 return 1 | 
|          fi | 
         fi | 
|  } | 
 } | 
|   | 
  | 
|  verify() { | 
 verify() { | 
|          # On the installer we don't get sha256 -C, so fake it. | 
         # On the installer we don't get sha256 -C, so fake it. | 
|          if ! fgrep -qx "SHA256 ($1) = $( /bin/sha256 -qb "$1" )" "$CFILE"; then | 
         if ! fgrep -qx "SHA256 (${1##*/}) = $( /bin/sha256 -qb "$1" )" "$CFILE"; then | 
|                  echo "Checksum test for $1 failed." >&2 | 
                 echo "Checksum test for ${1##*/} failed." >&2 | 
|                  return 1 | 
                 return 1 | 
|          fi | 
         fi | 
|  } | 
 } | 
 | 
 | 
|          local _f="${1##*/}" _pkgdir="${DESTDIR}/var/db/pkg" | 
         local _f="${1##*/}" _pkgdir="${DESTDIR}/var/db/pkg" | 
|          ftp -D "Install" -Vmo- "file:${1}" | | 
         ftp -D "Install" -Vmo- "file:${1}" | | 
|                  tar -s ",^\+,${_pkgdir}/${_f%.tgz}/+," \ | 
                 tar -s ",^\+,${_pkgdir}/${_f%.tgz}/+," \ | 
|                  -s ",^firmware,${DESTDIR}/etc/firmware," \ | 
                     -s ",^firmware,${DESTDIR}/etc/firmware," \ | 
|                  -C / -zxphf - "+*" "firmware/*" | 
                     -C / -zxphf - "+*" "firmware/*" | 
|   | 
  | 
|          # TODO: Should we mark these so real fw_update can -Drepair? | 
         # TODO: Should we mark these so real fw_update can -Drepair? | 
|          ed -s "${_pkgdir}/${_f%.tgz}/+CONTENTS" <<EOL | 
         ed -s "${_pkgdir}/${_f%.tgz}/+CONTENTS" <<EOL | 
 | 
 | 
|   | 
  | 
|  INSTALL=true | 
 INSTALL=true | 
|  DOWNLOAD=true | 
 DOWNLOAD=true | 
|  LOCALDIR=false | 
  | 
|   | 
  | 
|  while getopts dL name | 
 while getopts dL name | 
|  do | 
 do | 
|         case "$name" in | 
        case "$name" in | 
|         # "download only" means local dir and don't install | 
        # "download only" means local dir and don't install | 
|         d) LOCALDIR=true INSTALL=false ;; | 
        d) LOCALSRC=. INSTALL=false ;; | 
|         L) LOCALDIR=true ;; | 
        L) LOCALSRC=. ;; | 
|         ?) usage 2 ;; | 
        ?) usage 2 ;; | 
|         esac | 
        esac | 
|  done | 
 done | 
 | 
 | 
|   | 
  | 
|  # If we're installing from a local dir | 
 # If we're installing from a local dir | 
|  # we don't want to download anything | 
 # we don't want to download anything | 
|  "$LOCALDIR" && "$INSTALL" && DOWNLOAD=false | 
 [ "$LOCALSRC" ] && "$INSTALL" && DOWNLOAD=false | 
|   | 
 [ "$LOCALSRC" ] || LOCALSRC="$( tmpdir "${DESTDIR}/tmp/fw_install" )" | 
|   | 
  | 
|  set -A devices -- "$@" | 
 set -A devices -- "$@" | 
|   | 
  | 
 | 
 | 
|          i=$((i + 1)) | 
         i=$((i + 1)) | 
|  done | 
 done | 
|   | 
  | 
|  if ! "$LOCALDIR"; then | 
  | 
|          cd "$( tmpdir "${DESTDIR}/tmp/fw_install" )" | 
  | 
|  fi | 
  | 
|   | 
  | 
|  if "$DOWNLOAD" && ! [[ -e "$CFILE" ]]; then | 
 if "$DOWNLOAD" && ! [[ -e "$CFILE" ]]; then | 
|          fetch "$CFILE" | 
         fetch "$CFILE" | 
|          ! signify -qVep "$FWPUB_KEY" -x "$CFILE" -m "$CFILE" && | 
         ! signify -qVep "$FWPUB_KEY" -x "$CFILE" -m "$CFILE" && | 
 | 
 | 
|          if [ "$f" = "$d" ]; then | 
         if [ "$f" = "$d" ]; then | 
|                  f=$( firmware_filename "$d" || true ) | 
                 f=$( firmware_filename "$d" || true ) | 
|                  [ "$f" ] || continue | 
                 [ "$f" ] || continue | 
|   | 
                 f="$LOCALSRC/$f" | 
|          else | 
         else | 
|                  d="${d%:*}" | 
                 d="${d%:*}" | 
|          fi | 
         fi | 
 | 
 | 
|   | 
  | 
|          if [ ! -e "$f" ]; then | 
         if [ ! -e "$f" ]; then | 
|                  "$INSTALL" && ! "$DOWNLOAD" && | 
                 "$INSTALL" && ! "$DOWNLOAD" && | 
|                      echo "Cannot install $f, not found" >&2 && continue | 
                     echo "Cannot install ${f##*/}, not found" >&2 && continue | 
|                  fetch  "$f" || continue | 
                 fetch  "$f" || continue | 
|                  verify "$f" || continue | 
                 verify "$f" || continue | 
|          elif $DOWNLOAD; then | 
         elif $DOWNLOAD; then |