1#!/bin/sh
2bindir=$1
3
4VERSION=1.0
5
6grep -E -h @deftypefu?nx? *.texi ../linuxthreads/*.texi |
7sed -e 's/@deftypefunx*[[:space:]]*\({[^{]*}\|[[:alnum:]_]*\)[[:space:]]*\([[:alnum:]_]*\).*/\2/' -e 's/@deftypefn {[^}]*function}*[[:space:]]*\({[^{]*}\|[[:alnum:]_]*\)[[:space:]]*\([[:alnum:]_]*\).*/\2/' -e '/^@/d' |
8sed -e '/^obstack_/d' -e '/^\([lf]\|\)stat\(\|64\)$/d' -e '/^mknod$/d' |
9sed -e '/^signbit$/d' -e '/^sigsetjmp$/d' |
10sed -e '/^pthread_cleanup/d' -e '/^IFTODT$/d' -e '/^DTTOIF$/d' |
11sed -e '/^__fwriting$/d' -e '/^__fwritable$/d' -e '/^__fsetlocking$/d' |
12sed -e '/^__freading$/d' -e '/^__freadable$/d' -e '/^__fpurge$/d' |
13sed -e '/^__fpending$/d' -e '/^__flbf$/d' -e '/^__fbufsize$/d' |
14sed -e '/^alloca$/d' |
15sort -u > DOCUMENTED
16
17nm --extern --define $bindir/libc.so $bindir/math/libm.so $bindir/rt/librt.so $bindir/linuxthreads/libpthread.so $bindir/dlfcn/libdl.so $bindir/crypt/libcrypt.so $bindir/login/libutil.so |
18grep -E " [TW] ([[:alpha:]]|_[[:alpha:]])" |
19sed 's/\(@.*\)//' |
20cut -b 12- |
21sed -e '/^_IO/d' -e '/^_dl/d' -e '/^_pthread/d' -e '/^_obstack/d' |
22sed -e '/^_argp/d' -e '/^_authenticate$/d' -e '/^_environ$/d' |
23sed -e '/^_errno$/d' -e '/^_h_errno$/d' -e '/^_longjmp$/d' |
24sed -e '/^_mcleanup$/d' -e '/^_rpc_dtablesize$/d' -e '/^_seterr_reply$/d' |
25sed -e '/^_nss/d' -e '/^_setjmp$/d' |
26sort -u > AVAILABLE
27
28cat <<EOF
29<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
30<html>
31  <head>
32    <title>Undocumented glibc functions</title>
33  </head>
34
35  <body>
36    <center><h1>Undocumented <tt>glibc</tt> functions</h1></center>
37
38    <p>The following table includes names of the function in glibc
39    which are not yet documented in the manual.  This list is
40    automatically created and therefore might contain errors.  Please
41    check the latest manual (available from the CVS archive) before
42    starting to work.  It might also be good to let me know in
43    advanace on which functions you intend to work to avoid
44    duplication.</p>
45
46    <p>A few comments:</p>
47
48    <ul>
49      <li>Some functions in the list are much less important than
50      others.  Please prioritize.</li>
51
52      <li>Similarly for the LFS functions (those ending in 64).</li>
53    </ul>
54
55    <p>The function sombody already volunteered to document are marked
56    with a reference to the person.</p>
57
58    <center><table>
59EOF
60
61n=0
62diff -y --width=60 --suppress-common-lines DOCUMENTED AVAILABLE |
63expand | cut -b 33- | sed '/^[[:space:]]*$/d' |
64while read name; do
65  line="$line
66<td><tt>$name</tt></td>"
67  n=$(expr $n + 1)
68  if [ $n -eq 4 ]; then
69    echo "<tr>
70$line
71</tr>"
72    line=""
73    n=0
74  fi
75done
76if [ $n -gt 0 ]; then
77  if [ $n -eq 1 ]; then
78    line="$line
79<td></td>"
80  fi
81  if [ $n -eq 2 ]; then
82    line="$line
83<td></td>"
84  fi
85  if [ $n -eq 3 ]; then
86    line="$line
87<td></td>"
88  fi
89  echo "<tr>
90$line
91</tr>"
92fi
93
94cat <<EOF
95    </table></center>
96
97    <hr>
98    <address><a href="mailto:drepper@redhat.com">Ulrich Drepper</a></address>
99Generated on $(date) with documented.sh version $VERSION
100  </body>
101</html>
102EOF
103