packages icon



 CFLOW(1)                           CFLOW                           CFLOW(1)
                                May 10, 2025



 NAME
      cflow - generate a C-language flowgraph

 SYNOPSIS
      cflow [-ADIPSTUabdfilmnopqrsvx] [-D NAME[=DEFN]] [-I DIR] [-P DIR] [-U
      NAME] [-d NUMBER] [-f NAME] [-i CLASSES] [-m NAME] [-o FILE] [-p
      NUMBER] [-s SYMBOL:[=]TYPE] [--all] [--[no-]ansi] [--[no-]brief]
      [--cpp=COMMAND] [--debug=[NUMBER]] [--define=NAME[=DEFN]]
      [--depth=NUMBER] [--[no-]emacs] [--format=NAME] [--include=CLASSES]
      [--include-dir=DIR] [--level-indent=ELEMENT] [--main=NAME] [--no-cpp]
      [--no-main] [--no-preprocess] [--[no-]number] [--[no-]omit-arguments]
      [--[no-]omit-symbol-names] [--output=FILE] [--prepend-path=DIR]
      [--preprocess=[COMMAND]] [--[no-]print-level] [--profile=FILE]
      [--pushdown=NUMBER] [--[no-]reverse] [--start=NAME]
      [--symbol=SYMBOL:[=]TYPE] [--target=NAME] [--[no-]tree]
      [--undefine=NAME] [--[no-]use-indentation] [--[no-]verbose] [--xref]
      [FILE]...

      cflow [-?V] [--help] [--usage] [--version]

 NOTE
      This manpage is a short description of GNU cflow.  For a detailed dis-
      cussion,  including  examples  and usage recommendations, refer to the
      GNU Cflow Manual available in texinfo format.  If the info reader  and
      the  cflow  documentation  are  properly installed on your system, the
      command

          info cflow

      should give you access to the complete manual.

      You can also view the manual using the info mode in emacs(1), or  find
      it in various formats online at

          http://www.gnu.org/software/cflow/manual

      If any discrepancies occur between this  manpage  and  the  GNU  Cflow
      Manual, the later shall be considered the authoritative source.

 DESCRIPTION
      Cflow analyzes a collection of input files written  in  C  programming
      language  and  writes to standard output a graph charting dependencies
      between various functions.

 OPTIONS
    General-purpose options
      -d, --depth=NUMBER
           Set the depth at which the flowgraph is cut off.  By default  the
           depth is not limited.





                                    - 1 -         Formatted:  August 2, 2025






 CFLOW(1)                           CFLOW                           CFLOW(1)
                                May 10, 2025



      --debug[=NUMBER]
           Set debugging level.

      -f, --format=NAME
           Use given output format NAME. Valid names are dot (DOT language),
           gnu (the default) and posix.

      -i, --include=CLASSES
           Include specified classes of symbols.  The ^or-  symbol  excludes
           the classes that follow it.  Valid classes are:

           _ (underscore)
                Symbols whose names begin with an underscore.

           s    Static symbols

           t    Typedefs (for cross-references only).

           x    All data symbols, both external and static

      -o, --output=FILE
           Set output file name (default is -, meaning stdout).

      -r, --[no-]
           Print (don't print) reverse call tree.

      -x, --xref
           Produce cross-reference listing only.

      -v, --verbose
           Enable verbose error diagnostics.

      --no-verbose
           Cancel effect of any prior --verbose options.

    Program initialization
      These options manipulate cflow profiles.  A profile is a set of  cflow
      options  intended  to  be  applied together.  Profiles are used, among
      others, to provide settings for specific versions of the C language.

      Each profile is given a  unique  name  and  stored  in  a  file  named
      NAME.cfo  located  in profile search path.  The default search path is
      determined at compile time, and normally  consists  of  the  following
      directories:

      ~/.cflow.d
           (~/ stands for the user home directory)

      /usr/share/cflow/site-init





                                    - 2 -         Formatted:  August 2, 2025






 CFLOW(1)                           CFLOW                           CFLOW(1)
                                May 10, 2025



      /usr/share/cflow/VERSION
           (VERSION is the version of cflow)

      Examine the output of the cflow --help command, to obtain  the  search
      path used by your version of cflow.

      -P, --prepend-path=DIR
           Add DIR at the beginning of the profile search path.

      --profile=NAME
           Read options from the named profile.  A profile is  a  text  file
           containing  a set of cflow options.  This option causes lookup of
           the file NAME.cfo in profile search path.  The file is read,  and
           all  options  from  it  processed as though they appeared in that
           point of the command line.

      -q   Don't load default profile.

           Default profile is stored in file  default.cfo,  located  in  the
           search  path.   Unless  the -q option is given, that file is pro-
           cessed at startup.

    Parser control
      -a, --ansi
           Accept only sources in ANSI C.

      --no-ansi
           Don't assume input files are written in ANSI C.

      -D, --define=NAME[=DEFN]
           Predefine NAME as a macro.

      -I, --include-dir=DIR
           Add the directory DIR to the list of directories to  be  searched
           for header files.

      -p, --pushdown=NUMBER
           Set initial token stack size to NUMBER.

      --preprocess[=COMMAND], --cpp[=COMMAND]
           Run the specified preprocessor command.

      --no-preprocess, --no-cpp
           Disable preprocessing.

      -s, --symbol=SYMBOL:[=]TYPE
           Register SYMBOL with given TYPE, or define an  alias  (if  :=  is
           used).  Valid  types  are:  keyword (or kw), modifier, qualifier,
           identifier, type, wrapper, and declaration.  Any unambiguous  ab-
           breviation of the above is also accepted.




                                    - 3 -         Formatted:  August 2, 2025






 CFLOW(1)                           CFLOW                           CFLOW(1)
                                May 10, 2025



      -S, --use-indentation
           Rely on indentation to solve suspicious constructs.

      --no-use-indentation
           Don't use indentation in parsing (default).

      --target=NAME
           Show only graphs leading from start  symbols  to  this  function;
           multiple options are allowed.

      -U, --undefine=NAME
           Cancel any previous definition of NAME.

    Output control
      -A, --all
           Produce graphs for all global functions in the program.  Use this
           option  if your program contains functions which are not directly
           reachable from main().

           Output consists of separate flow graphs for each top-level  func-
           tion  defined  in the program.  These graphs will be placed after
           the graph for main() (if it exists), and will be ordered  lexico-
           graphically by the function name.

           If used twice, graphs for all global functions (whether top-level
           or not) will be displayed.

      -b, --brief
           Brief output.

      --no-brief
           Disable brief output.

      --emacs
           Format output for use with GNU Emacs.

      --no-emacs
           Disable the effect of the previous --emacs option.

      -l, --print-level
           Print nesting level along with the call tree.

      --no-print-level
           Don't print nesting level.

      --level-indent=ELEMENT
           Control graph appearance.

      -m, --main=NAME
           Assume main function is NAME.  This option can be given  multiple
           times.  A separate graph will be drawn for each function given as



                                    - 4 -         Formatted:  August 2, 2025






 CFLOW(1)                           CFLOW                           CFLOW(1)
                                May 10, 2025



           its argument.

      --no-main
           Assume there's no main function in the program.  This option  has
           the  same  effect as --all, except that, if the program do define
           the main function, it will be treated  as  any  other  functions,
           i.e. it will not be placed at the top of output, but in its place
           as per the lexicographic ordering of function  names.   See  also
           the description of --all.

      -n, --number
           Print line numbers.

      --no-number
           Don't print line numbers.

      --omit-arguments
           Do not print argument lists in function declarations.

      --no-omit-arguments
           Print argument lists in function declarations (the default).

      --omit-symbol-names
           Do not print symbol names in declaration strings.

      --no-omit-symbol-names
           Print symbol names in declaration strings (the default).

      -T, --tree
           Draw ASCII art tree.

      --no-tree
           Disable tree output.

    Informational options
      These options instruct the program to output the  requested  piece  of
      information and exit.

      -?, --help
           Print a short help summary.

      --usage
           Print a summary of available options.

      -V, --version
           Print program version.

 RETURN VALUE
      0    Successful completion.





                                    - 5 -         Formatted:  August 2, 2025






 CFLOW(1)                           CFLOW                           CFLOW(1)
                                May 10, 2025



      1    Fatal error occurred.

      2    Some input files cannot be read or parsed.

      3    Command line usage error.

 SEE ALSO
      Online copies of GNU cflow documentation in  various  formats  can  be
      found at:

          http://www.gnu.org/software/cflow/manual

 AUTHORS
      Sergey Poznyakoff <gray@gnu.org>.

 BUG REPORTS
      Report bugs to <bug-cflow@gnu.org>.

 COPYRIGHT
      Copyright c 2014-2025 Sergey Poznyakoff
      License GPLv3+: GNU GPL version 3 or later
      <http://gnu.org/licenses/gpl.html>
      This is free software: you are free to  change  and  redistribute  it.
      There is NO WARRANTY, to the extent permitted by law.






























                                    - 6 -         Formatted:  August 2, 2025