#!/bin/sh -efu ### This file is covered by the GNU General Public License ### version 2 or later. ### ### Copyright (C) 2019 ALT Linux Team ### Author: Leonid Krivoshein prefix="___vxZZZy275___" grubmenu="$(mktemp -q "${TMPDIR-/tmp}/grubmenu-XXXXXXXX.tmp")" cat "$1" | sed \ -re "s/^[[:space:]]*menuentry[[:space:]]+'([^']+)'.*\$/${prefix}M: \1/g" \ -re "s/^[[:space:]]*submenu[[:space:]]+'([^']+)'.*\$/${prefix}S: \1/g" \ -re "s/^[[:space:]]*}[[:space:]]*\$/${prefix}E: -/g" \ -re '/^'${prefix}'[MSE]:/!d' \ -re "s/^${prefix}M:/M/g" \ -re "s/^${prefix}S:/S/g" \ -re "s/^${prefix}E:/E/g" > "$grubmenu" prefix= entry=0 while read mode title do case "$mode" in M) echo "${prefix}${title}" entry=1 ;; S) prefix="${prefix}${title}>" ;; *) if [ $entry -ne 0 ]; then entry=0 elif [ -n "$prefix" ]; then prefix="${prefix%>}" case "$prefix" in *">"*) prefix="${prefix%>*}";; *) prefix=;; esac fi ;; esac done < "$grubmenu" rm -f "$grubmenu"