[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.38 and 1.45

version 1.38, 2021/12/01 02:06:41 version 1.45, 2021/12/02 03:44:19
Line 22 
Line 22 
 }  }
   
 # tmpdir, do_as, unpriv, and unpriv2 are from install.sub  # tmpdir, do_as, unpriv, and unpriv2 are from install.sub
   # modified to use su(1) when not in the installer.
   # modified to use mktemp(1) when not in the installer.
   
 # Create a temporary directory based on the supplied directory name prefix.  # Create a temporary directory based on the supplied directory name prefix.
 tmpdir() {  tmpdir() {
         local _i=1 _dir          local _i=1 _dir
           if [[ -z $1 ]]; then
                   echo No tmpdir >&2
                   exit 1
           fi
   
         until _dir="${1?}.$_i.$RANDOM" && mkdir -- "$_dir" 2>/dev/null; do          if [[ -e /usr/bin/mktemp ]]; then
                 ((++_i < 10000)) || return 1                  _dir=$( /usr/bin/mktemp -d $1 )
         done                  chown _sndio "$_dir"
           else
                   until _dir="${1%-+(X)}.$_i.$RANDOM" && mkdir -- "$_dir" 2>/dev/null; do
                       ((++_i < 10000)) || return 1
                   done
           fi
         echo "$_dir"          echo "$_dir"
 }  }
   
Line 57 
Line 68 
                 chown "$_user" "$_file"                  chown "$_user" "$_file"
         fi          fi
   
         doas -u "$_user" "$@"          if [[ -x /usr/bin/su ]]; then
                   /usr/bin/su -s /bin/ksh "$_user" -c "$*"
           else
                   doas -u "$_user" "$@"
           fi
         _rc=$?          _rc=$?
   
         while doas -u "$_user" kill -9 -1 2>/dev/null; do          while doas -u "$_user" kill -9 -1 2>/dev/null; do
Line 81 
Line 96 
 VNAME=${VNAME:-$(sysctl -n kern.osrelease)}  VNAME=${VNAME:-$(sysctl -n kern.osrelease)}
 VERSION=${VERSION:-"${VNAME%.*}${VNAME#*.}"}  VERSION=${VERSION:-"${VNAME%.*}${VNAME#*.}"}
 FWDIR=${FWDIR:-$VNAME}  FWDIR=${FWDIR:-$VNAME}
 MODE=${MODE:-install}  
   
 # TODO: We need the firmware for the system we just installed  # TODO: We need the firmware for the system we just installed
 #       not the one we booted from.  For example:  #       not the one we booted from.  For example:
Line 108 
Line 122 
                 _f _r _remove _i _installed                  _f _r _remove _i _installed
         local _srclocal=false _unpriv=unpriv          local _srclocal=false _unpriv=unpriv
   
         echo "Let's $MODE firmware!"  
         local _d _drivers=$(          local _d _drivers=$(
                 last=''                  last=''
                 while read _d _m; do                  while read _d _m; do
Line 141 
Line 154 
                 # Create a download directory for the firmware and                  # Create a download directory for the firmware and
                 # check that the _sndio user can read files from                  # check that the _sndio user can read files from
                 # it. Otherwise cleanup and skip the filesystem.                  # it. Otherwise cleanup and skip the filesystem.
                 if _tmpsrc=$(tmpdir "$_tmpfs/firmware"); then                  if _tmpsrc=$(tmpdir "$_tmpfs/firmware-XXXXXXXXX"); then
                         (                          (
                         >$_tmpsrc/t &&                          >$_tmpsrc/t &&
                         $_unpriv cat $_tmpsrc/t                          $_unpriv cat $_tmpsrc/t
Line 167 
Line 180 
             echo "Signature check of SHA256.sig failed" >&2 && return 1              echo "Signature check of SHA256.sig failed" >&2 && return 1
   
         for _d in $_drivers; do          for _d in $_drivers; do
                 _f=$( sed -n "s/.*(\($_d-firmware-.*\.tgz\)).*/\1/p" "$_cfile" )                  _f=$( sed -n "s/.*(\($_d-firmware-.*\.tgz\)).*/\1/p" "$_cfile" | sed '$!d' )
                 _installed=$(                  _installed=$(
                 for fw in "${_pkgdir}/$_d-firmware"*; do                  for fw in "${_pkgdir}/$_d-firmware"*; do
                         [ -e "$fw" ] || continue                          [ -e "$fw" ] || continue

Legend:
Removed from v.1.38  
changed lines
  Added in v.1.45

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