shellcheck fixes, including real bug
[distro-functions] / src / identify-distros
index a3bc4028f26c6559e4d4901cddc5aef2a17da82d..fa661721cfa3882dd9cd006e95688e334e7d1896 100644 (file)
@@ -1,5 +1,12 @@
 #!/bin/bash
-# Copyright (C) 2014 Ian Kelling
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to switch
+# its license to GPL.
+
+# Copyright 2024 Ian Kelling
 
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -29,19 +36,20 @@ distro-name() {
 }
 
 distro-name-compat() {
-  local x=$(distro-name)
+  local x
+  x=$(distro-name)
   case $x in
     trisquel)
       echo ubuntu
       ;;
     *)
-      echo $x
+      printf "%s\n" "$x"
       ;;
   esac
 }
 
 distro-name-ver() {
-  echo $(distro-name)$(debian-archive)
+  printf "%s\n" "$(distro-name)$(debian-archive)"
 }
 
 distro-num() {
@@ -65,7 +73,8 @@ debian-archive() {
   # o = origin
   # c = component (licensing component)
   # l = label (Debian{,-Security,-Updates})
-  local d=$(distro-name)
+  local d
+  d=$(distro-name)
   # goto b for archive lines we are interested in, a for lines we arent
   # print priority + archive name. priority is in
   # the previous line from the archive line.
@@ -83,7 +92,7 @@ EOF
       shortest=$name
       continue
     fi
-    if [[ $pri != $highpri ]]; then
+    if [[ $pri != "$highpri" ]]; then
       break
     fi
     if (( ${#shortest} > ${#name} )); then
@@ -96,8 +105,10 @@ EOF
 # formatted for use in pfile() in package-manager-abstractions
 positive-origins() {
   isdeb || return 0
-  local archive expression pri name highpri shortest
-  local policy="${1:-$(apt-cache policy)}" || return $?
+  local archive expression pri name highpri shortest policy
+  # In theory we might want a policy subset, we could alter this to pass
+  # it in.
+  policy="(apt-cache policy)"
   # a = archive
   # n = codename
   # o = origin
@@ -130,12 +141,14 @@ isdebian-stable() {
 
 debian-codename() {
   isdeb || return 0
-  local policy="$(apt-cache policy)" || return $?
+  local policy
+  policy="$(apt-cache policy)"
   archive=$(debian-archive "$policy")
-  echo "$policy" | sed -rn "s/^.*a=$archive,n=([a-z]+).*/\1/p;T;q" || [[ $? == 141 ]]
+  printf "%s\n" "$policy" | sed -rn "s/^.*a=$archive,n=([a-z]+).*/\1/p;T;q" || [[ $? == 141 ]]
 }
 debian-codename-compat() {
-  local n=$(debian-codename)
+  local n
+  n=$(debian-codename)
   case $n in
     flidas)
       echo xenial