diff --git a/books/bookvol7.pamphlet b/books/bookvol7.pamphlet
index 54d4fa7..6dfc466 100644
--- a/books/bookvol7.pamphlet
+++ b/books/bookvol7.pamphlet
@@ -8084,6 +8084,67 @@ The title and body of each page are scanned but the name is not. It is
 possible that the title matches but not any lines. The number of matches
 in the page (n) is given last. (SMW Feb 91)
 
+\section{hthits Call Graph}
+This was generated by the GNU cflow program with the argument list.
+Note that the line:NNNN numbers refer to the line in the code after
+it has been tangled from this file.
+\begin{verbatim}
+cflow --emacs -l -n -b -T --omit-arguments hthits.c
+\end{verbatim}
+\begin{verbatim}
+;; This file is generated by GNU cflow 1.3. -*- cflow -*-
+    2 {   0} +-main() <int main () line:279>
+    3 {   1}   +-cmdline() <void cmdline () line:28>
+    4 {   2}   | +-fprintf()
+    5 {   2}   | \-exit()
+    6 {   1}   +-regcomp()
+    7 {   1}   \-handleHtdb() <void handleHtdb () line:38>
+    8 {   2}     +-fopen()
+    9 {   2}     +-badDB() <void badDB () line:269>
+   10 {   3}     | +-fprintf()
+   11 {   3}     | \-exit()
+   12 {   2}     +-getc()
+   13 {   2}     +-ungetc()
+   14 {   2}     +-handleFile() <void handleFile () line:53>
+   15 {   3}     | +-fgets()
+   16 {   3}     | +-sscanf()
+   17 {   3}     | +-stat()
+   18 {   3}     | +-fprintf()
+   19 {   3}     | +-exit()
+   20 {   3}     | +-ftell()
+   21 {   3}     | +-strncmp()
+   22 {   3}     | +-free()
+   23 {   3}     | +-malloc()
+   24 {   3}     | +-fseek()
+   25 {   3}     | +-strcmp()
+   26 {   3}     | +-strncpy()
+   27 {   3}     | +-badDB() <void badDB () line:269> [see 9]
+   28 {   3}     | \-handleFilePages() <void handleFilePages () line:138>
+   29 {   4}     |   +-fopen()
+   30 {   4}     |   +-fprintf()
+   31 {   4}     |   +-exit()
+   32 {   4}     |   +-handlePage() <void handlePage () line:151>
+   33 {   5}     |   | +-free()
+   34 {   5}     |   | +-malloc()
+   35 {   5}     |   | +-fprintf()
+   36 {   5}     |   | +-exit()
+   37 {   5}     |   | +-fseek()
+   38 {   5}     |   | +-fread()
+   39 {   5}     |   | +-splitpage() <void splitpage () line:211>
+   40 {   6}     |   | | +-fprintf()
+   41 {   6}     |   | | \-exit()
+   42 {   5}     |   | +-untexbuf() <void untexbuf () line:240>
+   43 {   6}     |   | | \-isalpha()
+   44 {   5}     |   | +-printf()
+   45 {   5}     |   | \-searchPage() <void searchPage () line:179>
+   46 {   6}     |   |   +-regexec()
+   47 {   6}     |   |   +-printf()
+   48 {   6}     |   |   +-squirt() <void squirt () line:197>
+   49 {   7}     |   |   | \-printf()
+   50 {   6}     |   |   \-strlen()
+   51 {   4}     |   \-fclose()
+   52 {   2}     \-fclose()
+\end{verbatim}
 \section{Constants and Headers}
 \subsection{System includes}
 <<hthits>>=
diff --git a/changelog b/changelog
index a7ed8a0..5af1029 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20091125 tpd src/axiom-website/patches.html 20091125.04.tpd.patch
+20091125 tpd books/bookvol7 add call graph for hthits
 20091125 tpd src/axiom-website/patches.html 20091125.03.tpd.patch
 20091125 tpd books/bookvol7 add call graph for htadd
 20091125 tpd src/axiom-website/patches.html 20091125.02.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 5e1c85d..fb1e6d5 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2278,5 +2278,7 @@ books/bookvol7 add call graph for hypertex <br/>
 books/bookvol7 add call graph for ex2ht <br/>
 <a href="patches/20091125.03.tpd.patch">20091125.03.tpd.patch</a>
 books/bookvol7 add call graph for htadd <br/>
+<a href="patches/20091125.04.tpd.patch">20091125.04.tpd.patch</a>
+books/bookvol7 add call graph for hthits <br/>
  </body>
 </html>
