#! /bin/sh # # opkg config checker and upgrade script # # Copyright (C) 2014 Paul Barker # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2, or (at your option) any # later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. set -e if [ "$#" -eq 2 ]; then file_in=$1 file_out=$2 inplace=0 elif [ "$#" -eq 1 ]; then file_in=$1 file_out=`mktemp` inplace=1 else cat 1>&2 << EOF Usage: $0 The script reads an opkg config file specified by and performs sanity checks. It may automatically fix some errors, especially those where the config syntax or option names have changed during an opkg upgrade. The fixed file will be written to if this argument is given, otherwise will be fixed in place. Warning and error messages will be printed to stderr. EOF exit 1 fi # v0.2.x to v0.3.0 upgrade: lists_dir syntax has changed # # The old lists_dir statement had the syntax 'lists_dir ext path' where 'ext' # was ignored. The new syntax is 'option lists_dir path'. awk_lists_dir='$1 == "lists_dir" { print "option lists_dir " $3 ; \ print "Fixed: " $0 " -> option lists_dir " $3 > "/dev/stderr" ; \ next }' # Combine scripts and add terminating '1' statement which will print all # unmatched lines (assuming each match finishes with 'next'). awk_script="$awk_lists_dir 1" # Run awk_script awk "$awk_script" < $file_in > $file_out if [ "$inplace" -eq 1 ]; then mv $file_out $file_in fi