#!/bin/sh # converts the .xml file to the old format .lst file # # Usage: # # sh xml2lst.sh < filename.xml > filename.lst # # author Ivan Pascal configitem=0 modellist=0 layout=0 configitem=0 variant=0 comment=0 printf '! model\n' while read -r line || [ "$line" ]; do case $line in *''*) configitem=1 ;; *''*) configitem=0 ;; *''*) modellist=1 ;; *''*) break ;; *''*) name=${line##*} name=${name%%*} ;; *''*) desc=${line##*} desc=${desc%%*} [ "$configitem" -eq 0 ] || [ "$modellist" -eq 0 ] || printf ' %-15s %s\n' "$name" "$desc" ;; esac done printf '\n! layout\n' while read -r line || [ "$line" ]; do case $line in *''*|*''*) layout=1 ;; *''*) layout=0 ;; *''*) configitem=1 ;; *''*) configitem=0 ;; *''*|*''*) variant=1 ;; *''*|*''*) variant=0 ;; *''*) break ;; esac if [ "$layout" -ne 0 ]; then if [ "${variant}" -ne 0 ]; then case $line in *''*) name=${line##*} name=${name%%*} ;; *''*) line="$lname: ${line##*}" line=${line%%*} names="$names $(printf '%-15s %s' "$name" "$line") " ;; esac elif [ "$configitem" -ne 0 ]; then case $line in *''*) lname=${line##*} lname=${lname%%*} ;; *''*) line=${line##*} line=${line%%*} printf ' %-15s %s\n' "$lname" "$line" ;; esac fi fi done printf '\n! variant\n%s\n! option\n' "$names" while read -r line || [ "$line" ]; do case $line in *'-->'*) comment=0;; *'