Ian Jauslin
summaryrefslogtreecommitdiff
blob: 1fffbcef660642f87a38630904f1f99491b0eee6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
## 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
}