summaryrefslogtreecommitdiff
path: root/gs/man/ansi2knr.1
blob: f3d31c40d6dd0f98d73497009632e94f0c0c3291 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
.\" $Id$
.TH ANSI2KNR 1 "8 March 2000" \" -*- nroff -*-
.SH NAME
ansi2knr \- convert ANSI C to Kernighan & Ritchie C
.SH SYNOPSIS
\fBansi2knr\fR [\fB--filename\fR \fIfilename\fR] [\fIinput_file\fR [\fIoutput_file\fR]]
.br
.SH DESCRIPTION
\fB--filename\fR provides the file name for the #line directive in the output,
overriding \fIinput_file\fR (if present).
.sp
If no \fIinput_file\fR is supplied, input is read from stdin.
.sp
If no \fIoutput_file\fR is supplied, output goes to stdout.
.sp
There are no error messages.
.sp
\fBansi2knr\fR
recognizes function definitions by seeing a non-keyword identifier at the left
margin, followed by a left parenthesis, with a right parenthesis as the last
character on the line, and with a left brace as the first token on the
following line (ignoring possible intervening comments).  It will recognize a
multi-line header provided that no intervening line ends with a left or right
brace or a semicolon.  These algorithms ignore whitespace and comments, except
that the function name must be the first thing on the line.
.sp
\fBansi2knr\fP
also recognizes adjacent string literals and concatenates them.
.sp
The following constructs will confuse it:
.br
     - Any other construct that starts at the left margin and follows the
above syntax (such as a macro or function call).
.br
     - Some macros that tinker with the syntax of the function header.
.br
     - String literals whose concatenation requires rewriting
their contents; e.g. "ab\0" "07c" is concatenated to "ab\007c",
which is not correct.
.sp
The --varargs switch is obsolete, and is recognized only for
backwards compatibility.  The present version of
\fBansi2knr\fR
will always attempt to convert a ... argument to va_alist and va_dcl.
.SH AUTHOR
L. Peter Deutsch <ghost@aladdin.com> wrote the original ansi2knr and
continues to maintain the current version; most of the code in the current
version is his work.  ansi2knr also includes contributions by Francois
Pinard <pinard@iro.umontreal.ca>, Jim Avera <jima@netcom.com>, and Paul
Eggert <eggert@twinsun.com>.