## Copyright 2015-2022 Ian Jauslin ## ## Licensed under the Apache License, Version 2.0 (the "License"); ## you may not use this file except in compliance with the License. ## You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. ################################################################################################ ## ## ## Functions used to manipulate configuration files ## ## ## ################################################################################################ # remove unwanted entries in configuration files (read fromm stdin) function strip_config { tostrip="$1" # whether to skip the entry skip=0 # whether this is the first entry first_entry=1 # read file while read aline; do # if line is a header if [[ "$aline" =~ ^#! ]]; then # check whether to strip for header in $tostrip; do if [[ "$aline" = "$header" ]]; then skip=1 break fi done # add a '&' separator if [[ "$skip" = 0 && "$first_entry" = 0 ]]; then echo "&" fi [[ "$skip" = 0 ]] && first_entry=0 fi # change entry if [[ "$aline" = "&" ]]; then skip=0 # write out if not instructed to skip elif [[ $skip = 0 ]]; then echo "$aline" fi done } # find a config entry in a file (read from stdin) function find_config_entry { header="$1" # whether the entry was found foundit=0 # read stdin while read aline; do # write out if the header was found if [[ $foundit = 1 ]]; then if [[ "$aline" != "&" ]]; then echo "$aline" fi fi # check the header if [[ "$aline" = "$header" ]]; then foundit=1 fi # new entry if [[ "$aline" = "&" ]]; then if [[ "$foundit" = 1 ]]; then break fi fi done }