Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Postfix/mantools/   (Postfix Mailserver Version 3.11©)  Datei vom 19.1.2017 mit Größe 5 kB image not shown  

Quelle  ccformat   Sprache: unbekannt

 
#!/bin/sh

# ccformat - convert C code to standard format

# @(#) ccformat.sh 1.3 11/5/89 14:39:29

# how to suppress newlines in echo

case `echo -n` in
"") n=-n; c=;;
 *) n=; c='\c';;
esac

# initialize

TMPF=/tmp/ccformat.$$
ERROR=
TROFF=
BCK=
FLAGS="-st -di8 -npsl -bap -bad -bbb -nbc -i4 -d0 -nip -nfc1 -cd41 -c49"

trap 'rm -f .ind.$$ $TMPF; exit 1' 1 2 3 15

# parse command options

while :
do
 case $1 in
 -t) TROFF=-troff;;
 -b) case $# in
     1) ERROR="-b option requires backup argument"break;;
     *) BCK=$2; shift;;
     esac;;
 -T) case $# in
     1) ERROR="-T option requires typename argument"break;;
     *) FLAGS="$FLAGS -T$2"; shift;;
     esac;;
 -*) ERROR="invalid option: $1"break;;
  *) break;;
 esac
 shift
done

# check for invalid commands

test -z "$ERROR" || {
 echo "$0: $ERROR" 1>&2
 echo "usage: $0 [-b backup] [-t] [-T typename] [file(s)]" 1>&2
 exit 1; }

# format the files

case $# in 
 0) indent $TROFF $FLAGS;;
 *) case "$TROFF" in
-troff) for i in $*
 do
     indent $TROFF $FLAGS $i
 done;;
     *) for i in $*
 do 
     echo $n $i... $c 
     test -z "$BCK" || cp $i $i"$BCK" || { echo backup FAILED; exit 1; } 
     { # some versions of indent return garbage exit status -- gack!
     (indent $FLAGS <$i 2>.ind.$$ >$TMPF || test ! -s .ind.$$) >$TMPF &&
     # try a device full check
     # echo >>$TMPF && 
     (
  # ignore interrupts while we overwrite the original file
  trap '' 1 2 3 15; cp $TMPF $i 
     ) && echo replaced; } || { echo replacement FAILED; exit 1; }
 done;;
    esac;;
esac

rm -f $TMPF .ind.$$

exit

#++
# NAME
# ccformat 1
# SUMMARY
# convert C source text to standard format
# PROJECT
# sdetools
# SYNOPSIS
# ccformat [-b backup] [-t] [-T typename] [file(s)]
# DESCRIPTION
# The \fIccformat\fR command adjusts the layout of C program text 
# such that it approximates the Kernighan and Ritchie coding style.
#
If no file names are specified, \fIccformat\fR reads 
# from standard input and writes the result to standard output. 
This is convenient for source formatting from within a text
# editor program.
#
# Otherwise, the named files are overwritten with their 
# formatted equivalent. The \fI-b\fR option (see below) provides 
# a way to create backup copies of the original files.
#
# Alternatively, the command can be used as a preprocessor for
# pretty-printing with the \fInroff\fR or \fItroff\fR commands
# (see the -t option below). In this case, output is always written 
# to standard output and no change is made to source files.
#
# The following options are recognized:
# .TP
# -b backup
# Requests that a copy of the original files be saved. The backup
# file name is constructed by appending the specified \fIbackup\fR 
# string to the original file name. 
This option is ignored when the \fI-t\fR
# option is specifid.
# .TP
# -t
# Makes the program act as a preprocessor
for pretty-printing with \fInroff\fR or \fItroff\fR.
For example, in order to produce a pretty-printed
# version on the line printer, use
#
 ccformat -t file(s) | nroff -mindent | col | lp
# .TP
# -T typename
# Adds \fItypename\fR to the list of type keywords.
# Names accumulate: -T can be specified more
# than once. You need to specify all the
# typenames that appear in your program that
# are defined by typedefs - nothing will be
# harmed if you miss a few, but the program
# won't be formatted as nicely as it should.
# PROGRAM LAYOUT
# .fi
# .ad
# The following program layout is produced:
# .TP 
# comments
# Comments starting in the first column are left untouched.
# These are often carefully laid out by the programmer.
# .sp
# Comments that appear in-between statements are lined up with 
# the surrounding program text, and are adjusted to accommodate 
# as many words on a line as possible. 
# However, a blank line in the middle of a comment is respected.
# .sp
# Trailing comments after declarations begin at column 41 
# (5 tab stops). 
# Trailing comments after executable statements start at 
# column 49 (6 tab stops). 
# .TP
# indentation
# Statements are indented by multiples of four columns. 
# There is only one statement per line. A control statement
# is always placed on a separate line.
# .TP
# braces
If an opening brace is preceded by a control statement (\fCif,
elsedofor\fR or \fCswitch\fR), it is placed on the same line 
# as the control statement.
# .sp
# A closing brace is placed at the same level of indentation as the 
# program text that precedes the corresponding opening brace.
If a closing brace is followed by a control statement (\fCelse\fR
# or \fCwhile\fR), that control statement is placed on the same line 
# as the closing brace.
# .sp
# In practice, brace placement is as
# exemplified by the books on C by B.W. Kernighan and D.M. Ritchie.
# .TP
# blanks
# Blanks are placed around assignment and arithmetic operators.
# Commas in declarations or parameter lists are followed by one blank. 
# .sp
# In the following cases a 
# blank line is inserted if it is not already present in the text:
1) in front of a block comment, 2) between local declarations and 
# executable statements 3) after each function body. 
# .TP
# declarations
# In the output, each variable declaration appears on
# a separate line.
# COMMANDS
# indent(1)
# FILES
# /tmp/ccformat.* intermediate files
# SEE ALSO
# indent(1)
# DIAGNOSTICS
# Indent may complain in case of syntax errors. These show
# up as comments in the resulting program text.
# BUGS
# The programs seems to beave even when fed ANSI C or even C++
# code; this has not been tested thoroughly, however.
#
# Will produce useless files when fed with anything that is
# not C program text. This does not imply a judgment about
# C programs in general.
# AUTHOR(S)
# W.Z. Venema
# Eindhoven University of Technology
# Department of Mathematics and Computer Science
# Den Dolech 2, P.O. Box 5135600 MB Eindhoven, The Netherlands
# CREATION DATE
# Fri May  6 14:07:04 MET DST 1988
# STATUS
# ccformat.sh 1.3 11/5/89 14:39:29 (draft)
#--

Messung V0.5 in Prozent
C=99 H=33 G=73

[Dauer der Verarbeitung: 0.14 Sekunden, vorverarbeitet 2026-08-08]