summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xfunctions/packageslists.sh60
1 files changed, 50 insertions, 10 deletions
diff --git a/functions/packageslists.sh b/functions/packageslists.sh
index 443caad..5f05a4b 100755
--- a/functions/packageslists.sh
+++ b/functions/packageslists.sh
@@ -20,6 +20,8 @@ Expand_packagelist ()
_LH_LIST_NAME="$(echo ${_LH_EXPAND_QUEUE} | cut -d" " -f1)"
_LH_EXPAND_QUEUE="$(echo ${_LH_EXPAND_QUEUE} | cut -s -d" " -f2-)"
_LH_LIST_LOCATION=""
+ _LH_NESTED=0
+ _LH_ENABLED=1
for _LH_SEARCH_PATH in ${@} "${LH_BASE:-/usr/share/live-helper}/lists"
do
@@ -35,17 +37,55 @@ Expand_packagelist ()
continue
fi
- # Output packages
- grep -v "^#" ${_LH_LIST_LOCATION} | grep .
+ while read _LH_LINE
+ do
+ case "${_LH_LINE}" in
+ \#if\ *)
+ if [ ${_LH_NESTED} -eq 1 ]
+ then
+ echo "E: Nesting conditionals is not supported" >&2
+ exit 1
+ fi
+
+ _LH_NESTED=1
+ _LH_VAR="$(echo "${_LH_LINE}" | cut -d' ' -f2)"
+ _LH_VAL="$(echo "${_LH_LINE}" | cut -d' ' -f3)"
+
+ if [ -n "${_LH_VAR}" ] && [ "$(eval "echo \$LH_${_LH_VAR}")" != "${_LH_VAL}" ]
+ then
+ _LH_ENABLED=0
+ fi
+ ;;
+
+ \#endif*)
+ _LH_NESTED=0
+ _LH_ENABLED=1
+ ;;
+
+ \#*)
+ if [ ${_LH_ENABLED} -ne 1 ]
+ then
+ continue
+ fi
+
+ # Find includes
+ _LH_INCLUDES="$(echo "${_LH_LINE}" | sed -n \
+ -e 's|^#<include> \([^ ]*\)|\1|gp' \
+ -e 's|^#include <\([^ ]*\)>|\1|gp')"
+
+ # Add to queue
+ _LH_EXPAND_QUEUE="$(echo ${_LH_EXPAND_QUEUE} ${_LH_INCLUDES} |
+ sed -e 's|[ ]*$||' -e 's|^[ ]*||')"
+ ;;
- # Find includes
- _LH_INCLUDES="$(sed -n \
- -e 's|^#<include> \([^ ]*\)|\1|gp' \
- -e 's|^#include <\([^ ]*\)>|\1|gp' \
- "${_LH_LIST_LOCATION}")"
+ *)
+ if [ ${_LH_ENABLED} -eq 1 ]
+ then
+ echo "${_LH_LINE}"
+ fi
+ ;;
- # Add to queue
- _LH_EXPAND_QUEUE="$(echo ${_LH_EXPAND_QUEUE} ${_LH_INCLUDES} | \
- sed -e 's|[ ]*$||' -e 's|^[ ]*||')"
+ esac
+ done < "${_LH_LIST_LOCATION}"
done
}