Provided by: pcp_3.5.6ubuntu1_i386 bug


       pmcpp - simple preprocessor for the Performance Co-Pilot


       pmcpp [-D name[=value] ...]  [infile]


       pmcpp provides a very simple pre-processor for manipulating Performance
       Metric Name Space (PMNS) files for the Performance Co-Pilot (PCP).   It
       is  most  commonly  used  internally  to process the PMNS file(s) after
       pmLoadASCIINameSpace(3) is called.

       Input lines are read from infile (or standard input if  infile  is  not
       specified), processed and written to standard output.

       All  C-style comments of the form /* ... */ are stripped from the input

       There are no predefined macros for pmcpp although macros may be defined
       on  the  command  line  using  the -D option, where name and value must
       follow the same rules as described below for the #define directive.

       pmcpp accepts the  following  directives  in  the  input  stream  (like

       *  #include "filename"
          #include <filename>
          In either case the directory search path for filename tries filename
          first, then the directory for the  command  line  infile  (if  any),
          followed  by  the  $PCP_VAR_DIR/pmns directory.  #include directives
          may be nested, up to a maximum depth of 5.

       *  #define name value
          Defines a value for the macro name which must  be  a  valid  C-style
          name,  so  leading  alphabetic  or  ``_''  followed  by zero or more
          alphanumerics or ``_''.  value is optional (and defaults to an empty
          value)  but  when present it may not contain white space and quoting
          or escaping is not supported.

       *  #undef name
          Removes the macro definition, if any, for name.

       *  #ifdef name
          #ifndef name
          The enclosing lines will be stripped or included, depending  if  the
          macro name is defined or not.

       Macro  substitution is achieved by breaking the input stream into words
       separated by white space or one of the characters ``.'' or ``:'' - this
       matches  the syntax of the PMNS, see pmns(4).  Each word is checked and
       if it matches a macro name, the word is replaced by  the  macro  value,
       otherwise the word is unchanged.

       There  is  generally  one output line for each input line, although the
       line may be empty if the text has been stripped due to the handling  of
       comments  or  conditional  directives.   When  there is a change in the
       input stream, an additional output line is generated of the form:

                 # line "name"

       to indicate the following line of output  corresponds  to  line  number
       line of the input file name.

       Important cpp(1) features that are not supported by pmcpp include:

       *  #if expr

       *  Nested use of #ifdef or #ifndef.

       *  #else within an #ifdef or #ifndef.

       *  Stripping C++ style comments, as in // comment

       *  Error recovery - the first error encountered by pmcpp will be fatal.

       *  cpp(1) command line options like -U , -P and -I.


       Environment variables with the prefix PCP_ are used to parameterize the
       file and directory names used by PCP.  On each installation,  the  file
       /etc/pcp.conf  contains  the  local  values  for  these variables.  The
       $PCP_CONF variable may be used to specify an alternative  configuration
       file, as described in pcp.conf(4).


       cpp(1), pmLoadASCIINameSpace(3), pmns(4), pcp.conf(4) and pcp.env(4).