File: fix_cpp_header.sh

package info (click to toggle)
bibletime 3.0-5
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 14,556 kB
  • sloc: cpp: 33,506; sh: 135; ansic: 86; xml: 43; makefile: 13
file content (57 lines) | stat: -rwxr-xr-x 946 bytes parent folder | download | duplicates (3)
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
#!/bin/sh
set -euo pipefail

ON_EXIT_ITEMS=()

on_exit() {
    while [ ${#ON_EXIT_ITEMS[*]} -ne 0 ]; do
        eval "${ON_EXIT_ITEMS[${#ON_EXIT_ITEMS[@]}-1]}"
        unset ON_EXIT_ITEMS[${#ON_EXIT_ITEMS[@]}-1]
    done
}

add_on_exit() {
    local N=${#ON_EXIT_ITEMS[*]}
    ON_EXIT_ITEMS["${N}"]="$*"
    if [[ "${N}" -eq 0 ]]; then
        trap on_exit EXIT
    fi
}

TARGETFILE="$1"
HEADER="$2"
TMPFILE=$(mktemp)
add_on_exit "rm -f '${TMPFILE}'"

cat "$HEADER" > "$TMPFILE"

awk '
  BEGIN { state = 0 }

  /^\/\*/ {
    if (state == 0) {
      state = 1
    }
  }

  /\*\// {
    if (state == 1) {
      $0 = substr($0, index($0, "*/") + 2)
      sub(/^[[:blank:]]*/, "")
      state = 2
    }
  }

  {
    if (state != 1) {
      print
      state = 2
    }
  }
' "$TARGETFILE" | \
awk '
  BEGIN { state = 0 }
  /^[[:blank:]]*$/ { if (state == 1) print }
  /[^[:blank:]]/ { state = 1; print }
' >> "$TMPFILE"
cp -f "$TMPFILE" "$TARGETFILE"