diff --git a/books/bookvol8.pamphlet b/books/bookvol8.pamphlet
index 7fd8485..af3f0b5 100644
--- a/books/bookvol8.pamphlet
+++ b/books/bookvol8.pamphlet
@@ -1800,6 +1800,130 @@ exitWithAck(RootWindow(dsply,scrn),Window,-1); \
 \chapter{viewman}
 \label{viewman}
 \index{viewman}
+\section{viewman 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 viewman.c
+\end{verbatim}
+\begin{verbatim}
+;; This file is generated by GNU cflow 1.3. -*- cflow -*-
+    2 {   0} +-main() <int main () line:1342>
+    3 {   1}   +-bsdSignal()
+    4 {   1}   +-brokenPipe() <void brokenPipe () line:1337>
+    5 {   2}     \-fprintf()
+    6 {   1}   +-endChild() <void endChild () line:474>
+    7 {   1}   +-goodbye() <void goodbye () line:557>
+    8 {   2}     +-kill()
+    9 {   2}     +-wait()
+   10 {   2}     \-exit()
+   11 {   1}   +-connect_to_local_server()
+   12 {   1}   +-fprintf()
+   13 {   1}   +-exit()
+   14 {   1}   +-FD_ZERO()
+   15 {   1}   +-FD_SET()
+   16 {   1}   +-check()
+   17 {   1}   +-superSelect() <int superSelect () line:1307>
+   18 {   2}     +-select()
+   19 {   2}     +-wait()
+   20 {   2}     +-bsdSignal()
+   21 {   2}     \-endChild() <void endChild () line:474> [see 6]
+   22 {   1}   +-FD_ISSET()
+   23 {   1}   +-readViewport() <int readViewport () line:1299>
+   24 {   2}     \-read()
+   25 {   1}   +-write()
+   26 {   1}   +-sendGraphToView2D() <void sendGraphToView2D () line:760>
+   27 {   2}     +-fprintf()
+   28 {   2}     +-exit()
+   29 {   2}     +-malloc()
+   30 {   2}     \-write()
+   31 {   1}   +-closeChildViewport() <void closeChildViewport () line:551>
+   32 {   2}     +-rmViewMgr() <void rmViewMgr () line:478>
+   33 {   3}     | +-assert()
+   34 {   3}     | +-readViewport() <int readViewport () line:1299> [see 23]
+   35 {   3}     | +-free()
+   36 {   3}     | +-discardGraph() <void discardGraph () line:1289>
+   37 {   4}     | | \-free()
+   38 {   3}     | \-close()
+   39 {   2}     \-wait()
+   40 {   1}   +-get_int()
+   41 {   1}   +-forkView3D() <void forkView3D () line:978>
+   42 {   2}   | +-fprintf()
+   43 {   2}   | +-check()
+   44 {   2}   | +-pipe()
+   45 {   2}   | +-fork()
+   46 {   2}   | +-printf()
+   47 {   2}   | +-dup2()
+   48 {   2}   | +-close()
+   49 {   2}   | +-sprintf()
+   50 {   2}   | +-getenv()
+   51 {   2}   | +-execl()
+   52 {   2}   | +-exit()
+   53 {   2}   | +-malloc()
+   54 {   2}   | +-readViewport() <int readViewport () line:1299> [see 23]
+   55 {   2}   | +-makeView3DFromSpadData() 
+               |   <void makeView3DFromSpadData () line:1127>
+   56 {   3}   |   +-get_string()
+   57 {   3}   |   +-get_float()
+   58 {   3}   |   +-get_int()
+   59 {   3}   |   +-malloc()
+   60 {   3}   |   \-refPt()
+   61 {   2}   | +-write()
+   62 {   2}   | +-strlen()
+   63 {   2}   | +-refPt()
+   64 {   2}   | +-sleep()
+   65 {   2}   | \-send_int()
+   66 {   1}   +-funView3D() <void funView3D () line:836>
+   67 {   2}     +-get_int()
+   68 {   2}     +-send_int()
+   69 {   2}     +-write()
+   70 {   2}     +-get_float()
+   71 {   2}     +-get_string()
+   72 {   2}     +-strlen()
+   73 {   2}     \-readViewport() <int readViewport () line:1299> [see 23]
+   74 {   1}   +-makeGraphFromSpadData() 
+                 <graphStruct *makeGraphFromSpadData () line:1230>
+   75 {   2}     +-malloc()
+   76 {   2}     +-fprintf()
+   77 {   2}     +-exit()
+   78 {   2}     +-get_float()
+   79 {   2}     +-get_int()
+   80 {   2}     \-send_int()
+   81 {   1}   +-forkView2D() <void forkView2D () line:664>
+   82 {   2}   | +-fprintf()
+   83 {   2}   | +-check()
+   84 {   2}   | +-pipe()
+   85 {   2}   | +-fork()
+   86 {   2}   | +-dup2()
+   87 {   2}   | +-close()
+   88 {   2}   | +-sprintf()
+   89 {   2}   | +-getenv()
+   90 {   2}   | +-execl()
+   91 {   2}   | +-exit()
+   92 {   2}   | +-malloc()
+   93 {   2}   | +-readViewport() <int readViewport () line:1299> [see 23]
+   94 {   2}   | +-makeView2DFromSpadData() 
+               |   <void makeView2DFromSpadData () line:1098>
+   95 {   3}   |   +-get_string()
+   96 {   3}   |   +-get_int()
+   97 {   3}   |   \-get_float()
+   98 {   2}   | +-write()
+   99 {   2}   | +-strlen()
+  100 {   2}   | +-sendGraphToView2D() 
+               |   <void sendGraphToView2D () line:760> [see 26]
+  101 {   2}   | +-sleep()
+  102 {   2}   | \-send_int()
+  103 {   1}   \-funView2D() <void funView2D () line:568>
+  104 {   2}     +-get_int()
+  105 {   2}     +-send_int()
+  106 {   2}     +-write()
+  107 {   2}     +-sendGraphToView2D() <void sendGraphToView2D () line:760> [see 26]
+  108 {   2}     +-get_float()
+  109 {   2}     +-get_string()
+  110 {   2}     +-strlen()
+  111 {   2}     \-readViewport() <int readViewport () line:1299> [see 23]
+\end{verbatim}
 \section{Constants and Headers}
 \subsection{defines}
 \index{defines}
diff --git a/changelog b/changelog
index 13c0902..9e73152 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20091125 tpd src/axiom-website/patches.html 20091125.08.tpd.patch
+20091125 tpd books/bookvol8 add call graph for viewman
 20091125 tpd src/axiom-website/patches.html 20091125.07.tpd.patch
 20091125 tpd books/bookvol8 add call graph for view2d
 20091125 tpd src/axiom-website/patches.html 20091125.06.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index cb8e8f4..97a62ed 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2286,5 +2286,7 @@ books/bookvol7 add call graph for spadbuf <br/>
 books/bookvol8 add call graph for view3d <br/>
 <a href="patches/20091125.07.tpd.patch">20091125.07.tpd.patch</a>
 books/bookvol8 add call graph for view2d <br/>
+<a href="patches/20091125.08.tpd.patch">20091125.08.tpd.patch</a>
+books/bookvol8 add call graph for viewman <br/>
  </body>
 </html>
