diff --git a/src/answer.sh b/src/answer.sh
index 91026bdc..2c546930 100644
--- a/src/answer.sh
+++ b/src/answer.sh
@@ -6,14 +6,13 @@ validateResolution() {
local name="$1"
local value="$2"
local minimum="$3"
- local number
if [[ ! "$value" =~ ^[0-9]+$ ]] || [ "${#value}" -gt 5 ]; then
error "The $name variable must be between $minimum and 16384!"
return 1
fi
- number=$((10#$value))
+ local number=$((10#$value))
if [ "$number" -lt "$minimum" ] || [ "$number" -gt 16384 ]; then
error "The $name variable must be between $minimum and 16384!"
@@ -64,7 +63,7 @@ validateComputerName() {
validateWorkgroup() {
local value="$1"
- local safe=""
+ local safe
[ -z "$value" ] && return 0
@@ -498,7 +497,7 @@ updateDomain() {
local asset="$1"
local domain account auth pass
- local cred_domain ou arch tmp result
+ local ou arch tmp
domain=$(escapeXML "$2") || return 1
account=$(escapeXML "$3") || return 1
@@ -512,7 +511,7 @@ updateDomain() {
[ -z "$arch" ] && return 1
- cred_domain="$domain"
+ local cred_domain="$domain"
case "$4" in
*@* ) cred_domain="" ;;
@@ -521,7 +520,7 @@ updateDomain() {
grep -Eq 'Microsoft-Windows-UnattendedJoin|])' "$asset" && return 1
tmp=$(mktemp -d) || return 1
- result="$tmp/answer.xml"
+ local result="$tmp/answer.xml"
if ! DOMAIN_XML="$domain" ACCOUNT_XML="$account" \
AUTH_XML="$auth" PASS_XML="$pass" \
@@ -618,7 +617,7 @@ updateDomain() {
updateWorkgroup() {
local asset="$1"
- local workgroup arch tmp result
+ local workgroup arch tmp
workgroup=$(escapeXML "$2") || return 1
arch=$(sed -n -E '0,/processorArchitecture="/s/.*processorArchitecture="([^"]+)".*/\1/p' "$asset") || return 1
@@ -627,7 +626,7 @@ updateWorkgroup() {
grep -q 'Microsoft-Windows-UnattendedJoin' "$asset" && return 1
tmp=$(mktemp -d) || return 1
- result="$tmp/answer.xml"
+ local result="$tmp/answer.xml"
if ! WORKGROUP_XML="$workgroup" ARCH_XML="$arch" awk '
/]*pass="specialize"[^>]*>/ { section = "specialize" }
@@ -661,9 +660,8 @@ updateXML() {
local asset="$1"
local language="$2"
- local app value culture region keyboard edition
- local user user_xml auth_user admin pass pw
- local domain qualifier host workgroup key
+ local app value culture admin key
+ local user user_xml edition pw host
[ -z "${WIDTH:-}" ] && WIDTH="1280"
[ -z "${HEIGHT:-}" ] && HEIGHT="720"
@@ -693,7 +691,7 @@ updateXML() {
sed -i "s|en-US|$value|g" "$asset" || return 1
fi
- region="${REGION:-}"
+ local region="${REGION:-}"
[ -z "$region" ] && region="$culture"
if [ -n "$region" ] && [[ "${region,,}" != "en-us" ]]; then
@@ -702,7 +700,7 @@ updateXML() {
sed -i "s|en-US|$value|g" "$asset" || return 1
fi
- keyboard="${KEYBOARD:-}"
+ local keyboard="${KEYBOARD:-}"
[ -z "$keyboard" ] && keyboard="$culture"
if [ -n "$keyboard" ] && [[ "${keyboard,,}" != "en-us" ]]; then
@@ -711,8 +709,8 @@ updateXML() {
sed -i "s|0409:00000409|$value|g" "$asset" || return 1
fi
- domain="${DOMAIN:-}"
- workgroup="${WORKGROUP:-}"
+ local domain="${DOMAIN:-}"
+ local workgroup="${WORKGROUP:-}"
if [ -n "$domain" ]; then
@@ -728,8 +726,8 @@ updateXML() {
validateDomainName "$domain" || return 1
- auth_user="$USERNAME"
- qualifier=""
+ local auth_user="$USERNAME"
+ local qualifier=""
if [[ "$auth_user" == *\\* ]]; then
error "The USERNAME variable must use either \"user\" or \"user@domain\" format!"
@@ -785,7 +783,7 @@ updateXML() {
sed -i "s|Docker|$user_xml|g" "$asset" || return 1
fi
- [ -n "${PASSWORD:-}" ] && pass="$PASSWORD" || pass="admin"
+ local pass="${PASSWORD:-admin}"
pw=$(printf '%s' "${pass}Password" | iconv -f utf-8 -t utf-16le | base64 -w 0) || return 1
admin=$(printf '%s' "${pass}AdministratorPassword" | iconv -f utf-8 -t utf-16le | base64 -w 0) || return 1
@@ -966,13 +964,11 @@ validateLegacyUsername() {
legacyInstall() {
- local pid=""
- local file=""
local dir="$2"
local desc="$3"
local driver="$4"
local drivers="/tmp/drivers"
- local shortcut="Y"
+ local pid file shortcut="Y"
if disabled "$SHORTCUT" || disabled "${SAMBA:-Y}"; then
shortcut="N"
@@ -989,9 +985,10 @@ legacyInstall() {
error "Failed to locate file \"$ETFS\" in $desc ISO image!" && return 1
fi
- local arch target
- [ -d "$dir/AMD64" ] && arch="amd64" || arch="x86"
- [[ "${arch,,}" == "x86" ]] && target="$dir/I386" || target="$dir/AMD64"
+ local arch="amd64"
+ [ ! -d "$dir/AMD64" ] && arch="x86"
+ local target="$dir/AMD64"
+ [[ "${arch,,}" == "x86" ]] && target="$dir/I386"
if [ ! -d "$target" ]; then
error "Failed to locate directory \"$target\" in $desc ISO image!" && return 1
@@ -1449,14 +1446,12 @@ legacyPrepare() {
rm -f "$dir/$ETFS" || return 1
rm -rf "$tmp" || return 1
- local rc
-
LC_ALL=C xorriso \
-no_rc \
-osirrox on \
-indev "$iso" \
-extract_boot_images "$tmp" >/dev/null 2>&1 || {
- rc=$?
+ local rc=$?
rm -rf "$tmp" || true
(( rc > 128 )) && exit "$rc"
diff --git a/src/define.sh b/src/define.sh
index 3b19ddec..816eb4c3 100644
--- a/src/define.sh
+++ b/src/define.sh
@@ -541,7 +541,7 @@ printEdition() {
local desc="$2"
local show_eval="${3:-N}"
local normalized="${id,,}"
- local result="" edition="" suffix=""
+ local result edition="" suffix=""
result=$(printVersion "$id" "x")
[[ "$result" == "x" ]] && echo "$desc" && return 0
@@ -636,14 +636,11 @@ fromFile() {
case "$file" in
*"_x64_"* | *"_x64."*)
- arch="x64"
- ;;
+ arch="x64" ;;
*"_x86_"* | *"_x86."*)
- arch="x86"
- ;;
+ arch="x86" ;;
*"_arm64_"* | *"_arm64."*)
- arch="arm64"
- ;;
+ arch="arm64" ;;
esac
local add=""
@@ -651,59 +648,41 @@ fromFile() {
case "$file" in
"win7"* | "win_7"* | *"windows7"* | *"windows_7"* )
- id="win7${arch}"
- ;;
+ id="win7${arch}" ;;
"win8"* | "win_8"* | *"windows8"* | *"windows_8"* )
- id="win81${arch}"
- ;;
+ id="win81${arch}" ;;
"win10"*| "win_10"* | *"windows10"* | *"windows_10"* )
- id="win10${arch}"
- ;;
+ id="win10${arch}" ;;
"win11"* | "win_11"* | *"windows11"* | *"windows_11"* )
- id="win11${arch}"
- ;;
+ id="win11${arch}" ;;
*"winxp"* | *"win_xp"* | *"windowsxp"* | *"windows_xp"* )
- id="winxpx86"
- ;;
+ id="winxpx86" ;;
*"winvista"* | *"win_vista"* | *"windowsvista"* | *"windows_vista"* )
- id="winvista${arch}"
- ;;
+ id="winvista${arch}" ;;
"nano11"* | "nano_11"* )
- id="nano11"
- ;;
+ id="nano11" ;;
"tiny11core"* | "tiny11_core"* | "tiny_11_core"* )
- id="core11"
- ;;
+ id="core11" ;;
"tiny11"* | "tiny_11"* )
- id="tiny11"
- ;;
+ id="tiny11" ;;
"tiny10"* | "tiny_10"* )
- id="tiny10"
- ;;
+ id="tiny10" ;;
*"_serverhypercore_"* )
- id="win2019${add}-hv"
- ;;
+ id="win2019${add}-hv" ;;
*"server2025"* | *"server_2025"* )
- id="win2025${add}"
- ;;
+ id="win2025${add}" ;;
*"server2022"* | *"server_2022"* )
- id="win2022${add}"
- ;;
+ id="win2022${add}" ;;
*"server2019"* | *"server_2019"* )
- id="win2019${add}"
- ;;
+ id="win2019${add}" ;;
*"server2016"* | *"server_2016"* )
- id="win2016${add}"
- ;;
+ id="win2016${add}" ;;
*"server2012"* | *"server_2012"* )
- id="win2012r2${add}"
- ;;
+ id="win2012r2${add}" ;;
*"server2008"* | *"server_2008"* )
- id="win2008r2${add}"
- ;;
+ id="win2008r2${add}" ;;
*"server2003"* | *"server_2003"* )
- id="win2003r2${add}"
- ;;
+ id="win2003r2${add}" ;;
esac
if [ -n "$id" ]; then
@@ -774,41 +753,34 @@ normalizeEditionID() {
case "$edition" in
"pro" | "professional" | "business" )
- edition=""
- ;;
+ edition="" ;;
"pro-n" | "professional-n" )
- edition="n"
- ;;
+ edition="n" ;;
esac
case "${id,,}" in
"winvista"* )
case "$edition" in
"business" )
- edition=""
- ;;
+ edition="" ;;
"home-basic" | "home-premium" )
- edition="home"
- ;;
+ edition="home" ;;
esac
;;
"win7"* )
case "$edition" in
"home-basic" | "home-premium" )
- edition="home"
- ;;
+ edition="home" ;;
esac
;;
"win10"* | "win11"* )
case "$edition" in
"iot-enterprise-ltsc" | \
"iot-enterprise-ltsc-"[0-9][0-9][0-9][0-9] )
- edition="iot"
- ;;
+ edition="iot" ;;
"enterprise-ltsc" | \
"enterprise-ltsc-"[0-9][0-9][0-9][0-9] )
- edition="ltsc"
- ;;
+ edition="ltsc" ;;
esac
;;
esac
@@ -821,31 +793,24 @@ getEditionID() {
local name="${1,,}"
local id="${2,,}"
- local edition=""
+ local edition
case "$id" in
"winvista"* )
- edition="${name#*vista}"
- ;;
+ edition="${name#*vista}" ;;
"win7"* )
- edition="${name#*7}"
- ;;
+ edition="${name#*7}" ;;
"win8"* )
if [[ "$name" == *"8.1"* ]]; then
edition="${name#*8.1}"
else
edition="${name#*8}"
- fi
- ;;
+ fi ;;
"win10"* )
- edition="${name#*10}"
- ;;
+ edition="${name#*10}" ;;
"win11"* )
- edition="${name#*11}"
- ;;
- * )
- return 1
- ;;
+ edition="${name#*11}" ;;
+ * ) return 1 ;;
esac
edition=$(normalizeEditionID "$edition" "$id")
@@ -924,33 +889,17 @@ getServerEditionID() {
local name="${1,,}"
local id="${2,,}"
- local edition=""
+ local edition
case "$id" in
- "win2025"* )
- edition="${name#*server 2025}"
- ;;
- "win2022"* )
- edition="${name#*server 2022}"
- ;;
- "win2019"* )
- edition="${name#*server 2019}"
- ;;
- "win2016"* )
- edition="${name#*server 2016}"
- ;;
- "win2012"* )
- edition="${name#*server 2012}"
- ;;
- "win2008"* )
- edition="${name#*server 2008}"
- ;;
- "win2003"* )
- edition="${name#*server 2003}"
- ;;
- * )
- return 1
- ;;
+ "win2025"* ) edition="${name#*server 2025}" ;;
+ "win2022"* ) edition="${name#*server 2022}" ;;
+ "win2019"* ) edition="${name#*server 2019}" ;;
+ "win2016"* ) edition="${name#*server 2016}" ;;
+ "win2012"* ) edition="${name#*server 2012}" ;;
+ "win2008"* ) edition="${name#*server 2008}" ;;
+ "win2003"* ) edition="${name#*server 2003}" ;;
+ * ) return 1 ;;
esac
edition=$(normalizeServerEditionID "$edition")
@@ -1581,7 +1530,7 @@ validVersion() {
local id="$1"
local lang="$2"
- local url i=0
+ local url i
isMido "$id" "$lang" && return 0
diff --git a/src/image.sh b/src/image.sh
index dfc116b4..b439855c 100644
--- a/src/image.sh
+++ b/src/image.sh
@@ -6,7 +6,6 @@ getPlatform() {
local xml="$1"
local tag="ARCH"
local platform="x64"
- local arch
local -a arches=()
@@ -18,7 +17,7 @@ getPlatform() {
if [ "${#arches[@]}" -gt 1 ]; then
platform="mixed"
elif [ "${#arches[@]}" -eq 1 ]; then
- arch="${arches[0]}"
+ local arch="${arches[0]}"
case "${arch,,}" in
"0" ) platform="x86" ;;
@@ -60,9 +59,7 @@ hasVersion() {
local wanted="$1"
shift
- local actual expected_id selected_id file source
- local i
-
+ local actual i
local -a actuals=("$@")
local -a expected=("$wanted")
local -a selected=("$wanted")
@@ -79,13 +76,13 @@ hasVersion() {
for (( i=0; i<${#expected[@]}; i++ )); do
- expected_id="${expected[$i]}"
- selected_id="${selected[$i]}"
+ local expected_id="${expected[$i]}"
+ local selected_id="${selected[$i]}"
for actual in "${actuals[@]}"; do
[[ "${actual,,}" == "${expected_id,,}" ]] || continue
- file="/run/assets/$selected_id.xml"
+ local file="/run/assets/$selected_id.xml"
if [ -s "$file" ]; then
echo "$selected_id"
@@ -93,7 +90,7 @@ hasVersion() {
fi
if [[ "${selected_id,,}" == *"-eval" ]]; then
- source="/run/assets/${selected_id%-eval}.xml"
+ local source="/run/assets/${selected_id%-eval}.xml"
if [ -s "$source" ]; then
echo "$selected_id"
@@ -169,10 +166,8 @@ detectVersion() {
local xml="$1"
local suggested="${2:-}"
-
- local tag name id base prefer match platform
- local priority actual edition suffix i
- local tried=""
+ local tag name id base match platform
+ local priority edition suffix i tried=""
local -a tags=(
"DISPLAYNAME"
@@ -251,7 +246,7 @@ detectVersion() {
esac
tried="Y"
- prefer="$base"
+ local prefer="$base"
[ -n "$edition" ] && prefer+="-$edition"
if match=$(hasVersion "$prefer" "${versions[@]}"); then
@@ -279,7 +274,7 @@ detectVersion() {
# still allows its Evaluation counterpart when the normal variant is absent.
for suffix in "${suffixes[@]}"; do
for base in "${bases[@]}"; do
- prefer="$base$suffix"
+ local prefer="$base$suffix"
if match=$(hasVersion "$prefer" "${versions[@]}"); then
echo "$match"
@@ -294,7 +289,7 @@ detectVersion() {
for (( i=0; i<${#versions[@]}; i++ )); do
[[ "${groups[$i]}" == "$priority" ]] || continue
- actual="${versions[$i]}"
+ local actual="${versions[$i]}"
if match=$(hasVersion "$actual" "${versions[@]}"); then
echo "$match"
@@ -480,8 +475,7 @@ detectImage() {
local dir="$1"
local version="$2"
- local desc msg language
- local file source
+ local desc language
XML=""
@@ -492,12 +486,12 @@ detectImage() {
if [ -z "$DETECTED" ] && [ -z "$CUSTOM" ] &&
[ -z "${REUSED_ISO:-}" ] && [[ "${version,,}" != "http"* ]]; then
- file="/run/assets/$version.xml"
+ local file="/run/assets/$version.xml"
if [ -s "$file" ]; then
DETECTED="$version"
elif [[ "${version,,}" == *"-eval" ]]; then
- source="/run/assets/${version%-eval}.xml"
+ local source="/run/assets/${version%-eval}.xml"
[ -s "$source" ] && DETECTED="$version"
fi
@@ -524,7 +518,7 @@ detectImage() {
return 0
fi
- local src wim info index suggested edition rc=0
+ local src wim info index suggested edition
src=$(find "$dir" -maxdepth 1 -type d -iname sources -print -quit)
if [ ! -d "$src" ]; then
@@ -542,7 +536,7 @@ detectImage() {
info=$(wimlib-imagex info -xml "$wim" |
iconv -f UTF-16LE -t UTF-8) || {
- rc=$?
+ local rc=$?
if (( rc >= 129 )); then
exit "$rc"
@@ -578,7 +572,7 @@ detectImage() {
fi
if [ -z "$DETECTED" ]; then
- msg="Failed to determine Windows version from image"
+ local msg="Failed to determine Windows version from image"
if setXML "" || enabled "$MANUAL"; then
info "${msg}!"
@@ -609,7 +603,7 @@ detectImage() {
return 1
fi
- msg="the answer file for $desc was not found ($DETECTED.xml)"
+ local msg="the answer file for $desc was not found ($DETECTED.xml)"
local fallback="/run/assets/${DETECTED%%-*}.xml"
if setXML "$fallback" "$index" || enabled "$MANUAL"; then
diff --git a/src/install.sh b/src/install.sh
index 47fd2184..9eecb6f0 100644
--- a/src/install.sh
+++ b/src/install.sh
@@ -11,7 +11,7 @@ backup () {
local count=1
local name="unknown"
local root="$STORAGE/backups"
- local file previous find_pid failed=""
+ local file previous failed=""
previous=$(readState "base") || return 1
[ -n "$previous" ] && name="${previous%.*}"
@@ -53,7 +53,7 @@ backup () {
-not -iname '*.iso' -print0
)
- find_pid=$!
+ local find_pid=$!
if ! wait "$find_pid"; then
error "Failed to enumerate files in \"$STORAGE\"."
@@ -122,10 +122,8 @@ detectCustom() {
skipInstall() {
local iso="$1"
- local method=""
- local magic byte
+ local method magic previous
local boot="$STORAGE/windows.boot"
- local previous
previous=$(readState "base") || return 1
@@ -178,7 +176,8 @@ skipInstall() {
# Check if the ISO was already processed by our script
magic=$(dd if="$iso" bs=1 count=1 status=none | tr -d '\000')
magic="$(printf '%s' "$magic" | od -A n -t x1 -v | tr -d ' \n')"
- byte="16" && enabled "$MANUAL" && byte="17"
+ local byte="16"
+ enabled "$MANUAL" && byte="17"
if [[ "$magic" != "$byte" ]]; then
@@ -293,7 +292,7 @@ finishInstall() {
local iso="$1"
local aborted="$2"
- local base byte
+ local base
if [ ! -s "$iso" ] || [ ! -f "$iso" ]; then
error "Failed to find ISO file: $iso" && return 1
@@ -307,7 +306,8 @@ finishInstall() {
if [[ "$aborted" != [Yy1]* ]]; then
# Mark ISO as prepared via magic byte
- byte="16" && enabled "$MANUAL" && byte="17"
+ local byte="16"
+ enabled "$MANUAL" && byte="17"
if ! printf '%b' "\x$byte" | dd of="$iso" bs=1 seek=0 count=1 conv=notrunc status=none; then
warn "failed to set magic byte in ISO file: $iso"
fi
@@ -443,21 +443,18 @@ extractESD() {
local version="$3"
local desc="$4"
- local msg ret index size
- local minSize freeSpace bootPad
local info count totals links
- local bootTotal bootLinks bootSize
- local wimTotal wimLinks wimSize
- local installSize installPad
- local bootWim installWim
+ local bootTotal bootLinks
+ local wimTotal wimLinks
+ local installSize size
local edition imgEdition
- minSize=100000000
- freeSpace=9606127360
- bootPad=60000000
- installPad=3000000
+ local minSize=100000000
+ local freeSpace=9606127360
+ local bootPad=60000000
+ local installPad=3000000
- msg="Extracting $desc bootdisk"
+ local msg="Extracting $desc bootdisk"
info "$msg..." && html "$msg..."
if ! size=$(stat -c%s -- "$iso"); then
@@ -510,7 +507,7 @@ extractESD() {
return 1
fi
- bootSize=$(( bootTotal - bootLinks ))
+ local bootSize=$(( bootTotal - bootLinks ))
wimTotal=$(getEsdField "$totals" 3)
wimLinks=$(getEsdField "$links" 3)
@@ -520,13 +517,13 @@ extractESD() {
return 1
fi
- wimSize=$(( wimTotal - wimLinks + bootPad ))
+ local wimSize=$(( wimTotal - wimLinks + bootPad ))
/run/progress.sh "$dir" "$bootSize" "$msg ([P])..." &
- index="1"
+ local index="1"
wimlib-imagex apply "$iso" "$index" "$dir" --quiet 2>/dev/null || {
- ret=$?
+ local ret=$?
fKill "progress.sh"
error "Extracting $desc bootdisk failed ($ret)"
return 1
@@ -534,8 +531,8 @@ extractESD() {
fKill "progress.sh"
- bootWim="$dir/sources/boot.wim"
- installWim="$dir/sources/install.wim"
+ local bootWim="$dir/sources/boot.wim"
+ local installWim="$dir/sources/install.wim"
msg="Extracting $desc environment"
info "$msg..." && html "$msg..."
@@ -544,7 +541,7 @@ extractESD() {
/run/progress.sh "$bootWim" "$wimSize" "$msg ([P])..." &
wimlib-imagex export "$iso" "$index" "$bootWim" --compress=none --quiet || {
- ret=$?
+ local ret=$?
fKill "progress.sh"
error "Adding WinPE failed ($ret)"
return 1
@@ -559,7 +556,7 @@ extractESD() {
/run/progress.sh "$bootWim" "$wimSize" "$msg ([P])..." &
wimlib-imagex export "$iso" "$index" "$bootWim" --compress=none --boot --quiet || {
- ret=$?
+ local ret=$?
fKill "progress.sh"
error "Adding Windows Setup failed ($ret)"
return 1
@@ -594,7 +591,7 @@ extractESD() {
/run/progress.sh "$installWim" "$installSize" "$msg ([P])..." &
wimlib-imagex export "$iso" "$index" "$installWim" --compress=LZMS --chunk-size 128K --quiet || {
- ret=$?
+ local ret=$?
fKill "progress.sh"
error "Addition of $index to the $desc image failed ($ret)"
return 1
@@ -781,7 +778,7 @@ prepareImage() {
addFolder() {
local src="$1"
- local folder="/oem" file=""
+ local folder="/oem" file
local dest="$src/\$OEM\$/\$1/OEM"
[ ! -d "$folder" ] && folder="/OEM"
@@ -830,8 +827,7 @@ addDriver() {
local path="$2"
local target="$3"
local driver="$4"
- local desc=""
- local folder=""
+ local folder="" desc
if [ -z "$id" ]; then
warn "no Windows version specified for \"$driver\" driver!" && return 0
@@ -944,7 +940,7 @@ updateImage() {
local xml="autounattend.xml"
local bak="${xml//.xml/.org}"
local dat="${xml//.xml/.dat}"
- local desc path src wim name info idx
+ local desc path src wim name info
skipVersion "${DETECTED,,}" && return 0
@@ -973,7 +969,7 @@ updateImage() {
return 1
fi
- idx="1"
+ local idx="1"
if ! info=$(wimlib-imagex info -xml "$wim" | iconv -f UTF-16LE -t UTF-8); then
warn "failed to read boot image information, $FB"
diff --git a/src/mido.sh b/src/mido.sh
index ee46abd6..d3dfb4b4 100644
--- a/src/mido.sh
+++ b/src/mido.sh
@@ -6,7 +6,7 @@ handleCurlError() {
local code="$1"
local server="$2"
local reason="${3:-}"
- local signal=""
+ local signal
if [ -n "$reason" ] && (( code <= 125 )); then
error "Request to $server servers failed: ${reason%.}."
@@ -43,8 +43,7 @@ curlRequest() {
local agent="$3"
shift 3
- local log reason
- local rc=0 response=""
+ local log reason response
if ! log=$(mktemp -p "$QEMU_DIR"); then
error "Failed to create a temporary curl log."
@@ -62,7 +61,7 @@ curlRequest() {
--tlsv1.2 \
--http1.1 \
"$@" 2>"$log")
- rc=$?
+ local rc=$?
} || :
if (( rc != 0 )); then
@@ -90,14 +89,14 @@ downloadWindows() {
local lang="$2"
local desc="$3"
- local ovToken="" ovTicks="" ovTime=""
- local skuId="" skuUrl="" skuJson=""
- local linkUrl="" linkJson="" link=""
- local language="" orgId="" ovData=""
- local instance="" vlsUrl="" ovUrl=""
- local session="" agent="" type=""
- local winVer="" page="" productId=""
- local rc=0 profile="606624d44113"
+ local ovToken="" ovTicks="" ovTime
+ local skuId skuJson
+ local linkJson link
+ local language ovData
+ local session agent
+ local type winVer
+ local page productId
+ local profile="606624d44113"
agent=$(getAgent)
language=$(getLanguage "$lang" "name")
@@ -142,8 +141,8 @@ downloadWindows() {
# Microsoft download "protection" requires the sessionId to be whitelisted through vlscppe.microsoft.com/tags
- orgId="y6jn8c31"
- vlsUrl="https://vlscppe.microsoft.com/tags?org_id=$orgId&session_id=$session"
+ local orgId="y6jn8c31"
+ local vlsUrl="https://vlscppe.microsoft.com/tags?org_id=$orgId&session_id=$session"
enabled "$DEBUG" && echo "Getting Session ID: $session"
@@ -157,8 +156,8 @@ downloadWindows() {
# Microsoft download "protection" also requires an ov-df.microsoft.com request/reply
# 1) Request mdt.js to get w and rticks. InstanceId is (currently) constant.
- instance="560dc9f3-1aa5-4a2f-b63c-9e18f8d0e175"
- ovUrl="https://ov-df.microsoft.com/mdt.js?instanceId=$instance&PageId=si&session_id=$session"
+ local instance="560dc9f3-1aa5-4a2f-b63c-9e18f8d0e175"
+ local ovUrl="https://ov-df.microsoft.com/mdt.js?instanceId=$instance&PageId=si&session_id=$session"
enabled "$DEBUG" && echo -n "Getting OV data: "
@@ -199,7 +198,7 @@ downloadWindows() {
enabled "$DEBUG" && echo -n "Getting language SKU ID: "
- skuUrl="https://www.microsoft.com/software-download-connector/api/getskuinformationbyproductedition?profile=$profile&ProductEditionId=$productId&SKU=undefined&friendlyFileName=undefined&Locale=en-US&sessionID=$session"
+ local skuUrl="https://www.microsoft.com/software-download-connector/api/getskuinformationbyproductedition?profile=$profile&ProductEditionId=$productId&SKU=undefined&friendlyFileName=undefined&Locale=en-US&sessionID=$session"
curlRequest skuJson "Microsoft" "$agent" \
--referer "$url" \
@@ -207,7 +206,7 @@ downloadWindows() {
--max-filesize 100K \
-- "$skuUrl" || return 1
- { skuId=$(echo "$skuJson" | jq --arg LANG "$language" -r '.Skus[] | select(.Language==$LANG).Id') 2>/dev/null; rc=$?; } || :
+ { skuId=$(echo "$skuJson" | jq --arg LANG "$language" -r '.Skus[] | select(.Language==$LANG).Id') 2>/dev/null; local rc=$?; } || :
if [ -z "$skuId" ] || [[ "${skuId,,}" == "null" ]] || (( rc != 0 )); then
language=$(getLanguage "$lang" "desc")
@@ -221,7 +220,7 @@ downloadWindows() {
# Get ISO download link
# If any request is going to be blocked by Microsoft it's always this last one (the previous requests always seem to succeed)
- linkUrl="https://www.microsoft.com/software-download-connector/api/GetProductDownloadLinksBySku?profile=$profile&ProductEditionId=undefined&SKU=$skuId&friendlyFileName=undefined&Locale=en-US&sessionID=$session"
+ local linkUrl="https://www.microsoft.com/software-download-connector/api/GetProductDownloadLinksBySku?profile=$profile&ProductEditionId=undefined&SKU=$skuId&friendlyFileName=undefined&Locale=en-US&sessionID=$session"
curlRequest linkJson "Microsoft" "$agent" \
--referer "$url" \
@@ -262,8 +261,8 @@ downloadWindowsEval() {
local id="$1"
local lang="$2"
local desc="$3"
- local filter="" culture="" compare="" language=""
- local agent="" type="" winVer=""
+ local culture compare type
+ local agent language winVer
case "${id,,}" in
"win11${PLATFORM,,}-enterprise-eval" )
@@ -301,9 +300,7 @@ downloadWindowsEval() {
culture=$(getLanguage "$lang" "culture")
local country="${culture#*-}"
- local link=""
- local links=""
- local page=""
+ local link="" links page
local url="https://www.microsoft.com/en-us/evalcenter/download-$winVer"
enabled "$DEBUG" && echo "Parsing download page: ${url}"
@@ -321,7 +318,7 @@ downloadWindowsEval() {
enabled "$DEBUG" && echo "Getting download link.."
- filter="https://go.microsoft.com/fwlink/?linkid=[0-9]\+&clcid=0x[0-9a-z]\+&culture=${culture,,}&country=${country,,}"
+ local filter="https://go.microsoft.com/fwlink/?linkid=[0-9]\+&clcid=0x[0-9a-z]\+&culture=${culture,,}&country=${country,,}"
if ! echo "$page" | grep -io "$filter" > /dev/null; then
filter="https://go.microsoft.com/fwlink/p/?linkid=[0-9]\+&clcid=0x[0-9a-z]\+&culture=${culture,,}&country=${country,,}"
@@ -474,8 +471,7 @@ downloadWindowsLtsc() {
local id="$1"
local lang="$2"
local desc="$3"
- local alternate=""
- local alternate_desc=""
+ local alternate alternate_desc
case "${id,,}" in
"win11${PLATFORM,,}-enterprise-iot-eval" )
@@ -691,7 +687,7 @@ getESD() {
local xmlFile="products.xml"
local esdFile="esd_edition.xml"
local filterFile="products_filter.xml"
- local log query rc=0 reason=""
+ local log
file=$(getCatalog "$version" "file")
catalog=$(getCatalog "$version" "url")
@@ -721,11 +717,12 @@ getESD() {
{
LC_ALL=C wget "$catalog" -O "$dir/$file" --no-verbose --timeout=30 \
--no-http-keep-alive --output-file="$log"
- rc=$?
+ local rc=$?
} || :
if (( rc != 0 )); then
+ local reason
reason=$(sed -n \
-e 's/^wget: //p' \
-e 's/^[0-9-]\{10\} [0-9:]\{8\} ERROR //p' \
@@ -771,7 +768,7 @@ getESD() {
return 1
fi
- query='//File[Architecture="'${PLATFORM,,}'"]'"${edition}"''
+ local query='//File[Architecture="'${PLATFORM,,}'"]'"${edition}"''
result=$(xmllint --nonet --xpath "${query}" "$dir/$xmlFile" 2>/dev/null || true)
if [ -z "$result" ]; then
@@ -854,7 +851,7 @@ verifyFile() {
fi
local algo="SHA256"
- local hash="" rc=0
+ local hash
[ -z "$check" ] && return 0
! enabled "$VERIFY" && return 0
@@ -866,7 +863,7 @@ verifyFile() {
if [[ "${algo,,}" != "sha256" ]]; then
hash=$(sha1sum "$iso" | cut -f1 -d' ') || {
- rc=$?
+ local rc=$?
if (( rc >= 129 )); then
exit "$rc"
@@ -879,7 +876,7 @@ verifyFile() {
else
hash=$(sha256sum "$iso" | cut -f1 -d' ') || {
- rc=$?
+ local rc=$?
if (( rc >= 129 )); then
exit "$rc"
@@ -939,7 +936,7 @@ tryDownload() {
local desc="$6"
local seconds="$7"
local web_desc="$8"
- local total rc=0
+ local total
if downloadRetry \
"$iso" \
@@ -952,9 +949,9 @@ tryDownload() {
"$size" \
"$desc" \
"$web_desc"; then
- rc=0
+ local rc=0
else
- rc=$?
+ local rc=$?
fi
(( rc == 0 )) || return "$rc"
@@ -987,9 +984,9 @@ fallbackEnglish() {
local lang="$3"
local desc="$4"
local web_desc="$5"
- local culture msg web_msg
+ local culture web_msg
- msg="No working download method was found for $desc, falling back to English..."
+ local msg="No working download method was found for $desc, falling back to English..."
info "$msg"
# Preserve the requested regional format and keyboard layout.
diff --git a/src/power.sh b/src/power.sh
index b42ae245..c3216225 100644
--- a/src/power.sh
+++ b/src/power.sh
@@ -164,7 +164,7 @@ abortDuringSetup() {
gracefulShutdown() {
local sig="$1"
- local pid="" code=0
+ local pid code
[[ $BASHPID != "$TRAP_PID" ]] && return
diff --git a/src/samba.sh b/src/samba.sh
index f929ece1..93970b77 100644
--- a/src/samba.sh
+++ b/src/samba.sh
@@ -81,7 +81,7 @@ addShare() {
local name="$3"
local comment="$4"
local cfg="$5"
- local owner=""
+ local owner
local tmp="/tmp/smb"
if [ ! -d "$dir" ]; then