# cxref (1.6c-2) debian-changes-1.6c-1

## Summary

 README-1.html | 376 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ contrib/cxref.el | 10 - cpp/cccp.c | 10 + cpp/prefix.c | 2 doc/README | 10 - doc/README.html | 10 - doc/README.sgml | 10 - doc/README.tex | 10 - src/latex.c | 8 - 9 files changed, 417 insertions(+), 29 deletions(-) 

## Patch contents

Description: Upstream changes introduced in version 1.6c-1
This patch has been created by dpkg-source during the package build.
Here's the last changelog entry, hopefully it gives details on why
.
cxref (1.6c-1) unstable; urgency=low
.
* New upstream release
.
The person named in the Author field signed this changelog entry.
Author: Camm Maguire <camm@debian.org>

---
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: <vendor|upstream|other>, <url of original patch>
Bug: <url in upstream bugtracker>
Bug-Debian: http://bugs.debian.org/<bugnumber>
Forwarded: <no|not-needed|url proving that it has been forwarded>
Reviewed-By: <name and email of someone who approved the patch>
Last-Update: <YYYY-MM-DD>

--- /dev/null
@@ -0,0 +1,376 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+ <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
+ <TITLE>C Cross Referencing &amp; Documenting tool. Version 1.5.: C Cross Referencing &amp; Documenting tool. Version 1.5 - cxref</TITLE>
+
+<BODY>
+Next
+Previous
+<HR>
+<H2><A NAME="s1">1.</A> <A HREF="README.html#toc1">C Cross Referencing &amp; Documenting tool. Version 1.5 - cxref</A></H2>
+
+<P>A program that can automatically generate documentation and cross references for
+a C program.<BR>
+The input is any C program with appropriate comments and the output is LaTeX,
+HTML, RTF or SGML files.</P>
+
+</H2>
+
+<P>The name of the program is cxref.</P>
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+Usage: cxref filename [ ... filename]
+             [-Odirname] [-Nbasename] [-Rdirname]
+             [-xref[-all][-file][-func][-var][-type]]
+             [-warn[-all][-comment][-xref]]
+             [-index[-all][-file][-func][-var][-type]]
+             [-raw]
+             [-latex209|-latex2e]
+             [-html20|-html32][-src]
+             [-rtf]
+             [-sgml]
+             [-Idirname] [-Ddefine] [-Udefine]
+             [-CPP cpp_program] [-- cpp_arg [ ... cpp_arg]]
+
+Usage: cxref filename [ ... filename] -delete
+             [-Odirname] [-Nbasename] [-Rdirname]
+</PRE>
+</CODE></BLOCKQUOTE>
+</P>
+<P>
+<DL>
+<DT><B><CODE>filename</CODE></B><DD><P>The name of the file to document, any number of files may be
+documented at a time.</P>
+<DT><B><CODE>-delete</CODE></B><DD><P>The files named are to be deleted from the output directory and
+their entries in the cross reference database and main output
+files are to be removed.</P>
+<DT><B><CODE>-Odirname</CODE></B><DD><P>The name of a directory to use for the output latex files and
+the location of the cross reference files that are created.</P>
+<DT><B><CODE>-Nbasename</CODE></B><DD><P>The name to use for the first part of the output and cross
+reference files instead of cxref, the file extensions remain
+the same.</P>
+<DT><B><CODE>-Rdirname</CODE></B><DD><P>When the source files are in more than one directory, set
+dirname to the name of the root directory of the source tree
+(use relative path if easier e.g. -R../..').  This will then
+run cxref from that root directory and the -Odirname' must be
+relative to that directory.</P>
+(see below for description of special comments).<BR>
+<I>[Danger! This option can produce weird results.]</I></P>
+references and not the documentation.</P>
+in a predetermined style that you want to preserve on the
+output, this option will force them not to be reformatted.<BR>
+<I>[Note, this is for file and function comments only.]</I></P>
+style (with a leading *' character on every line), this option
+will remove that character from the output.<BR>
+<I>[Works for a single *', +', |' or :' on each line.]</I></P>
+<DT><B><CODE>-xref</CODE></B><DD><P>Produce cross referencing information (see below).
+<DL>
+<DT><B><CODE>-all</CODE></B><DD><P>All cross references.</P>
+<DT><B><CODE>-file</CODE></B><DD><P>Cross references for files.</P>
+<DT><B><CODE>-func</CODE></B><DD><P>Cross references for functions.</P>
+<DT><B><CODE>-var</CODE></B><DD><P>Cross references for variables.</P>
+<DT><B><CODE>-type</CODE></B><DD><P>Cross references for types.</P>
+</DL>
+</P>
+<DT><B><CODE>-warn</CODE></B><DD><P>Produce warnings, the options must be concatenated together:
+<DL>
+<DT><B><CODE>-all</CODE></B><DD><P>All warnings.</P>
+<DT><B><CODE>-xref</CODE></B><DD><P>Warn of missing cross references.</P>
+</DL>
+</P>
+<DT><B><CODE>-index</CODE></B><DD><P>Produce a cross reference index, the options must be
+concatenated together:
+<DL>
+<DT><B><CODE>-all</CODE></B><DD><P>All indexes.</P>
+<DT><B><CODE>-file</CODE></B><DD><P>Index of files.</P>
+<DT><B><CODE>-func</CODE></B><DD><P>Index of functions.</P>
+<DT><B><CODE>-var</CODE></B><DD><P>Index of variables.</P>
+<DT><B><CODE>-type</CODE></B><DD><P>Index of types.</P>
+</DL>
+</P>
+<DT><B><CODE>-raw</CODE></B><DD><P>Produce a raw form of output, not really of much use except
+with -warn.</P>
+<DT><B><CODE>-latex209</CODE></B><DD><P>Produce a LaTeX file to document each of the source files and
+also an extra file that includes each of these files.  (Using
+the LaTeX version 2.09 format.)</P>
+<DT><B><CODE>-latex2e</CODE></B><DD><P>Produce the LaTeX file described above for use with the
+LaTeX2e version of LaTeX.</P>
+<DT><B><CODE>-html20</CODE></B><DD><P>Produce an HTML file to document each of the source files and
+a main file to reference each of these files.  (using the HTML
+2.0 standard, no tables).</P>
+<DT><B><CODE>-html32</CODE></B><DD><P>Produce the HTML file described above but using HTML 3.2.</P>
+<DT><B><CODE>-rtf</CODE></B><DD><P>Produce a Rich Text Format (RTF) file to document the source
+file.</P>
+<DT><B><CODE>-html20-src</CODE></B><DD><P>Produce the HTML v2.0 output and a HTML version of the source
+<DT><B><CODE>-html32-src</CODE></B><DD><P>Produce the HTML v3.2 output and a HTML version of the source
+<DT><B><CODE>-sgml</CODE></B><DD><P>Produce an SGML file to document the source file.  (Using the
+LinuxDoc DTD).</P>
+<DT><B><CODE>-Idirname</CODE></B><DD><P>GCC option to specify the path for include files.</P>
+<DT><B><CODE>-Ddefine</CODE></B><DD><P>GCC option to define a pre-processor symbol.</P>
+<DT><B><CODE>-Udefine</CODE></B><DD><P>GCC option to undefine a pre-processor symbol.</P>
+<DT><B><CODE>-CPP program</CODE></B><DD><P>The name of the program to use instead of the compile time
+default.  The program must be able to perform all of the actions
+that gcc -E -C -dD' does to work. If the program takes
+arguments then the whole thing needs to be in quotes so that it
+is interpreted as a single argument to cxref.</P>
+<DT><B><CODE>-- arg ... arg</CODE></B><DD><P>Extra arguments to be passed to the pre-processor can be placed
+after the --' separator.</P>
+</DL>
+</P>
+
+<H2><A NAME="ss1.2">1.2</A> <A HREF="README.html#toc1.2">C Compiler Replacement cxref-cc</A>
+</H2>
+
+<P>To simplify using cxref on existing source code, there is now a shell script
+that will call the C compiler and then call cxref to process the source file.
+This means that it can be used as a drop in replacement for CC in Makefiles and
+the like.</P>
+<P>
+<BLOCKQUOTE><CODE>
+<PRE>
+Usage: cxref-cc [usual cc options]
+</PRE>
+</CODE></BLOCKQUOTE>
+</P>
+<P>The name of the source file is extracted from the list of options as well as the
+-D*', -I*', -U*' flags and when the C compiler exits succesfully cxref will
+be called.  The name of the C compiler to use is controlled by the CXREFCC
+environment variable, or if this is not set then the CC environment variable, or
+failing this just gcc.</P>
+<P>Using this script requires the use of a .cxref' configuration file to contain
+the options since there is nowhere to put the options on the command line for
+the C compiler.</P>
+<P>This will only cross-reference and document the C source files since they are
+the only ones that are compiled, but it will make sure that they are
+cross-referenced with the correct options etc.</P>
+
+<H2><A NAME="ss1.3">1.3</A> <A HREF="README.html#toc1.3">Cxref configuration File</A>
+</H2>
+
+<P>These command line arguments can also be put into a file named .cxref' instead
+of on the command line.  When cxref is run the arguments to the program are
+interpreted in the following order.</P>
+<P>
+<OL>
+<LI>Those on the command line.</LI>
+<LI>Those in the .cxref' file in the current directory.</LI>
+<LI>Those in the .cxref' file in the source tree root specified by -R'.</LI>
+</OL>
+</P>
+<P>This means that in a multi-directory source tree, each sub-directory can have a
+.cxref' file containing just the line -R..' or appropriate.  The main
+directory can have a .cxref' file containing the remainder of the options.
+This removes completely the need to have any options on the command line apart
+from the source file names.</P>
+<P>The format of the .cxref' file is any number of lines, each one containing a
+single command line argument (equivalent to one of the argv).  The only options
+that cannot be used are the names of source files themselves and the -delete'
+option.  Blank lines are ignored and lines starting with a '#' are comments.</P>
+
+</H2>
+
+<P>The documentation for the program is produced from comments in the code that are
+appropriately formatted.  The cross referencing comes from the code itself and
+requires no extra work.<BR>
+The special comments are /**** ****/' (for a file) and /*++++ ++++*/' (for a
+data object) any number of *' or +' can be used inside of the standard /*'
+and */' comment delimiters in the comments, they are ignored.<BR>
+If a comment line starts with whitespace and is followed by +html+' then the
+rest of the line is included only in the HTML output, and is not processed so it
+can include HTML markup, -html-' means that the rest of the line is included in
+all except the HTML output.  The same also applies to the other output formats,
++none+' can be used for lines not to appear in any output.  The exception to
+this is that the raw output does not do any checking and will output all lines.<BR>
+In any situation where a comment follows a ,', ;' or )' separated only by
+spaces and tabs, the comment is pushed to before the punctuation to apply to
+object there.<BR>
+The program is implemented using a full ANSI C grammar parser with some GCC
+extensions, this means that the style of the code is unimportant, only the
+
+<H2><A NAME="ss1.5">1.5</A> <A HREF="README.html#toc1.5">Automated Comment Insertion</A>
+</H2>
+
+<P>To simplify the insertion of comments that will be parsed by cxref, the file
+<CODE>cxref.el</CODE> provides a number of Emacs lisp functions.  To use them add the line
+<CODE>(load "cxref")</CODE> to your .emacs' file or type <CODE>M-x load-file cxref.el</CODE> from
+within Emacs.</P>
+<P>The functions and key bindings are:
+<DL>
+file and if it is a .h file then it also adds a #ifndef,
+#define at the beginning and #endif at the end to stop
+multiple inclusions.</P>
+<DT><B><I>Control-C Control-X f</I></B><DD><P>Adds comments to a function, the cursor must be on the
+line containing the start of the function definition when
+this function is called.  The /*+ ... +*/ comment that is
+<DT><B><I>Control-C Control-X v</I></B><DD><P>Adds a leading comment to the variable or other definition
+on the current line.</P>
+<DT><B><I>Control-C Control-X e</I></B><DD><P>Adds a trailing comment at the end of the line.</P>
+<DT><B><I>Control-C Control-X i</I></B><DD><P>Adds an inline comment that is ignored by cxref.</P>
+</DL>
+</P>
+
+</H2>
+
+<P>To improve the output that is available a modified version of the GNU CPP V2.7.2
+is supplied (named cxref-cpp).<BR>
+This modified C preprocessor allows for a finer control over some features of
+the preprocessing that are not important for a compiler.  In a standard
+preprocessor, the preprocessor directives are intended for use only by the
+preprocessor, so passing the information through is not important.<BR>
+With cxref-cpp, there are two features that are different to the standard GNU
+CPP:
+<OL>
+<LI>The #include directives from the file are output in the same way as the
+#defines are output.  An extra flag has been added to cpp to do this, '-dI',
+it works in the same way as the existing '-dD' flag for #defines.</LI>
+<LI>Comments trailing a #include or a #define are dropped with GNU CPP even if -C
+is used. This is not important while compiling but is useful for documenting.</LI>
+</OL>
+</P>
+
+</H2>
+
+<P>The cross referencing is performed for the following items
+<DL>
+<DT><B>Files</B><DD><P>
+<UL>
+<LI>The files that the current file is included in
+<I>(even when included via other files).</I></LI>
+</UL>
+</P>
+<DT><B>#includes</B><DD><P>
+<UL>
+<LI>Files included in the current file.</LI>
+<LI>Files included by these files etc.</LI>
+</UL>
+</P>
+<DT><B>Variables</B><DD><P>
+<UL>
+<LI>The location of the definition of external variables.</LI>
+<LI>The files that have visibility of global variables.</LI>
+<LI>The files / functions that use the variable.</LI>
+</UL>
+</P>
+<DT><B>Functions</B><DD><P>
+<UL>
+<LI>The file that the function is prototyped in.</LI>
+<LI>The functions that the function calls.</LI>
+<LI>The functions that call the function.</LI>
+<LI>The files and functions that reference the function.</LI>
+<LI>The variables that are used in the function.</LI>
+</UL>
+</P>
+</DL>
+
+Each of these items is cross referenced in the output.<BR>
+The cross referencing uses files cxref.variable', cxref.function',
+cxref.include' and cxref.typedef' in the output directory.<BR>
+These are a complete list of the function and variable usage in the program and
+could be used to generate a function call hierarchy or variable usage diagram
+for example.<BR>
+Two cxref passes of each file is needed, the first to build up the cross
+referencing files and the second to use them.<BR>
+<I>(The file names are different if the -N' option is used.)</I></P>
+
+</H2>
+
+<P>The default LaTeX output is a file for each of the source files with one extra
+file cxref.tex' that includes each of the other files.  This is to allow a
+makefile to only update the changed files (although the references may require
+all of the files to be checked again).  When the cxref.tex file has been written
+it can be modified by the user, any new files that are added are added at the
+end of the source code section, the rest of the file being unchanged.<BR>
+The index is written to a file called cxref.apdx.tex' and cxref.tex is updated
+to refer to it.<BR>
+Also written out are three LaTeX style files page.sty', fonts.sty' and
+cxref.sty'.  These set up the page to use a smaller margin and smaller fonts to
+allow more to appear on a page and also define the new commands for typesetting
+the cxref output.<BR>
+<I>(The file names cxref.tex' and cxref.apdx.tex' are different if the -N'
+option is used.)</I><BR>
+The two different forms of LaTeX output are selected by using the <I>-latex209</I> or
+the <I>-latex2e</I> options.  These select between two sets of output that can be used
+with those two different versions of LaTeX.</P>
+
+</H2>
+
+<P>The default HTML output is a file for each of the source files with one extra
+file cxref.html' that includes each of the other files.  This is to allow a
+makefile to only update the changed files (although the references may require
+all of the files to be checked again).  When the cxref.html file has been
+written it can be modified by the user, any new files that are added are added
+The index is written to a file called cxref.apdx.html' and cxref.html is
+updated to refer to it.<BR>
+<I>(The file names cxref.html' and cxref.apdx.html' are different if the -N'
+option is used.)</I><BR>
+The two different forms of HTML output are selected by using the <I>-html20</I> or the
+<I>-html32</I> options.  These select between two sets of output that comply with the
+HTML 2.0 and 3.2 definitions, they differ in their use of tables.</P>
+
+</H2>
+
+<P>Rich Text Format is a fairly low level page description format devised by
+Microsoft.  It is not a well defined and easy to understand standard as are the
+other formats, but it is popular for document exchange.<BR>
+There is a single output file for each of the source files and an index file.</P>
+
+</H2>
+
+<P>Since SGML is a meta-language it is necessary to define the layout elements as
+well as provide the information.  The cxref output uses the LinuxDoc document
+format and is designed for use with the SGMLtools programs
+(http://www.sgmltools.org/).<BR>
+There is a single output file for each of the source files and an index file.</P>
+
+</H2>
+
+<P>There is a list of frequently asked questions and their answers for the cxref
+program in the FAQ file.  A list of improvements planned for future versions of
+the program are listed in the file TODO.</P>
+<P>More up-to-date information can be found on the World Wide Web at the cxref
+homepage, reached via the author's homepage http://www.gedanken.demon.co.uk/.</P>
+<P>If you wish to submit bug reports or other comments about the program then email
+the author amb@gedanken.demon.co.uk and put cxref in the subject line.</P>
+
+</H2>
+
+<P>The cxref program was written by Andrew M. Bishop in 1995,96,97,98,99.<BR>
+The cxref program is copyright Andrew M. Bishop 1995,96,97,98,99.<BR>
+The cxref-cpp program is copyright Free Software Foundation, Inc.<BR>
+The cxref and cxref-cpp programs can be freely distributed according to the
+terms of the GNU General Public License (see the file COPYING').</P>
+
+<HR>
+Next
+Previous
+</BODY>
+</HTML>
--- cxref-1.6c.orig/cpp/cccp.c
+++ cxref-1.6c/cpp/cccp.c
@@ -1029,6 +1029,16 @@ static void pipe_closed PROTO((int)) ATT

static void memory_full PROTO((void)) ATTRIBUTE_NORETURN;
static void print_help PROTO((void));
+
+/* Missing prototypes below break these functions on 64 bit machines
+   where sizeof(PTR)!=sizeof(default return=int) (amd64,ia64).  No gcc
+   warning as always invoked with a cast.  CM 20041101*/
+
+PTR xmalloc PROTO((size_t));
+PTR xrealloc PROTO((PTR,size_t));
+PTR xcalloc PROTO((size_t,size_t));
+char * xstrdup PROTO((const char *));
+

/* Read LEN bytes at PTR from descriptor DESC, for file FILENAME,
--- cxref-1.6c.orig/cpp/prefix.c
+++ cxref-1.6c/cpp/prefix.c
@@ -94,6 +94,8 @@ static HKEY reg_key = (HKEY) INVALID_HAN

char * concat PROTO((const char *, ...)); /* Need prototype to remove compile warning - AMB */

+char *concat(const char *first, ...);
+
/* Given KEY, as above, return its value.  */

static const char *
@@ -220,22 +220,22 @@ within Emacs.

The functions and key bindings are:
\begin{list}{}{\leftmargin=1.3in \labelwidth=2.5in}
-\item[{\it Control-C Control-F}]
+\item[{\it Control-C Control-X Control-F}]
file and if it is a .h file then it also adds a \#ifndef,
\#define at the beginning and \#endif at the end to stop
multiple inclusions.
-\item[{\it Control-C f}]
+\item[{\it Control-C Control-X f}]
line containing the start of the function definition when
this function is called.  The /*+ ... +*/ comment that is
-\item[{\it Control-C v}]
+\item[{\it Control-C Control-X v}]
on the current line.
-\item[{\it Control-C e}]
+\item[{\it Control-C Control-X e}]
Adds a trailing comment at the end of the line.
-\item[{\it Control-C i}]
+\item[{\it Control-C Control-X i}]
Adds an inline comment that is ignored by cxref.
\end{list}

@@ -224,22 +224,22 @@ within Emacs.
<p>
The functions and key bindings are:
<descrip>
-<tag><it>Control-C Control-F</it></tag>
+<tag><it>Control-C Control-X Control-F</it></tag>
file and if it is a .h file then it also adds a #ifndef,
#define at the beginning and #endif at the end to stop
multiple inclusions.
-<tag><it>Control-C f</it></tag>
+<tag><it>Control-C Control-X f</it></tag>
line containing the start of the function definition when
this function is called.  The /*+ ... +*/ comment that is
-<tag><it>Control-C v</it></tag>
+<tag><it>Control-C Control-X v</it></tag>
on the current line.
-<tag><it>Control-C e</it></tag>
+<tag><it>Control-C Control-X e</it></tag>
Adds a trailing comment at the end of the line.
-<tag><it>Control-C i</it></tag>
+<tag><it>Control-C Control-X i</it></tag>
Adds an inline comment that is ignored by cxref.
</descrip>

@@ -221,22 +221,22 @@ within Emacs.
<p>
The functions and key bindings are:
<dl>
-<dt><i>Control-C Control-F</i>
+<dt><i>Control-C Control-X Control-F</i>
file and if it is a .h file then it also adds a #ifndef,
#define at the beginning and #endif at the end to stop
multiple inclusions.
-<dt><i>Control-C f</i>
+<dt><i>Control-C Control-X f</i>
line containing the start of the function definition when
this function is called.  The /*+ ... +*/ comment that is
-<dt><i>Control-C v</i>
+<dt><i>Control-C Control-X v</i>
on the current line.
-<dt><i>Control-C e</i>
+<dt><i>Control-C Control-X e</i>
<dd>Adds a trailing comment at the end of the line.
-<dt><i>Control-C i</i>
+<dt><i>Control-C Control-X i</i>
<dd>Adds an inline comment that is ignored by cxref.
</dl>

@@ -204,22 +204,22 @@ within Emacs.

The functions and key bindings are:

file and if it is a .h file then it also adds a #ifndef,
#define at the beginning and #endif at the end to stop
multiple inclusions.

-Control-C f         - Adds comments to a function, the cursor must be on the
+Control-C Control-X f         - Adds comments to a function, the cursor must be on the
line containing the start of the function definition when
this function is called.  The /*+ ... +*/ comment that is

-Control-C v         - Adds a leading comment to the variable or other definition
+Control-C Control-X v         - Adds a leading comment to the variable or other definition
on the current line.

-Control-C e         - Adds a trailing comment at the end of the line.
+Control-C Control-X e         - Adds a trailing comment at the end of the line.

-Control-C i         - Adds an inline comment that is ignored by cxref.
+Control-C Control-X i         - Adds an inline comment that is ignored by cxref.

--------------------------------------------------------------------------------
-------------------------------- C Preprocessor --------------------------------
--- cxref-1.6c.orig/src/latex.c
+++ cxref-1.6c/src/latex.c
@@ -935,8 +935,8 @@ static void WriteLatexTemplate(char* nam
fputs("\n",template);
fputs("% Contents (Optional, either here or at end)\n",template);
fputs("\n",template);
- fputs("%\\markboth{Contents}{Contents}\n",template);
- fputs("%\\tableofcontents\n",template);
+ fputs("\\markboth{Contents}{Contents}\n",template);
+ fputs("\\tableofcontents\n",template);
fputs("\n",template);
fputs("\\chapter{Source Files}\n",template);
fputs("\n",template);
@@ -946,8 +946,8 @@ static void WriteLatexTemplate(char* nam
fputs("\n",template);
fputs("% Contents (Optional, either here or at beginning)\n",template);
fputs("\n",template);
- fputs("\\markboth{Contents}{Contents}\n",template);
- fputs("\\tableofcontents\n",template);
+ fputs("%\\markboth{Contents}{Contents}\n",template);
+ fputs("%\\tableofcontents\n",template);
fputs("\n",template);
fputs("\\end{document}\n",template);

--- cxref-1.6c.orig/contrib/cxref.el
+++ cxref-1.6c/contrib/cxref.el
@@ -15,11 +15,11 @@

(defun cxref-c-mode-common-hook () "Set up the key bindings for cxref in cc-mode"
-  (define-key c-mode-map "\C-c\C-f"  'cxref-file-comment)     ;; Control-C Control-F
-  (define-key c-mode-map "\C-cf"     'cxref-function-comment) ;; Control-C f
-  (define-key c-mode-map "\C-cv"     'cxref-variable-comment) ;; Control-C v
-  (define-key c-mode-map "\C-ce"     'cxref-endline-comment)  ;; Control-C e
-  (define-key c-mode-map "\C-ci"     'cxref-inline-comment)   ;; Control-C i
+  (define-key c-mode-map "\C-c\C-x\C-f"  'cxref-file-comment)     ;; Control-C Control-F
+  (define-key c-mode-map "\C-c\C-xf"     'cxref-function-comment) ;; Control-C f
+  (define-key c-mode-map "\C-c\C-xv"     'cxref-variable-comment) ;; Control-C v
+  (define-key c-mode-map "\C-c\C-xe"     'cxref-endline-comment)  ;; Control-C e
+  (define-key c-mode-map "\C-c\C-xi"     'cxref-inline-comment)   ;; Control-C i
)

`