]> git.pld-linux.org Git - packages/efi-boot-update.git/blobdiff - efi-boot-update
Some variable quotting added
[packages/efi-boot-update.git] / efi-boot-update
index 930e93628fac224dac4d98729cd8ecbe8f1fff69..88e1d86d139d2412079bbd85d8e8dbe00fca7698 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 _SCRIPT_NAME=efi-boot-update
-_SCRIPT_VERSION=0.0
+_SCRIPT_VERSION=0.1
 
 . /etc/rc.d/init.d/functions
 
@@ -15,21 +15,22 @@ usage () {
     echo "  --mount, -m    Try to mount /boot/efi first"
     echo "  --verbose, -v  Verbose output"
     echo "  --force        Force file updates"
+    echo "  --auto         Automatic run from packages %post"
 }
 
 msg () {
-    echo "efi-boot-update: $*" >&2
+    echo -E "efi-boot-update: $*" >&2
 }
 
 verbose () {
     if is_yes "$VERBOSE" ; then 
-        echo "efi-boot-update: $*" >&2
+        echo -E "efi-boot-update: $*" >&2
     fi
 }
 
 verbose_cmd () {
     if is_yes "$VERBOSE" ; then
-        echo "+$*" >&2
+        echo -E "+$*" >&2
     fi
     "$@"
 }
@@ -41,7 +42,7 @@ list_remove () {
         if [ "$item" = "$2" ] ; then
             continue
         fi
-        echo -n "$item "
+        echo -nE "$item "
     done
 }
 
@@ -65,11 +66,18 @@ update_file () {
         esac
     done
     src="$1"; shift
-    dst="$2"; shift
+    dst="$1"; shift
     if [ -n "$*" ] ; then
         msg "update_file: unexpected arguments: $*"
         return 1
     fi
+    if [ -z "$src" ] ; then
+        msg "update_file: no source file"
+        return 1
+    fi
+    if [ -z "$dst" ] ; then
+        dst=`basename "$src"`
+    fi
     if [ "${dst#/}" = "${dst}" ] ; then
         # relative path
         dst="$DESTDIR/$dst"
@@ -121,9 +129,9 @@ remove_bootmgr_entry () {
 }
 
 add_bootmgr_entry () {
-    local label=$1
-    local binary=$2
-    local args=$3
+    local label="$1"
+    local binary="$2"
+    local args="$3"
     local bootnum
     bootnum=$(find_bootmgr_entry "$label")
 
@@ -132,7 +140,7 @@ add_bootmgr_entry () {
         binary="$DESTDIR/$binary"
     fi
     binary="${binary#/boot/efi}"
-    binary="$(echo -n "$binary"|sed -e's;/;\\;g')"
+    binary="$(echo -nE "$binary"|sed -e's;/;\\;g')"
 
     if [ -n "$bootnum" ] ; then
         echo -n "$args" | verbose_cmd $EFIBOOTMGR $EFIBOOTMGR_OPTS --quiet \
@@ -149,14 +157,16 @@ safe_string () {
     echo -n "$*" | tr -c '[a-zA-Z0-9_]' '_'
 }
 
+ALLOW_AUTO="no"
 FORCE_UPDATES="no"
 MOUNT_EFI_PARTITION="no"
 LABEL_PREFIX=""
-DEFAULT=""
 VERBOSE="no"
 
 [ -e /etc/efi-boot/update.conf ] && . /etc/efi-boot/update.conf
 
+AUTO_RUN=no
+
 while [ -n "$*" ] ; do
     local arg
     arg="$1"
@@ -179,6 +189,10 @@ while [ -n "$*" ] ; do
         --force)
             FORCE_UPDATES="yes"
             ;;
+        --auto)
+            is_yes "$ALLOW_AUTO" || exit 0
+            AUTO_RUN=yes
+            ;;
         *)
             usage >&2
             exit 2
@@ -247,7 +261,7 @@ for bootloader_conf in /etc/efi-boot/update.d/*.conf ; do
     local efi_arch
     if [[ "$ARCH" = i?86 || "$ARCH" = pentium[45] || "$ARCH" = "athlon" ]] ; then
         # %ix86
-        efi_arch=x32
+        efi_arch=ia32
     elif [[ "$ARCH" = "x86_64" || "$ARCH" = "amd64" || "$ARCH" = "ia32e" ]] ; then
         # %x8664
         efi_arch=x64
@@ -284,4 +298,9 @@ if [ -n "$ORDER" -a "$EFIBOOTMGR" != "/bin/true" ] ; then
     fi
 fi
 
+if ! is_yes "$ALLOW_AUTO" && ! is_yes "$AUTO_RUN"; then
+    msg "ALLOW_AUTO is not enabled in /etc/efi-boot/update.conf,"
+    msg "files will not be automatically updated on upgrades."
+fi
+
 # vi: ft=sh sw=4 sts=4 et
This page took 0.094858 seconds and 4 git commands to generate.