summaryrefslogtreecommitdiffstats
path: root/doc/posix1003.1/summarize
blob: a8bdaa93a4993239c9ff673e6d9b0267b99e49e3 (plain) (blame)
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#! /bin/sh
#
#  Generate the summary chapter
#
#  $Id$
#

echo "@c"
echo "@c DO NOT EDIT -- AUTOMATICALLY GENERATED!!!"
echo "@c"
echo
echo "@chapter Compliance Summary"
echo

wc2()
{
  pattern=$1
  shift
  grep "${pattern}" $* | wc -l
}

wc3()
{
  pattern=$1
  filter=$2
  shift ; shift
  grep "${pattern}" $* | grep "${filter}" | wc -l
}

# adds the numbers passed on the command line
addit()
{
  sumx=0
  for x in $*
  do
    sumx=`expr $sumx + $x`
  done
  echo $sumx
}

summarize_chapter()
{
  echo 
  # takes at least 3.0 inches for each generated section
  echo "@need 3000"
  if [ $# -eq 1 ] ; then
    grep "^@chapter" $1 | \
      sed -e "s/^.chapter/@section/"  \
          -e "s/$/ Chapter/" 
  else
    echo "@section Overall Summary"
  fi

  echo

  functions_total=`wc2 "()" $*`
  functions_implemented=`   wc3 "()" "Implemented" $*`
  functions_unimplemented=` wc3 "()" "Unimplemented" $*`
  functions_unmplementable=`wc3 "()" "Unimplementable" $*`
  functions_partial=`       wc3 "()" "Partial Implementation" $*`
  functions_dummy=`         wc3 "()" "Dummy Implementation" $*`
  functions_untested=`      wc3 "()" "Untested Implementation" $*`

  functions_sum=`addit ${functions_implemented} \
     ${functions_unimplemented} ${functions_unmplementable} \
     ${functions_partial}       ${functions_dummy} \
     ${functions_untested}`

  datatypes_total=`wc2 "Type," $*`
  datatypes_implemented=`   wc3 "Type," "Implemented" $*`
  datatypes_unimplemented=` wc3 "Type," "Unimplemented" $*`
  datatypes_unmplementable=`wc3 "Type," "Unimplementable" $*`
  datatypes_partial=`       wc3 "Type," "Partial Implementation" $*`
  datatypes_dummy=`         wc3 "Type," "Dummy Implementation" $*`
  datatypes_untested=`      wc3 "Type," "Untested Implementation" $*`

  datatypes_sum=`addit ${datatypes_implemented} \
     ${datatypes_unimplemented} ${datatypes_unmplementable} \
     ${datatypes_partial}       ${datatypes_dummy} \
     ${datatypes_untested}`

  echo "@example"
  echo "Functions:"
  echo "    Total Number    : ${functions_total}"
  echo "    Implemented     : ${functions_implemented}"
  echo "    Unimplemented   : ${functions_unimplemented}"
  echo "    Unimplementable : ${functions_unmplementable}"
  echo "    Partial         : ${functions_partial}"
  echo "    Dummy           : ${functions_dummy}"
  echo "    Untested        : ${functions_untested}"
  echo "@end example"
  echo
  if [ ${functions_sum} -ne ${functions_total} ] ; then
    echo "@sp"
    echo "@center{@b{FUNCTION COUNTS DO NOT ADD UP!!}}"
    echo "@sp"
  fi

  echo "@example"
  echo "Data Types:"
  echo "    Total Number    : ${datatypes_total}"
  echo "    Implemented     : ${datatypes_implemented}"
  echo "    Unimplemented   : ${datatypes_unimplemented}"
  echo "    Unimplementable : ${datatypes_unmplementable}"
  echo "    Partial         : ${datatypes_partial}"
  echo "    Dummy           : ${datatypes_dummy}"
  echo "    Untested        : ${datatypes_untested}"
  echo "@end example"
  echo
  if [ ${datatypes_sum} -ne ${datatypes_total} ] ; then
    echo "@sp"
    echo "@center{@b{DATA TYPE COUNTS DO NOT ADD UP!!}}"
    echo "@sp"
  fi
}

chapters="ch01.t ch02.t ch03.t ch04.t ch05.t ch06.t ch07.t ch08.t \
    ch09.t ch10.t ch11.t ch12.t ch13.t ch14.t ch15.t ch16.t ch17.t ch18.t"

# go through the chapters one at a time
for chapter in ${chapters}
do
  summarize_chapter $chapter
done

# now generate the overall summary
summarize_chapter ${chapters}