MSGCPP(1) User Commands MSGCPP(1)
NAME
msgcpp - C language message catalog preprocessor
SYNOPSIS
msgcpp [
-ACEHMPVX] [
-D name[
=value]] [
-I directory] [
-U name]
[
-T[
length]] [
-Y directory] [
input [
output] ]
DESCRIPTION
msgcpp is a C language message catalog preprocessor. It accepts
cpp(1) style options and arguments.
msgcpp preprocesses an input C
source file and emits keyed lines to the output, usually for further
processing by
msgcc(1).
msgcc output is in the
gencat(1) syntax.
Candidate message text is determined by arguments to the last
<error.h> and
<option.h> functions. The
msgcpp keyed output lines
are:
cmd command command is a candidate for
--??keys option string
generation. This is triggered by
b_command(int argc, in the input.
def name string name is a candidate variable with
string value
string.
str string string should be entered into the catalog.
var name If
def name occurs then its string value should be
entered into the catalog.
The input source file is preprocessed with the
pp:allpossible option
on. This enables non-C semantics. All source should first be
compiled error-free with a real compiler before running
msgcpp. The
following changes are enabled for the top level files. Included file
behavior is not affected.
1. All
#if,
#ifdef and
#ifndef branches are enabled.
2. The first definition for a macro is retained, even when
subsequent
#define statements would normally redefine the
macro.
#undef must be used to redefine a macro.
3. Macro calls with an improper number of arguments are
silently ignored.
4.
#include on non-existent headers are silently ignored.
5. Invalid C source characters are silently ignored.
msgcat.h is included if it exists. This file may contain macro
definitions for functions that translate string arguments. If
foo is
a function that translates its string arguments then include the line
#define foo _TRANSLATE_ in
msgcat.h, or specify the option
-Dfoo=_TRANSLATE_. If
bar is a function that translates string
arguments if the first argument is
stderr, then use either
#define bar _STDIO_ or
-Dbar=_STDIO_.
The macro
_BLD_msgcat is defined to be
1. As an alternative to
msgcat.h,
_TRANSLATE_ definitions could be placed inside
#ifdef _BLD_msgcat ... #endif.
OPTIONS
The following options are supported:
-A --assert=assertion Enter the assertion using
#assert for system
V compatibility.
-C --comments Pass comments to the output.
Comments are omitted by default.
-D --define=name[=value] Define the macro
name to have
value. This is
the only portable way to pass options
through
cc to
cpp(1).
o If
=value is omitted,
value is
assumed to be
1 .
o If
name begins with
:, then it is
interpreted as a
libpp #pragma pp: statement.
o If
name begins with
%, it is
interpreted as a
libpp # directive statement.
o If name begins with a
- or a
+,
it is interpreted as a
libpp option.
- turns the option on,
+ turns it
off.
o Most options have a
#pragma counterpart that is listed with
the option definition.
-D-C pp:compatibility Preprocess for K&R C compatibility.
-D-Dlevel pp:debug level level Set the debug trace level.
Specify
level as a number greater than
or equal to
0. Higher levels produce
more output. Levels higher than
3 can
only be enabled in the
-g compiled
versions.
-D-Fname Set the main input file name to
name.
This only affects the error messages and
the line sync output.
-D-H pp:hosted All directories are hosted.
Compatibility warning messages from the
hosted directory headers are suppressed.
-D-I pp:cdir All directories contain C headers. This
option is only used only with
-D-+.
-D-K pp:keyargs Enable the non-standard
name=value macro
argument mode.
-D-L[id] pp:lineid [id]
Set the line sync directive id to
id. If
id is not specified, set to null.
-D-M pp:nomultiple Disable multiple include detection.
-D-P pp:passthrough Enable the non-standard passthrough
mode. This can be useful for processing
non-C input.
-D-Q pp:dump Dump macro definitions to the output so
that the output may be passed through
cpp again. This is used for generating
precompiled headers.
-D-R pp:transition Enable the transition preprocessing
mode. This is used for compilers that
cannot make up their semantics between
K&R and ISO C.
-D-S pp:strict Enable strict preprocessing semantics
and warnings. This works with any mode
(compatibility, transition, or the
default ISO).
-D-Ttest pp:test test Enable implementation specific test code
according to
test.
-D-W pp:warn Enable pedantic warnings in non-hosted
files.
-D-X[cc] Preprocess for the
cc compiler, which
must be an executable path or an
executable on
$PATH.
-D-Z pp:pool Enable pool mode.
-D-d List canonicalized
#define statements
for non-predefined macros in the output.
-D-m List canonicalized
#define statements
for all macros. All other output is
disabled.
-D-+ pp:plusplus Preprocess for the C++ dialect.
-E --preprocess Ignored; for compatibility with very old
compilers.
-H --include-reference Emit
#include file paths on the standard
error, one per line, indented to show
nesting.
-I --include[=directory] Append directory to the list of directories
searched for
#include files.
If directory is
-:
1.
-I directories before
-I- are
searched only for
"..." include
files
2.
-I directories after
-I- are
searched for
"..." and
<"..."> include files
3. the directory
. is searched only
if it is explicitly specified by
an
-I option
-I-Cdirectory pp:cdir directory Mark
directory as a C header directory.
This option is used with
pp:plusplus.
-I-D[file]
Read the default
probe definitions from
file, or ignore the default definitions
if
file is omitted.
-I-Hdirectory pp:hostdir directory Mark directory as a hosted directory.
Headers from hosted directories have
compatibility warnings disabled.
-I-Iheader pp:ignore header Add
header to the list of ignored
headers.
-I-Mfile file contains a sequence of header
[= "map" ] lines, where header is either
<name> or
"name", and
"map" is an
explicit binding for header. header is
ignored
if = "map" is omitted.
-I-Rfile Include
file but do not emit text or
line syncs.
-I-Sdirectory Add
directory to the default standard
include directory list.
-I-Tfile Include
file and emit text to the output
file. The option value can be omitted.
-M --dependencies Generate
make(1S) dependencies. This option
is not needed with
nmake.
The
-M option can be followed by optional
flags to change the dependency output
styles.
The following optional flags are supported:
D Generate dependencies in a separate
.d file. Preprocessed output is still
written to output, or the standard
output if output is omitted.
G Also generate missing dependencies.
M Only generate local header
dependencies. Hosted headers are
omitted. Hosted headers are determined
by the
-I-H option and the -
-pp:hosted and
pp:hostdir pragmas. No special
distinction is made between the
"" and
<> include styles.
-P --sync Emit line syncs.
Line sync is turned on by default.
-P means
--nosync.
-T[length] If not
gcc, truncate identifiers to
length characters for compatibility with old AT&T
compilers.
-U --undefine=name Remove the definition for the macro
name.
-V --version Emit the
libpp version.
-X --argmode Enable
name=value macro arguments for
easel compatibility.
-Y --standard=directory Add
directory to the list searched for
#include <...> files.
OPERANDS
The following operands are supported:
input Specifies C source file to preprocess.
output Specifies output file.
EXIT STATUS
0 Successful completion.
>0 An error occurred.
EXAMPLES
Example 1: Using msgcpp to Extract Localizable Strings
The following example uses
msgcpp to extract localizable strings from
the file
hello.c, marked using the
ERROR_dictionary(), and writes
them to the file
hello.mso:
example% cat hello.c
#include <stdio.h>
#include <stdlib.h>
/*
* dummy macro to avoid including
* libast headers
*/
#define ERROR_dictionary(x) x
int main(int ac, char *av[])
{
puts( ERROR_dictionary("hello world") );
puts( ERROR_dictionary("hello all") );
return( EXIT_SUCCESS );
}
example% msgcpp -D__STDC__ -D__i386 hello.c hello.mso
example% cat hello.mso
str "hello world"
str "hello all"
AUTHORS
Glenn Fowler,
gsf@research.att.comATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Volatile |
+--------------------+-----------------+
SEE ALSO
cpp(1),
gencat(1),
msgcc(1),
msgcvt(1),
msggen(1),
make(1S),
attributes(7) Kernighan, Brian W. and Ritchie, Dennis M.,
The C Programming Language, Prentice Hall, 1988.
October 9, 2007 MSGCPP(1)