bcpp-20250914/ 0000755 0000000 0000000 00000000000 15061615555 011415 5 ustar root root bcpp-20250914/txtdocs/ 0000755 0000000 0000000 00000000000 14547732011 013100 5 ustar root root bcpp-20250914/txtdocs/manual.txt 0000644 0000000 0000000 00000037427 07471511734 015140 0 ustar root root
C(++) Beautifier V1.9
Written By Steven De Toni December 1995
Updated by Thomas Dickey January 1997
Contents
Page
1 Introduction
2 Disclaimer
3 Requirements
4 How To Use The Program
11 Configuration File Error Messages
12 Run Time Errors During Input File Processing
13 C(++) Beautifier Limitations
15 Contact Addresses
Page >1<
Introduction
This program enables a user to reformat certain elements of a C,
or C++ source code. This helps if one person's code is a little
unreadable, or has been indented to a style that you dislike.
Using this program will hopefully help in re-styling the code so
that it closely meets your style. However, due to the many styles
of C(++) that can be coded, there are limits to how well this
program will handle the source code, and resulting re-formatted
source.
The following are a list of features implemented:
- Reposition comments at certain locations.
- Remove non-printable characters not contained within
quotes.
- Convert non-printable characters within quotes to
octal/character notation.
- Re-space line spacing between functions.
- Trim trailing spaces from all lines, as well as leading
and trailing blank lines from the file.
- Reposition opening braces to Kernighan/Ritchie style,
or to Pascal style.
- Use of tabs, or spaces in indenting.
- Indention of single line code, according to certain C
condition statements, including embedded SQL
statements.
Page >2<
Disclaimer
The authors give no guarantees that this program will function to
the specifications given via the configuration, or the program's
reconstructed output of source code that have been processed. Any
damage that might arise from the use of this program (be it
software, or hardware) is the problem of user, and not the
authors. Using this software binds you to this disclaimer.
Page >3<
Requirements
This program will run under Microsoft DOS V3.3 and Unix
platforms.
It uses approximately 50 - 70k (or more, dependant upon internal
queue size) of memory during execution.
The program code has been written in such a way as to be
compatible with existing C++ compilers, however the code is not
ANSI standard and may require modification for your environment.
The source code has been written with standard ANSI and Posix
functions so that least amount of rewriting should be needed if
recompiling on another computer platform.
The current sources have been compiled using Turbo C++ V3.0, for
MS-DOS, GNU G++ 2.7.2 under Sun SPARCstation running SunOS,
Solaris as well as SGI workstations running IRIX.
Page >4<
How To Use The Program
Operation of the program is via the command line (CLI), and with
help from a configuration file you can define your format
requirements. Basically each command directive starts with a dash
'-' followed my the command name. If another parameter is need
for the command, the parameter is added after the command, and
separated with a space (i.e. bcpp -fi input.cpp).
N.B: Don't enter bcpp.exe on its own to find its command help,
use bcpp -?, or bcpp -h. This is due to the input redirection
from the O/S. Keeping to Unix CLI convention, a string that is
read from the CLI and does not have a command directive is
considered a input file. If there are two such occurrences on the
command line, the precedence will be input file first, and output
file second (i.e., bcpp infile.cpp outfile.cpp -lg), a third such
occurrence will generate a error message.
If no output file is presented, its assumed output is via the
standard output. This automatically turns off program output.
Parameters entered on the command line will override parameters
that have been read from the configuration file.
Example:
bcpp -fi input.cpp -f 2 -qb 5 -na -no -cc 60 > output.cpp
Synopsis
-fi input.cpp Input file = input.cpp
-f 2 Function spacing = 2
-qb 2 Internal Queue Buffer = 5
-na Remove non-ascii chars
-no Suppress program output
-cc 60 Comments that appear on same line as
code will be placed in column 60.
> output.cpp Output of program is redirected to
"output.cpp"
Page >5<
A configuration file can be used to specify most of the non-
changing elements in reformatting of code. The configuration file
consists of some fairly lengthy words that are used to explain
the output style of the code. However setting these parameters is
very easy, they basically consist of two types, Boolean, or
Integer types. Using your favorite text editor, you can change
the following within the configuration file ...
The following parameters will be contained within the
configuration file (default is bcpp.cfg). The program will
attempt to read the default configuration file at the program
source (i.e. which path bcpp was run). Using the -fnc option you
can define a custom configuration file name, and path from the
CLI.
Integer Type Ranges : 0 - 5000
Boolean Type Ranges : On, Yes, or Off, No
Function_Spacing : Integer
This parameter specifies how many lines separate two functions.
e.g.,
function_spacing = 2
CLI
-f 2
Use_Tabs: Boolean
Specifies whether to use tabs in indenting code.
e.g.,
use_tabs = no
CLI
-t (This will turn tabs on, default uses spaces)
-s (Use tabs for indenting)
Indent_Spacing : Integer
Specifies how many spaces to indent. This parameter also sets the
width of tabs. Bcpp considers the width of a tab to be the same
as the width of an indent.
E.G.
indent_spacing = 4
CLI
-i 4 Page >6<
Comments_With_Code : Integer
Defines the column in which comments that appear after code on a
line will be placed.
e.g.,
comments_with_code = 50
CLI
-cc 50
Comments_With_Nocode : Integer
Defines the column in which comments that appear in a line will
be placed.
e.g.,
comments_with_nocode = 0
CLI
-nc 0
Indent_Preprocessor: Boolean
If true, bcpp will indent preprocessor lines to the indention of
the C(++) code. If false, preprocessor lines will be in the first
column. Unrecognized (i.e., nonstandard) preprocessor lines are
always put into the first column.
Indent_Exec_Sql: Boolean
If true, bcpp looks for embedded SQL statements (e.g., EXEC SQL),
and formats them specially.
Leave_Comments_NoCode : Boolean
This options overrides the "Comments_With_Nocode" option. Setting
this option On will indent comments that do not occur on the same
line as code to the same indention as code.
e.g.,
leave_comments_nocode = on
CLI
-nlcnc (Turn off Leave_Comments_NoCode)
-ylcnc (Turn on Leave_Comments_NoCode)
Page >7<
NonAscii_Quotes_To_Octal : Boolean
Use this option to change non-ASCII (non-printable) chars to
octal notation if they lie within quotes. This parameter doesn't
take effect unless either the Ascii_Chars_Only or
Leave_Graphic_Chars parameters have been set.
e.g.,
NonAscii_Quotes_to_Octal = no
CLI
-nq (Turn off non-ascii chars in quotes to octal)
-yq (Turn on non-ascii chars in quotes to octal)
Leave_Graphic_Chars : Boolean
Setting this parameter to yes will strip non-printable characters
from the source file, but leave any characters that are IBM
graphics alone. Any non-printable characters that lie within
quotes will be transformed into octal/character notation, if
NonAscii_Quotes_To_Octal parameter is set to True.
E.G.
leave_graphic_chars = yes
CLI
-lg
Ascii_Chars_Only : Boolean
Setting this parameter to yes will strip any non-printable,
non-ASCII characters from the input file. Any non-printable
characters that lie within quotes will be transformed into
octal/character notation if NonAscii_Quotes_To_Octal is set to
True. Comment out this parameter if you are using
Leave_Graphic_Chars parameter, as this parameter will override
it.
e.g.,
ascii_chars_only = yes
CLI
-na (Don't remove non-ASCII characters)
-ya (Yes remove non-ASCII characters)
Page >8<
Place_Brace_On_New_Line : Boolean
When set to 'on' bcpp will place opening braces on new lines
("Pascal" style C coding), when set to 'off' bcpp will use "K&R"
style C coding.
Pascal style C coding:
if (condition)
{
statements;
}
K&R style C coding:
if (condition) {
statements;
}
e.g.,
place_brace_on_new_line = on
CLI
-bnl (on )
-bcl (off)
Program_Output : Boolean
This parameter will stop output from the program corrupting
output that may exit from the program via the standard output.
If this parameter is set to off/no then no output is generated
from the program, unless an error is encountered. The standard
error is used to display any errors encountered while processing.
E.G
program_output = off
CLI
-no (default is generate output if possible, this will
force output off)
-yo (turn on program output if possible)
Page >9<
Queue_Buffer : Integer
Specifies what the internal memory requires will be in size of
the line processing buffer. This is used for open brace
relocation in Kernighan/Ritchie style. Extending this buffer to
large amounts of memory will slow processing on small machines.
e.g.,
Queue_Buffer = 2
CLI
-qb 2
; : Not Applicable
Placing a semicolon in front of text makes everything after the
semicolon a comment.
Backup_File : Boolean
This option will backup the input file to a file with the
extension ".bac" and overwrite the input file with the
reformatted version.
e.g.,
backup_file = yes
CLI
-yb (yes, backup input file if possible)
-nb (no, don't backup input file)
Page >10<
Loading Configuration File : CLI only
Bcpp implements a configuration setting to allow custom file
selection from a specific path/file defined by a user.
e.g.,
bcpp input.cpp -yb (read bcpp.cfg configuration file
before processing CLI options)
bcpp -fnc /bin/bcpp.cfg (load configuration file at
said location)
CLI
-fnc (use user defined)
Input File Name : CLI only
This option directs bcpp to read data at a given path, and file
name.
E.G
bcpp -fi input.cpp > output.cpp
CLI
-fi
Output File Name : CLI only
This defines the output file name that data is to be written to.
e.g.,
Has to be like this, (in DOS, at least):
bcpp -fo output.cpp < input.cpp
ClI
-fo
Online Help : CLI only
Some online help which is brief but to the point exists within
the program. The help lists all of the CLI commands available
within the program.
E.G bcpp -h
CLI bcpp -?
bcpp -h
Page >11<
Configuration File Error Messages
If you enter a command/parameter incorrectly within the
configuration file, upon the executable program reading it, the
program will generate a error message along with its line number.
The following is an explanation of error messages that may occur
while reading parameters within the configuration file.
- Syntax Error After Key Word :
Error occurs because the character/word after a
parameter was incorrect, or expected another keyword
(e.g =, Yes, No, On, Off)
- Range Error :
Error occurs when integer parameters have a invalid
numeric setting (i.e., A number is not within 0 -
5000).
- Expected Numeric Data :
This error occurs when alpha-numeric data is in place
of numeric data for integer type parameters.
- Can't Decipher :
The parameter at said line is not valid (i.e., not
recognizable).
If any errors have occurred after reading the configuration file;
the user is prompted with a [y/n] continuation prompt to either
fix the configuration error(s) before processing, or continue
with current set parameters.
Page >12<
Run Time Errors During Input File Processing
- Memory Allocation Failed :
The program was unable to allocate memory to process
data. This error will stop processing of data.
- Error In Line Construction
- Expected Some Sort Of Code ! Data Type = ? :
This error is generated within the line construction
process. The decoded line from the input file may be too
indecipherable for this program. Find the line in the input
file, and see if it can be altered so that processing can
continue.
Page >13<
C(++) Beautifier Limitations
This section highlights certain areas within code where bcpp will
fail to reconstruct the output code to the desired style
(although it may still be able to compile).
- All code that is fed through this program should be in
a compilable state. This means that there should be
closing braces that cancel out opening braces. Bcpp
does no syntax checking at all upon the code, but
reformats it according to open, closing braces, and a
handful of key words for single line indentation.
- There is also a limitation on how far the movement of
open braces can be processed. This is due to the
current design of the program (this can fixed easily by
extending the internal queue buffer size), memory
requirements, processing speed. Dynamic memory
allocation is used extensively throughout the program,
and may exceed current limits if certain conditions
arise.
The example shows that the movements of the brace from
the new line to the above code line will not take place
as it would be out of scope for the program if the
internal queue buffer is limited to 2 lines in size.
Page >13<
Example of brace movement scope:
if (a == b)
// Brace will not be re-positioned
{
b = c;
}
if (a == b) // Brace will be re-positioned
{
b = c;
}
End Result
if (a == b)
// Brace will not be re-positioned
{
b = c;
}
if (a == b){ // Brace will be re-positioned
b = c;
}
- There is a constraint that a single line of code should
only have one type of comment. If there are both C, and
C++ existing on the same line then the line
construction phase of the program will become confused,
and generate a error message. The following line will
produce a Line Construction Error message.
Example of multiple comments.
/* C Comment */ a = b; // C++ Comment
The above line will generate an error. Remedy this by
removing one type of comment, combine them, or place
one on a new line.
Page >15<
Contact Addresses
You can contact me via various online networks:
Internet Address
tge@midland.co.nz
steve@alpha.ocbbs.gen.nz
Net Mail Via Fido-Net (Dog Net)
Steven De Toni,
"The Great Escape",
Hamilton,
New Zealand
Demi-Monde New Zealand National Mail Net Work
(see Dog Net)
All else fails, send me snail mail at:
17 Garden Heights Ave,
Melville,
Hamilton,
New Zealand
Thomas Dickey can be reached at
dickey@invisible-island.net
Special thanks goes out to Glyn Webster for proof reading my
manual, and testing my program.
Thanks to Justin Slootsky for his input, and changes for this
version.
All _grammatical_ errors within this document are there for your
enjoyment. ;-) bcpp-20250914/txtdocs/hirachy.txt 0000644 0000000 0000000 00000005706 05672503204 015277 0 ustar root root
Object Hierarchy Diagram
Any Object ----+---- QueueList (generic queue object)
|
|
+---- StackList (generic stack object)
|
|
+---- InputStruct
|
|
+---- OutputStruct
|
|
+---- IndentStruct
Notes of class usage:
IndentStruct:
Even though IndentStruct is defined as a class, it is basically
a record structure. I have defined it as a class to help storage
of the record data easier, and to automate some of the
initialisation process. However, there are no methods (apart from
the constructor), that handles any of the object's data. All data
is altered directly within the class (i.e don't use methods to
change data).
InputStruct:
This is basically like the IndentStruct, except it has no defined
constructor. The class is used the same was as a normal
structure. A destructor isn't implemented as existing data may
belong to two, or more other objects.
OutputStruct:
This has more OO implementation than the previous two objects
(i.e constructor, destructor), but data is accessed the same as
any structure.
Entity RelationShip Diagram
+-----------+ +-------------+
| | have /| |
| QueueList |--------------| InputStruct |
| | \| |
+-----------+ +-------------+
|
|
| +--------------+
| have /| |
+--------------------| OutputStruct |
\| |
+--------------+
+-----------+ +--------------+
| | have /| |
| StackList |--------------| IndentStruct |
| | \| |
+-----------+ +--------------+
bcpp-20250914/txtdocs/bcpp.1 0000644 0000000 0000000 00000033547 14547732011 014122 0 ustar root root .\" $Id: bcpp.1,v 1.4 2024/01/11 09:25:29 tom Exp $
.TH BCPP 1 2024-01-11 "C++ Beautifier"
.de bP
.ie n .IP \(bu 4
.el .IP \(bu 2
..
.SH NAME
\fBbcpp\fP \-
make C++ beautifier
.SH SYNOPSIS
\fBbcpp \fI[options] [files]\fP
.br
\fBcb++ [files]\fP
.SH DESCRIPTION
This program enables a user to reformat certain elements of a C,
or C++ source code.
This helps if one person's code is a little
unreadable, or has been indented to a style that you dislike.
Using this program will hopefully help in re-styling the code so
that it closely meets your style.
However, due to the many styles
of C(++) that can be coded, there are limits to how well this
program will handle the source code, and resulting re-formatted
source.
.PP
The following are a list of features implemented:
.bP
Reposition comments at certain locations.
.bP
Remove non-printable characters not contained within quotes.
.bP
Convert non-printable characters within quotes to octal/character notation.
.bP
Re-space line spacing between functions.
.bP
Trim trailing spaces from all lines, as well as leading
and trailing blank lines from the file.
.bP
Reposition opening braces to Kernighan/Ritchie style, or to Pascal style.
.bP
Use of tabs, or spaces in indenting.
.bP
Indention of single line code, according to certain C
condition statements, including embedded SQL
statements.
.SS Operation
Operation of the program is via the command line (CLI), and with
help from a configuration file you can define your format
requirements.
Basically each command directive starts with a dash
"\-" followed my the command name.
If another parameter is need
for the command, the parameter is added after the command, and
separated with a space (i.e., bcpp -fi input.cpp).
.PP
N.B: Do not enter bcpp.exe on its own to find its command help,
use bcpp -?, or bcpp -h.
This is due to the input redirection
from the O/S.
Keeping to Unix CLI convention, a string that is
read from the CLI and does not have a command directive is
considered a input file.
If there are two such occurrences on the
command line, the precedence will be input file first, and output
file second (i.e., bcpp infile.cpp outfile.cpp -lg), a third such
occurrence will generate a error message.
.PP
If no output file is presented, its assumed output is via the
standard output.
This automatically turns off program output.
Parameters entered on the command line will override parameters
that have been read from the configuration file.
.PP
Example:
.nf
bcpp -fi input.cpp -f 2 -qb 5 -na -no -cc 60 > output.cpp
.fi
.PP
Synopsis
.PP
-fi input.cpp Input file = input.cpp
-f 2 Function spacing = 2
-qb 2 Internal Queue Buffer = 5
-na Remove non-ascii chars
-no Suppress program output
-cc 60 Comments that appear on same line as
code will be placed in column 60.
> output.cpp Output of program is redirected to
"output.cpp"
.PP
A configuration file can be used to specify most of the non-
changing elements in reformatting of code.
The configuration file
consists of some fairly lengthy words that are used to explain
the output style of the code.
However setting these parameters is
very easy, they basically consist of two types, Boolean, or
Integer types.
Using your favorite text editor, you can change
the following within the configuration file ...
.PP
The following parameters will be contained within the
configuration file (default is bcpp.cfg).
The program will
attempt to read the default configuration file at the program
source (i.e., which path bcpp was run).
Using the -fnc option you
can define a custom configuration file name, and path from the
CLI.
.SS "Data Types"
.bP
Integer Type Ranges : 0 - 5000
.bP
Boolean Type Ranges : On, Yes, or Off, No
.SS Parameters
.TP 5
Function_Spacing : Integer
This parameter specifies how many lines separate two functions.
e.g.,
function_spacing = 2
CLI
-f 2
.TP
Use_Tabs: Boolean
Specifies whether to use tabs in indenting code.
e.g.,
use_tabs = no
CLI
-t (Turn tabs on, default uses spaces)
-s (Use tabs for indenting)
.TP
Indent_Spacing : Integer
Specifies how many spaces to indent.
This parameter also sets the
width of tabs.
Bcpp considers the width of a tab to be the same
as the width of an indent.
E.G.
indent_spacing = 4
CLI
-i 4
.TP
Comments_With_Code : Integer
Defines the column in which comments that appear after code on a
line will be placed.
e.g.,
comments_with_code = 50
CLI
-cc 50
.TP
Comments_With_Nocode : Integer
Defines the column in which comments that appear in a line will
be placed.
e.g.,
comments_with_nocode = 0
CLI
-nc 0
.TP
Indent_Preprocessor: Boolean
If true, bcpp will indent preprocessor lines to the indention of
the C(++) code.
If false, preprocessor lines will be in the first
column.
Unrecognized (i.e., nonstandard) preprocessor lines are
always put into the first column.
.TP
Indent_Exec_Sql: Boolean
If true, bcpp looks for embedded SQL statements (e.g., EXEC SQL),
and formats them specially.
.TP
Keep_Comments_With_Code : Boolean
This option overrides the "Comments_With_Code" option.
Setting this option On will make comments which do not fit as inline
comments append to the code anyway.
.TP
Leave_Comments_NoCode : Boolean
This option overrides the "Comments_With_Nocode" option.
Setting
this option On will indent comments that do not occur on the same
line as code to the same indention as code.
e.g.,
leave_comments_nocode = on
CLI
-nlcnc (Turn off Leave_Comments_NoCode)
-ylcnc (Turn on Leave_Comments_NoCode)
.TP
NonAscii_Quotes_To_Octal : Boolean
Use this option to change non-ASCII (non-printable) chars to
octal notation if they lie within quotes.
This parameter does not
take effect unless either the Ascii_Chars_Only or
Leave_Graphic_Chars parameters have been set.
e.g.,
NonAscii_Quotes_to_Octal = no
CLI
-nq (Turn off non-ascii chars in quotes to octal)
-yq (Turn on non-ascii chars in quotes to octal)
.TP
Leave_Graphic_Chars : Boolean
Setting this parameter to yes will strip non-printable characters
from the source file, but leave any characters that are IBM
graphics alone.
Any non-printable characters that lie within
quotes will be transformed into octal/character notation, if
NonAscii_Quotes_To_Octal parameter is set to True.
E.G.
leave_graphic_chars = yes
CLI
-lg
.TP
Ascii_Chars_Only : Boolean
Setting this parameter to yes will strip any non-printable,
non-ASCII characters from the input file.
Any non-printable
characters that lie within quotes will be transformed into
octal/character notation if NonAscii_Quotes_To_Octal is set to
True.
Comment out this parameter if you are using
Leave_Graphic_Chars parameter, as this parameter will override it.
e.g.,
ascii_chars_only = yes
CLI
-na (Do not remove non-ASCII characters)
-ya (Yes remove non-ASCII characters)
.TP
Place_Brace_On_New_Line : Boolean
When set to 'on' bcpp will place opening braces on new lines
("Pascal" style C coding), when set to 'off' bcpp will use "K&R"
style C coding.
Pascal style C coding:
if (condition)
{
statements;
}
K&R style C coding:
if (condition) {
statements;
}
e.g.,
place_brace_on_new_line = on
CLI
-bnl (on )
-bcl (off)
.TP
Program_Output : Boolean
This parameter will stop output from the program corrupting
output that may exit from the program via the standard output.
If this parameter is set to off/no then no output is generated
from the program, unless an error is encountered.
The standard
error is used to display any errors encountered while processing.
E.G
program_output = off
CLI
-no (default is generate output if possible, this will
force output off)
-yo (turn on program output if possible)
.TP
Queue_Buffer : Integer
Specifies what the internal memory requires will be in size of
the line processing buffer.
This is used for open brace
relocation in Kernighan/Ritchie style.
Extending this buffer to
large amounts of memory will slow processing on small machines.
e.g.,
Queue_Buffer = 2
CLI
-qb 2
.TP
; : Not Applicable
Placing a semicolon in front of text makes everything after the
semicolon a comment.
.TP
Backup_File : Boolean
This option will backup the input file to a file with the
extension ".bac" and overwrite the input file with the
reformatted version.
e.g.,
backup_file = yes
CLI
-yb (yes, backup input file if possible)
-nb (no, do not backup input file)
.SS "Loading Configuration File : CLI only"
Bcpp implements a configuration setting to allow custom file
selection from a specific path/file defined by a user.
e.g.,
bcpp input.cpp -yb (read bcpp.cfg configuration file
before processing CLI options)
bcpp -fnc /bin/bcpp.cfg (load configuration file at
said location)
CLI
-fnc (use user defined)
.TP
Input File Name : CLI only
This option directs bcpp to read data at a given path, and file
name.
E.G
bcpp -fi input.cpp > output.cpp
CLI
-fi
.TP
Output File Name : CLI only
This defines the output file name that data is to be written to.
e.g.,
Has to be like this, (in DOS, at least):
bcpp -fo output.cpp < input.cpp
ClI
-fo
.TP
Online Help : CLI only
Some online help which is brief but to the point exists within
the program.
The help lists all of the CLI commands available
within the program.
E.G bcpp -h
CLI bcpp -?
bcpp -h
.SH DIAGNOSTICS
If you enter a command/parameter incorrectly within the
configuration file, upon the executable program reading it, the
program will generate a error message along with its line number.
.SS "Configuration File Processing"
The following is an explanation of error messages that may occur
while reading parameters within the configuration file.
.RS 5
.TP 3
Syntax Error After Key Word :
Error occurs because the character/word after a
parameter was incorrect, or expected another keyword
(e.g =, Yes, No, On, Off)
.TP
Range Error :
Error occurs when integer parameters have a invalid
numeric setting (i.e., A number is not within 0 -
5000).
.TP
Expected Numeric Data :
This error occurs when alpha-numeric data is in place
of numeric data for integer type parameters.
.TP
Cannot Decipher :
The parameter at said line is not valid (i.e., not
recognizable).
.RE
.PP
If any errors have occurred after reading the configuration file;
the user is prompted with a [y/n] continuation prompt to either
fix the configuration error(s) before processing, or continue
with current set parameters.
.SS "Input File Processing"
.RS 5
.TP 3
Memory Allocation Failed :
The program was unable to allocate memory to process
data.
This error will stop processing of data.
.TP
Error In Line Construction
.TP
Expected Some Sort Of Code ! Data Type = ? :
This error is generated within the line construction
process.
The decoded line from the input file may be too
indecipherable for this program.
Find the line in the input
file, and see if it can be altered so that processing can
continue.
.RE
.SH BUGS
This section highlights certain areas within code where bcpp will
fail to reconstruct the output code to the desired style
(although it may still be able to compile).
.bP
All code that is fed through this program should be in
a compilable state.
This means that there should be
closing braces that cancel out opening braces.
Bcpp
does no syntax checking at all upon the code, but
reformats it according to open, closing braces, and a
handful of key words for single line indentation.
.bP
There is also a limitation on how far the movement of
open braces can be processed.
This is due to the
current design of the program (this can fixed easily by
extending the internal queue buffer size), memory
requirements, processing speed.
Dynamic memory
allocation is used extensively throughout the program,
and may exceed current limits if certain conditions
arise.
The example shows that the movements of the brace from
the new line to the above code line will not take place
as it would be out of scope for the program if the
internal queue buffer is limited to 2 lines in size.
Example of brace movement scope:
if (a == b)
// Brace will not be re-positioned
{
b = c;
}
if (a == b) // Brace will be re-positioned
{
b = c;
}
End Result
if (a == b)
// Brace will not be re-positioned
{
b = c;
}
if (a == b){ // Brace will be re-positioned
b = c;
}
.bP
There is a constraint that a single line of code should
only have one type of comment.
If there are both C, and
C++ existing on the same line then the line
construction phase of the program will become confused,
and generate a error message.
The following line will
produce a Line Construction Error message.
Example of multiple comments.
/* C Comment */ a = b; // C++ Comment
The above line will generate an error.
Remedy this by
removing one type of comment, combine them, or place
one on a new line.
.SH AUTHORS
Written By Steven De Toni December 1995
.br
Updated by Thomas Dickey 1997-2024
.PP
You can contact Steven De Toni via various online networks:
Internet Address
tge@midland.co.nz
steve@alpha.ocbbs.gen.nz
Net Mail Via Fido-Net (Dog Net)
Steven De Toni,
"The Great Escape",
Hamilton,
New Zealand
Demi-Monde New Zealand National Mail Net Work
(see Dog Net)
.PP
If all else fails, send snail mail to:
.PP
17 Garden Heights Ave,
Melville,
Hamilton,
New Zealand
.PP
Thomas Dickey can be reached at
dickey@invisible-island.net
.PP
Special thanks goes out to Glyn Webster for proof reading my
manual, and testing my program.
.PP
Thanks to Justin Slootsky for his input, and changes for this
version. bcpp-20250914/configure.in 0000644 0000000 0000000 00000004076 14672377552 013746 0 ustar root root dnl Process this file with 'autoconf' to produce a 'configure' script
dnl $Id: configure.in,v 1.11 2024/09/17 22:15:06 tom Exp $
dnl ---------------------------------------------------------------------------
dnl Copyright 2002-2023,2024 -- Thomas E. Dickey
dnl
dnl Permission is hereby granted, free of charge, to any person obtaining a
dnl copy of this software and associated documentation files (the
dnl "Software"), to deal in the Software without restriction, including
dnl without limitation the rights to use, copy, modify, merge, publish,
dnl distribute, distribute with modifications, sublicense, and/or sell
dnl copies of the Software, and to permit persons to whom the Software is
dnl furnished to do so, subject to the following conditions:
dnl
dnl The above copyright notice and this permission notice shall be included
dnl in all copies or portions of the Software.
dnl
dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE.
dnl
dnl Except as contained in this notice, the name(s) of the above copyright
dnl holders shall not be used in advertising or otherwise to promote the
dnl sale, use or other dealings in this Software without prior written
dnl authorization.
dnl
dnl see
dnl https://invisible-island.net/autoconf/
dnl ---------------------------------------------------------------------------
AC_PREREQ(2.52.20240618)
AC_REVISION($Revision: 1.11 $)
AC_INIT(code/bcpp.cpp)
AC_CONFIG_HEADER(code/autoconf.h:config_h.in)
CF_CHECK_CACHE
AC_PROG_CXX
AC_PROG_CXXCPP
AC_PROG_INSTALL
AC_LANG_CPLUSPLUS
AC_EXEEXT
AC_OBJEXT
AC_PROG_EGREP
AC_PROG_FGREP
CF_PROG_LN_S
CF_DISABLE_ECHO
CF_GXX_WARNINGS
AC_CHECK_DECL(exit)
AC_OUTPUT(makefile code/makefile,,,cat)
bcpp-20250914/indent.cfg 0000644 0000000 0000000 00000013064 06644240565 013365 0 ustar root root ; This file contains configuration parameters that are used
; within the bcpp program.
; There are two types of parameter types : Boolean, and Integer.
; Boolean types can have only two valid values [On, Yes, or Off, No].
; Integer types can have a valid range of 0 - 5000.
;------------------------------------------------------------------------
; This parameter specifies how many lines separate between two
; functions.
;------------------------------------------------------------------------
function_spacing = 2 ; Integer
;------------------------------------------------------------------------
; Specifies whether to use tabs in indenting code.
;------------------------------------------------------------------------
use_tabs = yes ; Boolean
;------------------------------------------------------------------------
; Specifies how many spaces to indent. This parameter is also used
; for tab indenting, as 1 tab may be worth 8 spaces if so desired.
; This parameter is used to position comments in TAB mode, and expanding
; of tabs within code!
;------------------------------------------------------------------------
indent_spacing = 4 ; Integer
;------------------------------------------------------------------------
; Specifies whether to indent preprocessor controls to match the code
;------------------------------------------------------------------------
indent_preprocessor = yes ; Boolean
;------------------------------------------------------------------------
; Specifies whether to indent embedded SQL statements
;------------------------------------------------------------------------
indent_exec_sql = yes ; Boolean
;------------------------------------------------------------------------
; Defines at what start position comments that have code on the
; same line to be placed.
;------------------------------------------------------------------------
comments_with_code = 33 ; Integer
;------------------------------------------------------------------------
; Defines at what start position comments with no code start.
;------------------------------------------------------------------------
comments_with_nocode = 0 ; Integer
;------------------------------------------------------------------------
; Set this option to ON turns off setting indentation position of parameter
; "comments_with_nocode". Indentation is then set according to code
; position.
;------------------------------------------------------------------------
leave_comments_nocode = yes ; Boolean
;------------------------------------------------------------------------
; Use this option is used to change non-ascii (non-printable) chars to
; octal notation if they lie within quotes. Either
; Ascii_Chars_Only, XOR Leave_Graphic_Chars parameters need to be set
; as a True value for this parameter to take effect.
;------------------------------------------------------------------------
NonAscii_Quotes_to_Octal = yes ; Boolean
;------------------------------------------------------------------------
; Setting this parameter to yes will strip non-printable characters
; from the source files, but leave any character that are IBM
; graphics alone. Any non-printable characters that lie within
; quotes will be transformed into octal/character notation, if
; NonAscii_Quotes_To_Octal parameter is set to True.
;------------------------------------------------------------------------
; leave_graphic_chars = no ; Boolean
;------------------------------------------------------------------------
; Setting this parameter to yes will strip any non-printable,
; non-ascii characters from the input file. Any non-printable
; octal/character notation if NonAscii_Quotes_To_Octal is set to
; True. Comment out this parameter if you are using
; Leave_Graphic_Chars parameter, as this parameter will override
; it.
;------------------------------------------------------------------------
ascii_chars_only = yes ; Boolean
;------------------------------------------------------------------------
; This parameter will place open braces on a new line after it's
; associated code if set on/yes. Else the brace will be place on
; next above line if possible, with it's code.
;------------------------------------------------------------------------
place_brace_on_new_line = yes ; Boolean
;------------------------------------------------------------------------
; This parameter will stop output from the program corrupting output
; that may exit from the program via the standard output.
; If this parameter is set to off/no then no output is generated from
; the program, unless an error is encountered
;------------------------------------------------------------------------
program_output = yes ; Boolean
;------------------------------------------------------------------------
; Specifies what the internal memory requirements will be in size of the
; line processing buffer. This essentially is used only for open brace
; relocation in kernighan/ritchie style.
;------------------------------------------------------------------------
Queue_Buffer = 1000 ; Integer
;------------------------------------------------------------------------
; If this option is set to true then the input file will be backup into a
; another file with a ".bac" extension added to the end of the file
; name.
;------------------------------------------------------------------------
Backup_File = yes ; Boolean
bcpp-20250914/config.guess 0000755 0000000 0000000 00000143067 14651355010 013737 0 ustar root root #! /bin/sh
# Attempt to guess a canonical system name.
# Copyright 1992-2024 Free Software Foundation, Inc.
# shellcheck disable=SC2006,SC2268 # see below for rationale
timestamp='2024-07-27'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
#
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
#
# Please send patches to .
# The "shellcheck disable" line above the timestamp inhibits complaints
# about features and limitations of the classic Bourne shell that were
# superseded or lifted in POSIX. However, this script identifies a wide
# variety of pre-POSIX systems that do not have POSIX shells at all, and
# even some reasonably current systems (Solaris 10 as case-in-point) still
# have a pre-POSIX /bin/sh.
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
Usage: $0 [OPTION]
Output the configuration name of the system '$me' is run on.
Options:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
Report bugs and patches to ."
version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
Copyright 1992-2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
Try '$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
echo "$timestamp" ; exit ;;
--version | -v )
echo "$version" ; exit ;;
--help | --h* | -h )
echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
break ;;
-* )
echo "$me: invalid option $1$help" >&2
exit 1 ;;
* )
break ;;
esac
done
if test $# != 0; then
echo "$me: too many arguments$help" >&2
exit 1
fi
# Just in case it came from the environment.
GUESS=
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
# temporary files to be created and, as you can see below, it is a
# headache to deal with in a portable fashion.
# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still
# use 'HOST_CC' if defined, but it is deprecated.
# Portable tmp directory creation inspired by the Autoconf team.
tmp=
# shellcheck disable=SC2172
trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
set_cc_for_build() {
# prevent multiple calls if $tmp is already set
test "$tmp" && return 0
: "${TMPDIR=/tmp}"
# shellcheck disable=SC2039,SC3028
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
dummy=$tmp/dummy
case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
,,) echo "int x;" > "$dummy.c"
for driver in cc gcc c17 c99 c89 ; do
if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
CC_FOR_BUILD=$driver
break
fi
done
if test x"$CC_FOR_BUILD" = x ; then
CC_FOR_BUILD=no_compiler_found
fi
;;
,,*) CC_FOR_BUILD=$CC ;;
,*,*) CC_FOR_BUILD=$HOST_CC ;;
esac
}
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
if test -f /.attbin/uname ; then
PATH=$PATH:/.attbin ; export PATH
fi
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
case $UNAME_SYSTEM in
Linux|GNU|GNU/*)
LIBC=unknown
set_cc_for_build
cat <<-EOF > "$dummy.c"
#if defined(__ANDROID__)
LIBC=android
#else
#include
#if defined(__UCLIBC__)
LIBC=uclibc
#elif defined(__dietlibc__)
LIBC=dietlibc
#elif defined(__GLIBC__)
LIBC=gnu
#elif defined(__LLVM_LIBC__)
LIBC=llvm
#else
#include
/* First heuristic to detect musl libc. */
#ifdef __DEFINED_va_list
LIBC=musl
#endif
#endif
#endif
EOF
cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
eval "$cc_set_libc"
# Second heuristic to detect musl libc.
if [ "$LIBC" = unknown ] &&
command -v ldd >/dev/null &&
ldd --version 2>&1 | grep -q ^musl; then
LIBC=musl
fi
# If the system lacks a compiler, then just pick glibc.
# We could probably try harder.
if [ "$LIBC" = unknown ]; then
LIBC=gnu
fi
;;
esac
# Note: order is significant - the case branches are not exclusive.
case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
# compatibility and a consistent mechanism for selecting the
# object file format.
#
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
/usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
echo unknown)`
case $UNAME_MACHINE_ARCH in
aarch64eb) machine=aarch64_be-unknown ;;
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
earmv*)
arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
machine=${arch}${endian}-unknown
;;
*) machine=$UNAME_MACHINE_ARCH-unknown ;;
esac
# The Operating System including object format, if it has switched
# to ELF recently (or will in the future) and ABI.
case $UNAME_MACHINE_ARCH in
earm*)
os=netbsdelf
;;
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
then
# Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
# Return netbsd for either. FIX?
os=netbsd
else
os=netbsdelf
fi
;;
*)
os=netbsd
;;
esac
# Determine ABI tags.
case $UNAME_MACHINE_ARCH in
earm*)
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
;;
esac
# The OS release
# Debian GNU/NetBSD machines have a different userland, and
# thus, need a distinct triplet. However, they do not need
# kernel version information, so it can be replaced with a
# suitable tag, in the style of linux-gnu.
case $UNAME_VERSION in
Debian*)
release='-gnu'
;;
*)
release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
;;
esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
GUESS=$machine-${os}${release}${abi-}
;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE
;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE
;;
*:SecBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'`
GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE
;;
*:LibertyBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE
;;
*:MidnightBSD:*:*)
GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE
;;
*:ekkoBSD:*:*)
GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE
;;
*:SolidBSD:*:*)
GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE
;;
*:OS108:*:*)
GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE
;;
macppc:MirBSD:*:*)
GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE
;;
*:MirBSD:*:*)
GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE
;;
*:Sortix:*:*)
GUESS=$UNAME_MACHINE-unknown-sortix
;;
*:Twizzler:*:*)
GUESS=$UNAME_MACHINE-unknown-twizzler
;;
*:Redox:*:*)
GUESS=$UNAME_MACHINE-unknown-redox
;;
mips:OSF1:*.*)
GUESS=mips-dec-osf1
;;
alpha:OSF1:*:*)
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
trap '' 0
case $UNAME_RELEASE in
*4.0)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
*5.*)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
# OSF/1 and Tru64 systems produced since 1995. I hope that
# covers most systems running today. This code pipes the CPU
# types through head -n 1, so we only detect the type of CPU 0.
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
case $ALPHA_CPU_TYPE in
"EV4 (21064)")
UNAME_MACHINE=alpha ;;
"EV4.5 (21064)")
UNAME_MACHINE=alpha ;;
"LCA4 (21066/21068)")
UNAME_MACHINE=alpha ;;
"EV5 (21164)")
UNAME_MACHINE=alphaev5 ;;
"EV5.6 (21164A)")
UNAME_MACHINE=alphaev56 ;;
"EV5.6 (21164PC)")
UNAME_MACHINE=alphapca56 ;;
"EV5.7 (21164PC)")
UNAME_MACHINE=alphapca57 ;;
"EV6 (21264)")
UNAME_MACHINE=alphaev6 ;;
"EV6.7 (21264A)")
UNAME_MACHINE=alphaev67 ;;
"EV6.8CB (21264C)")
UNAME_MACHINE=alphaev68 ;;
"EV6.8AL (21264B)")
UNAME_MACHINE=alphaev68 ;;
"EV6.8CX (21264D)")
UNAME_MACHINE=alphaev68 ;;
"EV6.9A (21264/EV69A)")
UNAME_MACHINE=alphaev69 ;;
"EV7 (21364)")
UNAME_MACHINE=alphaev7 ;;
"EV7.9 (21364A)")
UNAME_MACHINE=alphaev79 ;;
esac
# A Pn.n version is a patched version.
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
GUESS=$UNAME_MACHINE-dec-osf$OSF_REL
;;
Amiga*:UNIX_System_V:4.0:*)
GUESS=m68k-unknown-sysv4
;;
*:[Aa]miga[Oo][Ss]:*:*)
GUESS=$UNAME_MACHINE-unknown-amigaos
;;
*:[Mm]orph[Oo][Ss]:*:*)
GUESS=$UNAME_MACHINE-unknown-morphos
;;
*:OS/390:*:*)
GUESS=i370-ibm-openedition
;;
*:z/VM:*:*)
GUESS=s390-ibm-zvmoe
;;
*:OS400:*:*)
GUESS=powerpc-ibm-os400
;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
GUESS=arm-acorn-riscix$UNAME_RELEASE
;;
arm*:riscos:*:*|arm*:RISCOS:*:*)
GUESS=arm-unknown-riscos
;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
GUESS=hppa1.1-hitachi-hiuxmpp
;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
case `(/bin/universe) 2>/dev/null` in
att) GUESS=pyramid-pyramid-sysv3 ;;
*) GUESS=pyramid-pyramid-bsd ;;
esac
;;
NILE*:*:*:dcosx)
GUESS=pyramid-pyramid-svr4
;;
DRS?6000:unix:4.0:6*)
GUESS=sparc-icl-nx6
;;
DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
case `/usr/bin/uname -p` in
sparc) GUESS=sparc-icl-nx7 ;;
esac
;;
s390x:SunOS:*:*)
SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL
;;
sun4H:SunOS:5.*:*)
SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
GUESS=sparc-hal-solaris2$SUN_REL
;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
GUESS=sparc-sun-solaris2$SUN_REL
;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
GUESS=i386-pc-auroraux$UNAME_RELEASE
;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
set_cc_for_build
SUN_ARCH=i386
# If there is a compiler, see if it is configured for 64-bit objects.
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
# This test works for both compilers.
if test "$CC_FOR_BUILD" != no_compiler_found; then
if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
SUN_ARCH=x86_64
fi
fi
SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
GUESS=$SUN_ARCH-pc-solaris2$SUN_REL
;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
GUESS=sparc-sun-solaris3$SUN_REL
;;
sun4*:SunOS:*:*)
case `/usr/bin/arch -k` in
Series*|S4*)
UNAME_RELEASE=`uname -v`
;;
esac
# Japanese Language versions have a version number like '4.1.3-JL'.
SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
GUESS=sparc-sun-sunos$SUN_REL
;;
sun3*:SunOS:*:*)
GUESS=m68k-sun-sunos$UNAME_RELEASE
;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
case `/bin/arch` in
sun3)
GUESS=m68k-sun-sunos$UNAME_RELEASE
;;
sun4)
GUESS=sparc-sun-sunos$UNAME_RELEASE
;;
esac
;;
aushp:SunOS:*:*)
GUESS=sparc-auspex-sunos$UNAME_RELEASE
;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
# "atarist" or "atariste" at least should have a processor
# > m68000). The system name ranges from "MiNT" over "FreeMiNT"
# to the lowercase version "mint" (or "freemint"). Finally
# the system name "TOS" denotes a system which is actually not
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
GUESS=m68k-atari-mint$UNAME_RELEASE
;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
GUESS=m68k-atari-mint$UNAME_RELEASE
;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
GUESS=m68k-atari-mint$UNAME_RELEASE
;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
GUESS=m68k-milan-mint$UNAME_RELEASE
;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
GUESS=m68k-hades-mint$UNAME_RELEASE
;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
GUESS=m68k-unknown-mint$UNAME_RELEASE
;;
m68k:machten:*:*)
GUESS=m68k-apple-machten$UNAME_RELEASE
;;
powerpc:machten:*:*)
GUESS=powerpc-apple-machten$UNAME_RELEASE
;;
RISC*:Mach:*:*)
GUESS=mips-dec-mach_bsd4.3
;;
RISC*:ULTRIX:*:*)
GUESS=mips-dec-ultrix$UNAME_RELEASE
;;
VAX*:ULTRIX*:*:*)
GUESS=vax-dec-ultrix$UNAME_RELEASE
;;
2020:CLIX:*:* | 2430:CLIX:*:*)
GUESS=clipper-intergraph-clix$UNAME_RELEASE
;;
mips:*:*:UMIPS | mips:*:*:RISCos)
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#ifdef __cplusplus
#include /* for printf() prototype */
int main (int argc, char *argv[]) {
#else
int main (argc, argv) int argc; char *argv[]; {
#endif
#if defined (host_mips) && defined (MIPSEB)
#if defined (SYSTYPE_SYSV)
printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_SVR4)
printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
#endif
#endif
exit (-1);
}
EOF
$CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
{ echo "$SYSTEM_NAME"; exit; }
GUESS=mips-mips-riscos$UNAME_RELEASE
;;
Motorola:PowerMAX_OS:*:*)
GUESS=powerpc-motorola-powermax
;;
Motorola:*:4.3:PL8-*)
GUESS=powerpc-harris-powermax
;;
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
GUESS=powerpc-harris-powermax
;;
Night_Hawk:Power_UNIX:*:*)
GUESS=powerpc-harris-powerunix
;;
m88k:CX/UX:7*:*)
GUESS=m88k-harris-cxux7
;;
m88k:*:4*:R4*)
GUESS=m88k-motorola-sysv4
;;
m88k:*:3*:R3*)
GUESS=m88k-motorola-sysv3
;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
then
if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
test "$TARGET_BINARY_INTERFACE"x = x
then
GUESS=m88k-dg-dgux$UNAME_RELEASE
else
GUESS=m88k-dg-dguxbcs$UNAME_RELEASE
fi
else
GUESS=i586-dg-dgux$UNAME_RELEASE
fi
;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
GUESS=m88k-dolphin-sysv3
;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
GUESS=m88k-motorola-sysv3
;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
GUESS=m88k-tektronix-sysv3
;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
GUESS=m68k-tektronix-bsd
;;
*:IRIX*:*:*)
IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'`
GUESS=mips-sgi-irix$IRIX_REL
;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id
;; # Note that: echo "'`uname -s`'" gives 'AIX '
i*86:AIX:*:*)
GUESS=i386-ibm-aix
;;
ia64:AIX:*:*)
if test -x /usr/bin/oslevel ; then
IBM_REV=`/usr/bin/oslevel`
else
IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
fi
GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV
;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#include
int
main ()
{
if (!__power_pc())
exit(1);
puts("powerpc-ibm-aix3.2.5");
exit(0);
}
EOF
if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
then
GUESS=$SYSTEM_NAME
else
GUESS=rs6000-ibm-aix3.2.5
fi
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
GUESS=rs6000-ibm-aix3.2.4
else
GUESS=rs6000-ibm-aix3.2
fi
;;
*:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
fi
if test -x /usr/bin/lslpp ; then
IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \
awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
fi
GUESS=$IBM_ARCH-ibm-aix$IBM_REV
;;
*:AIX:*:*)
GUESS=rs6000-ibm-aix
;;
ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
GUESS=romp-ibm-bsd4.4
;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to
;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
GUESS=rs6000-bull-bosx
;;
DPX/2?00:B.O.S.:*:*)
GUESS=m68k-bull-sysv3
;;
9000/[34]??:4.3bsd:1.*:*)
GUESS=m68k-hp-bsd
;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
GUESS=m68k-hp-bsd4.4
;;
9000/[34678]??:HP-UX:*:*)
HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
case $UNAME_MACHINE in
9000/31?) HP_ARCH=m68000 ;;
9000/[34]??) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
if test -x /usr/bin/getconf; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
case $sc_cpu_version in
523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
case $sc_kernel_bits in
32) HP_ARCH=hppa2.0n ;;
64) HP_ARCH=hppa2.0w ;;
'') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
esac ;;
esac
fi
if test "$HP_ARCH" = ""; then
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#define _HPUX_SOURCE
#include
#include
int
main ()
{
#if defined(_SC_KERNEL_BITS)
long bits = sysconf(_SC_KERNEL_BITS);
#endif
long cpu = sysconf (_SC_CPU_VERSION);
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
case CPU_PA_RISC2_0:
#if defined(_SC_KERNEL_BITS)
switch (bits)
{
case 64: puts ("hppa2.0w"); break;
case 32: puts ("hppa2.0n"); break;
default: puts ("hppa2.0"); break;
} break;
#else /* !defined(_SC_KERNEL_BITS) */
puts ("hppa2.0"); break;
#endif
default: puts ("hppa1.0"); break;
}
exit (0);
}
EOF
(CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
if test "$HP_ARCH" = hppa2.0w
then
set_cc_for_build
# hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
# 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
# generating 64-bit code. GNU and HP use different nomenclature:
#
# $ CC_FOR_BUILD=cc ./config.guess
# => hppa2.0w-hp-hpux11.23
# $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
# => hppa64-hp-hpux11.23
if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
grep -q __LP64__
then
HP_ARCH=hppa2.0w
else
HP_ARCH=hppa64
fi
fi
GUESS=$HP_ARCH-hp-hpux$HPUX_REV
;;
ia64:HP-UX:*:*)
HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
GUESS=ia64-hp-hpux$HPUX_REV
;;
3050*:HI-UX:*:*)
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#include
int
main ()
{
long cpu = sysconf (_SC_CPU_VERSION);
/* The order matters, because CPU_IS_HP_MC68K erroneously returns
true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
results, however. */
if (CPU_IS_PA_RISC (cpu))
{
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
default: puts ("hppa-hitachi-hiuxwe2"); break;
}
}
else if (CPU_IS_HP_MC68K (cpu))
puts ("m68k-hitachi-hiuxwe2");
else puts ("unknown-hitachi-hiuxwe2");
exit (0);
}
EOF
$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
{ echo "$SYSTEM_NAME"; exit; }
GUESS=unknown-hitachi-hiuxwe2
;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
GUESS=hppa1.1-hp-bsd
;;
9000/8??:4.3bsd:*:*)
GUESS=hppa1.0-hp-bsd
;;
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
GUESS=hppa1.0-hp-mpeix
;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
GUESS=hppa1.1-hp-osf
;;
hp8??:OSF1:*:*)
GUESS=hppa1.0-hp-osf
;;
i*86:OSF1:*:*)
if test -x /usr/sbin/sysversion ; then
GUESS=$UNAME_MACHINE-unknown-osf1mk
else
GUESS=$UNAME_MACHINE-unknown-osf1
fi
;;
parisc*:Lites*:*:*)
GUESS=hppa1.1-hp-lites
;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
GUESS=c1-convex-bsd
;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
GUESS=c34-convex-bsd
;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
GUESS=c38-convex-bsd
;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
GUESS=c4-convex-bsd
;;
CRAY*Y-MP:*:*:*)
CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
GUESS=ymp-cray-unicos$CRAY_REL
;;
CRAY*[A-Z]90:*:*:*)
echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-e 's/\.[^.]*$/.X/'
exit ;;
CRAY*TS:*:*:*)
CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
GUESS=t90-cray-unicos$CRAY_REL
;;
CRAY*T3E:*:*:*)
CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
GUESS=alphaev5-cray-unicosmk$CRAY_REL
;;
CRAY*SV1:*:*:*)
CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
GUESS=sv1-cray-unicos$CRAY_REL
;;
*:UNICOS/mp:*:*)
CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
GUESS=craynv-cray-unicosmp$CRAY_REL
;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
;;
5000:UNIX_System_V:4.*:*)
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE
;;
sparc*:BSD/OS:*:*)
GUESS=sparc-unknown-bsdi$UNAME_RELEASE
;;
*:BSD/OS:*:*)
GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE
;;
arm:FreeBSD:*:*)
UNAME_PROCESSOR=`uname -p`
set_cc_for_build
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi
else
FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf
fi
;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`uname -p`
case $UNAME_PROCESSOR in
amd64)
UNAME_PROCESSOR=x86_64 ;;
i386)
UNAME_PROCESSOR=i586 ;;
esac
FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL
;;
i*:CYGWIN*:*)
GUESS=$UNAME_MACHINE-pc-cygwin
;;
*:MINGW64*:*)
GUESS=$UNAME_MACHINE-pc-mingw64
;;
*:MINGW*:*)
GUESS=$UNAME_MACHINE-pc-mingw32
;;
*:MSYS*:*)
GUESS=$UNAME_MACHINE-pc-msys
;;
i*:PW*:*)
GUESS=$UNAME_MACHINE-pc-pw32
;;
*:SerenityOS:*:*)
GUESS=$UNAME_MACHINE-pc-serenity
;;
*:Interix*:*)
case $UNAME_MACHINE in
x86)
GUESS=i586-pc-interix$UNAME_RELEASE
;;
authenticamd | genuineintel | EM64T)
GUESS=x86_64-unknown-interix$UNAME_RELEASE
;;
IA64)
GUESS=ia64-unknown-interix$UNAME_RELEASE
;;
esac ;;
i*:UWIN*:*)
GUESS=$UNAME_MACHINE-pc-uwin
;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
GUESS=x86_64-pc-cygwin
;;
prep*:SunOS:5.*:*)
SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
GUESS=powerpcle-unknown-solaris2$SUN_REL
;;
*:GNU:*:*)
# the GNU system
GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'`
GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'`
GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL
;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"`
GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
;;
x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*)
GUESS="$UNAME_MACHINE-pc-managarm-mlibc"
;;
*:[Mm]anagarm:*:*)
GUESS="$UNAME_MACHINE-unknown-managarm-mlibc"
;;
*:Minix:*:*)
GUESS=$UNAME_MACHINE-unknown-minix
;;
aarch64:Linux:*:*)
set_cc_for_build
CPU=$UNAME_MACHINE
LIBCABI=$LIBC
if test "$CC_FOR_BUILD" != no_compiler_found; then
ABI=64
sed 's/^ //' << EOF > "$dummy.c"
#ifdef __ARM_EABI__
#ifdef __ARM_PCS_VFP
ABI=eabihf
#else
ABI=eabi
#endif
#endif
EOF
cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
eval "$cc_set_abi"
case $ABI in
eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;;
esac
fi
GUESS=$CPU-unknown-linux-$LIBCABI
;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
EV5) UNAME_MACHINE=alphaev5 ;;
EV56) UNAME_MACHINE=alphaev56 ;;
PCA56) UNAME_MACHINE=alphapca56 ;;
PCA57) UNAME_MACHINE=alphapca56 ;;
EV6) UNAME_MACHINE=alphaev6 ;;
EV67) UNAME_MACHINE=alphaev67 ;;
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
arm*:Linux:*:*)
set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi
else
GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf
fi
fi
;;
avr32*:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
cris:Linux:*:*)
GUESS=$UNAME_MACHINE-axis-linux-$LIBC
;;
crisv32:Linux:*:*)
GUESS=$UNAME_MACHINE-axis-linux-$LIBC
;;
e2k:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
frv:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
hexagon:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
i*86:Linux:*:*)
GUESS=$UNAME_MACHINE-pc-linux-$LIBC
;;
ia64:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
k1om:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
kvx:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
kvx:cos:*:*)
GUESS=$UNAME_MACHINE-unknown-cos
;;
kvx:mbr:*:*)
GUESS=$UNAME_MACHINE-unknown-mbr
;;
loongarch32:Linux:*:* | loongarch64:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
m32r*:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
m68*:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
mips:Linux:*:* | mips64:Linux:*:*)
set_cc_for_build
IS_GLIBC=0
test x"${LIBC}" = xgnu && IS_GLIBC=1
sed 's/^ //' << EOF > "$dummy.c"
#undef CPU
#undef mips
#undef mipsel
#undef mips64
#undef mips64el
#if ${IS_GLIBC} && defined(_ABI64)
LIBCABI=gnuabi64
#else
#if ${IS_GLIBC} && defined(_ABIN32)
LIBCABI=gnuabin32
#else
LIBCABI=${LIBC}
#endif
#endif
#if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
CPU=mipsisa64r6
#else
#if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
CPU=mipsisa32r6
#else
#if defined(__mips64)
CPU=mips64
#else
CPU=mips
#endif
#endif
#endif
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
MIPS_ENDIAN=el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
MIPS_ENDIAN=
#else
MIPS_ENDIAN=
#endif
#endif
EOF
cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`
eval "$cc_set_vars"
test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
;;
mips64el:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
openrisc*:Linux:*:*)
GUESS=or1k-unknown-linux-$LIBC
;;
or32:Linux:*:* | or1k*:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
padre:Linux:*:*)
GUESS=sparc-unknown-linux-$LIBC
;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
GUESS=hppa64-unknown-linux-$LIBC
;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;;
PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;;
*) GUESS=hppa-unknown-linux-$LIBC ;;
esac
;;
ppc64:Linux:*:*)
GUESS=powerpc64-unknown-linux-$LIBC
;;
ppc:Linux:*:*)
GUESS=powerpc-unknown-linux-$LIBC
;;
ppc64le:Linux:*:*)
GUESS=powerpc64le-unknown-linux-$LIBC
;;
ppcle:Linux:*:*)
GUESS=powerpcle-unknown-linux-$LIBC
;;
riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
s390:Linux:*:* | s390x:Linux:*:*)
GUESS=$UNAME_MACHINE-ibm-linux-$LIBC
;;
sh64*:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
sh*:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
sparc:Linux:*:* | sparc64:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
tile*:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
vax:Linux:*:*)
GUESS=$UNAME_MACHINE-dec-linux-$LIBC
;;
x86_64:Linux:*:*)
set_cc_for_build
CPU=$UNAME_MACHINE
LIBCABI=$LIBC
if test "$CC_FOR_BUILD" != no_compiler_found; then
ABI=64
sed 's/^ //' << EOF > "$dummy.c"
#ifdef __i386__
ABI=x86
#else
#ifdef __ILP32__
ABI=x32
#endif
#endif
EOF
cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
eval "$cc_set_abi"
case $ABI in
x86) CPU=i686 ;;
x32) LIBCABI=${LIBC}x32 ;;
esac
fi
GUESS=$CPU-pc-linux-$LIBCABI
;;
xtensa*:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
# sysname and nodename.
GUESS=i386-sequent-sysv4
;;
i*86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
;;
i*86:OS/2:*:*)
# If we were able to find 'uname', then EMX Unix compatibility
# is probably installed.
GUESS=$UNAME_MACHINE-pc-os2-emx
;;
i*86:XTS-300:*:STOP)
GUESS=$UNAME_MACHINE-unknown-stop
;;
i*86:atheos:*:*)
GUESS=$UNAME_MACHINE-unknown-atheos
;;
i*86:syllable:*:*)
GUESS=$UNAME_MACHINE-pc-syllable
;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
GUESS=i386-unknown-lynxos$UNAME_RELEASE
;;
i*86:*DOS:*:*)
GUESS=$UNAME_MACHINE-pc-msdosdjgpp
;;
i*86:*:4.*:*)
UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL
else
GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL
fi
;;
i*86:*:5:[678]*)
# UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then
UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
&& UNAME_MACHINE=i686
(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL
else
GUESS=$UNAME_MACHINE-pc-sysv32
fi
;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i586.
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configure will decide that
# this is a cross-build.
GUESS=i586-pc-msdosdjgpp
;;
Intel:Mach:3*:*)
GUESS=i386-pc-mach3
;;
paragon:*:*:*)
GUESS=i860-intel-osf1
;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4
fi
;;
mini*:CTIX:SYS*5:*)
# "miniframe"
GUESS=m68010-convergent-sysv
;;
mc68k:UNIX:SYSTEM5:3.51m)
GUESS=m68k-convergent-sysv
;;
M680?0:D-NIX:5.3:*)
GUESS=m68k-diab-dnix
;;
M68*:*:R3V[5678]*:*)
test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;;
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
&& { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
GUESS=m68k-unknown-lynxos$UNAME_RELEASE
;;
mc68030:UNIX_System_V:4.*:*)
GUESS=m68k-atari-sysv4
;;
TSUNAMI:LynxOS:2.*:*)
GUESS=sparc-unknown-lynxos$UNAME_RELEASE
;;
rs6000:LynxOS:2.*:*)
GUESS=rs6000-unknown-lynxos$UNAME_RELEASE
;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
GUESS=powerpc-unknown-lynxos$UNAME_RELEASE
;;
SM[BE]S:UNIX_SV:*:*)
GUESS=mips-dde-sysv$UNAME_RELEASE
;;
RM*:ReliantUNIX-*:*:*)
GUESS=mips-sni-sysv4
;;
RM*:SINIX-*:*:*)
GUESS=mips-sni-sysv4
;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
GUESS=$UNAME_MACHINE-sni-sysv4
else
GUESS=ns32k-sni-sysv
fi
;;
PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort
# says
GUESS=i586-unisys-sysv4
;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes .
# How about differentiating between stratus architectures? -djm
GUESS=hppa1.1-stratus-sysv4
;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
GUESS=i860-stratus-sysv4
;;
i*86:VOS:*:*)
# From Paul.Green@stratus.com.
GUESS=$UNAME_MACHINE-stratus-vos
;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
GUESS=hppa1.1-stratus-vos
;;
mc68*:A/UX:*:*)
GUESS=m68k-apple-aux$UNAME_RELEASE
;;
news*:NEWS-OS:6*:*)
GUESS=mips-sony-newsos6
;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if test -d /usr/nec; then
GUESS=mips-nec-sysv$UNAME_RELEASE
else
GUESS=mips-unknown-sysv$UNAME_RELEASE
fi
;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
GUESS=powerpc-be-beos
;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
GUESS=powerpc-apple-beos
;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
GUESS=i586-pc-beos
;;
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
GUESS=i586-pc-haiku
;;
ppc:Haiku:*:*) # Haiku running on Apple PowerPC
GUESS=powerpc-apple-haiku
;;
*:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat)
GUESS=$UNAME_MACHINE-unknown-haiku
;;
SX-4:SUPER-UX:*:*)
GUESS=sx4-nec-superux$UNAME_RELEASE
;;
SX-5:SUPER-UX:*:*)
GUESS=sx5-nec-superux$UNAME_RELEASE
;;
SX-6:SUPER-UX:*:*)
GUESS=sx6-nec-superux$UNAME_RELEASE
;;
SX-7:SUPER-UX:*:*)
GUESS=sx7-nec-superux$UNAME_RELEASE
;;
SX-8:SUPER-UX:*:*)
GUESS=sx8-nec-superux$UNAME_RELEASE
;;
SX-8R:SUPER-UX:*:*)
GUESS=sx8r-nec-superux$UNAME_RELEASE
;;
SX-ACE:SUPER-UX:*:*)
GUESS=sxace-nec-superux$UNAME_RELEASE
;;
Power*:Rhapsody:*:*)
GUESS=powerpc-apple-rhapsody$UNAME_RELEASE
;;
*:Rhapsody:*:*)
GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE
;;
arm64:Darwin:*:*)
GUESS=aarch64-apple-darwin$UNAME_RELEASE
;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p`
case $UNAME_PROCESSOR in
unknown) UNAME_PROCESSOR=powerpc ;;
esac
if command -v xcode-select > /dev/null 2> /dev/null && \
! xcode-select --print-path > /dev/null 2> /dev/null ; then
# Avoid executing cc if there is no toolchain installed as
# cc will be a stub that puts up a graphical alert
# prompting the user to install developer tools.
CC_FOR_BUILD=no_compiler_found
else
set_cc_for_build
fi
if test "$CC_FOR_BUILD" != no_compiler_found; then
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
case $UNAME_PROCESSOR in
i386) UNAME_PROCESSOR=x86_64 ;;
powerpc) UNAME_PROCESSOR=powerpc64 ;;
esac
fi
# On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_PPC >/dev/null
then
UNAME_PROCESSOR=powerpc
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
# uname -m returns i386 or x86_64
UNAME_PROCESSOR=$UNAME_MACHINE
fi
GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE
;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = x86; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE
;;
*:QNX:*:4*)
GUESS=i386-pc-qnx
;;
NEO-*:NONSTOP_KERNEL:*:*)
GUESS=neo-tandem-nsk$UNAME_RELEASE
;;
NSE-*:NONSTOP_KERNEL:*:*)
GUESS=nse-tandem-nsk$UNAME_RELEASE
;;
NSR-*:NONSTOP_KERNEL:*:*)
GUESS=nsr-tandem-nsk$UNAME_RELEASE
;;
NSV-*:NONSTOP_KERNEL:*:*)
GUESS=nsv-tandem-nsk$UNAME_RELEASE
;;
NSX-*:NONSTOP_KERNEL:*:*)
GUESS=nsx-tandem-nsk$UNAME_RELEASE
;;
*:NonStop-UX:*:*)
GUESS=mips-compaq-nonstopux
;;
BS2000:POSIX*:*:*)
GUESS=bs2000-siemens-sysv
;;
DS/*:UNIX_System_V:*:*)
GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE
;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
if test "${cputype-}" = 386; then
UNAME_MACHINE=i386
elif test "x${cputype-}" != x; then
UNAME_MACHINE=$cputype
fi
GUESS=$UNAME_MACHINE-unknown-plan9
;;
*:TOPS-10:*:*)
GUESS=pdp10-unknown-tops10
;;
*:TENEX:*:*)
GUESS=pdp10-unknown-tenex
;;
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
GUESS=pdp10-dec-tops20
;;
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
GUESS=pdp10-xkl-tops20
;;
*:TOPS-20:*:*)
GUESS=pdp10-unknown-tops20
;;
*:ITS:*:*)
GUESS=pdp10-unknown-its
;;
SEI:*:*:SEIUX)
GUESS=mips-sei-seiux$UNAME_RELEASE
;;
*:DragonFly:*:*)
DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL
;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
case $UNAME_MACHINE in
A*) GUESS=alpha-dec-vms ;;
I*) GUESS=ia64-dec-vms ;;
V*) GUESS=vax-dec-vms ;;
esac ;;
*:XENIX:*:SysV)
GUESS=i386-pc-xenix
;;
i*86:skyos:*:*)
SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`
GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL
;;
i*86:rdos:*:*)
GUESS=$UNAME_MACHINE-pc-rdos
;;
i*86:Fiwix:*:*)
GUESS=$UNAME_MACHINE-pc-fiwix
;;
*:AROS:*:*)
GUESS=$UNAME_MACHINE-unknown-aros
;;
x86_64:VMkernel:*:*)
GUESS=$UNAME_MACHINE-unknown-esx
;;
amd64:Isilon\ OneFS:*:*)
GUESS=x86_64-unknown-onefs
;;
*:Unleashed:*:*)
GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
;;
*:Ironclad:*:*)
GUESS=$UNAME_MACHINE-unknown-ironclad
;;
esac
# Do we have a guess based on uname results?
if test "x$GUESS" != x; then
echo "$GUESS"
exit
fi
# No uname command or uname output not recognized.
set_cc_for_build
cat > "$dummy.c" <
#include
#endif
#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
#include
#if defined(_SIZE_T_) || defined(SIGLOST)
#include
#endif
#endif
#endif
int
main ()
{
#if defined (sony)
#if defined (MIPSEB)
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
I don't know.... */
printf ("mips-sony-bsd\n"); exit (0);
#else
#include
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
"4"
#else
""
#endif
); exit (0);
#endif
#endif
#if defined (NeXT)
#if !defined (__ARCHITECTURE__)
#define __ARCHITECTURE__ "m68k"
#endif
int version;
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
if (version < 4)
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
else
printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
exit (0);
#endif
#if defined (MULTIMAX) || defined (n16)
#if defined (UMAXV)
printf ("ns32k-encore-sysv\n"); exit (0);
#else
#if defined (CMU)
printf ("ns32k-encore-mach\n"); exit (0);
#else
printf ("ns32k-encore-bsd\n"); exit (0);
#endif
#endif
#endif
#if defined (__386BSD__)
printf ("i386-pc-bsd\n"); exit (0);
#endif
#if defined (sequent)
#if defined (i386)
printf ("i386-sequent-dynix\n"); exit (0);
#endif
#if defined (ns32000)
printf ("ns32k-sequent-dynix\n"); exit (0);
#endif
#endif
#if defined (_SEQUENT_)
struct utsname un;
uname(&un);
if (strncmp(un.version, "V2", 2) == 0) {
printf ("i386-sequent-ptx2\n"); exit (0);
}
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
printf ("i386-sequent-ptx1\n"); exit (0);
}
printf ("i386-sequent-ptx\n"); exit (0);
#endif
#if defined (vax)
#if !defined (ultrix)
#include
#if defined (BSD)
#if BSD == 43
printf ("vax-dec-bsd4.3\n"); exit (0);
#else
#if BSD == 199006
printf ("vax-dec-bsd4.3reno\n"); exit (0);
#else
printf ("vax-dec-bsd\n"); exit (0);
#endif
#endif
#else
printf ("vax-dec-bsd\n"); exit (0);
#endif
#else
#if defined(_SIZE_T_) || defined(SIGLOST)
struct utsname un;
uname (&un);
printf ("vax-dec-ultrix%s\n", un.release); exit (0);
#else
printf ("vax-dec-ultrix\n"); exit (0);
#endif
#endif
#endif
#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
#if defined(_SIZE_T_) || defined(SIGLOST)
struct utsname *un;
uname (&un);
printf ("mips-dec-ultrix%s\n", un.release); exit (0);
#else
printf ("mips-dec-ultrix\n"); exit (0);
#endif
#endif
#endif
#if defined (alliant) && defined (i860)
printf ("i860-alliant-bsd\n"); exit (0);
#endif
exit (1);
}
EOF
$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` &&
{ echo "$SYSTEM_NAME"; exit; }
# Apollos put the system type in the environment.
test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
echo "$0: unable to guess system type" >&2
case $UNAME_MACHINE:$UNAME_SYSTEM in
mips:Linux | mips64:Linux)
# If we got here on MIPS GNU/Linux, output extra information.
cat >&2 <&2 <&2 </dev/null || echo unknown`
uname -r = `(uname -r) 2>/dev/null || echo unknown`
uname -s = `(uname -s) 2>/dev/null || echo unknown`
uname -v = `(uname -v) 2>/dev/null || echo unknown`
/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
hostinfo = `(hostinfo) 2>/dev/null`
/bin/universe = `(/bin/universe) 2>/dev/null`
/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
/bin/arch = `(/bin/arch) 2>/dev/null`
/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
UNAME_MACHINE = "$UNAME_MACHINE"
UNAME_RELEASE = "$UNAME_RELEASE"
UNAME_SYSTEM = "$UNAME_SYSTEM"
UNAME_VERSION = "$UNAME_VERSION"
EOF
fi
exit 1
# Local variables:
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
# End:
bcpp-20250914/bcpp.cfg 0000644 0000000 0000000 00000013065 06644240721 013023 0 ustar root root ; This file contains configuration parameters that are used
; within the bcpp program.
; There are two types of parameter types : Boolean, and Integer.
; Boolean types can have only two valid values [On, Yes, or Off, No].
; Integer types can have a valid range of 0 - 5000.
;------------------------------------------------------------------------
; This parameter specifies how many lines separate between two
; functions.
;------------------------------------------------------------------------
function_spacing = 2 ; Integer
;------------------------------------------------------------------------
; Specifies whether to use tabs in indenting code.
;------------------------------------------------------------------------
use_tabs = no ; Boolean
;------------------------------------------------------------------------
; Specifies how many spaces to indent. This parameter is also used
; for tab indenting, as 1 tab may be worth 8 spaces if so desired.
; This parameter is used to position comments in TAB mode, and expanding
; of tabs within code!
;------------------------------------------------------------------------
indent_spacing = 4 ; Integer
;------------------------------------------------------------------------
; Specifies whether to indent preprocessor controls to match the code
;------------------------------------------------------------------------
indent_preprocessor = yes ; Boolean
;------------------------------------------------------------------------
; Specifies whether to indent embedded SQL statements
;------------------------------------------------------------------------
indent_exec_sql = yes ; Boolean
;------------------------------------------------------------------------
; Defines at what start position comments that have code on the
; same line to be placed.
;------------------------------------------------------------------------
comments_with_code = 50 ; Integer
;------------------------------------------------------------------------
; Defines at what start position comments with no code start.
;------------------------------------------------------------------------
comments_with_nocode = 0 ; Integer
;------------------------------------------------------------------------
; Set this option to ON turns off setting indentation position of parameter
; "comments_with_nocode". Indentation is then set according to code
; position.
;------------------------------------------------------------------------
leave_comments_nocode = yes ; Boolean
;------------------------------------------------------------------------
; Use this option is used to change non-ascii (non-printable) chars to
; octal notation if they lie within quotes. Either
; Ascii_Chars_Only, XOR Leave_Graphic_Chars parameters need to be set
; as a True value for this parameter to take effect.
;------------------------------------------------------------------------
NonAscii_Quotes_to_Octal = yes ; Boolean
;------------------------------------------------------------------------
; Setting this parameter to yes will strip non-printable characters
; from the source files, but leave any character that are IBM
; graphics alone. Any non-printable characters that lie within
; quotes will be transformed into octal/character notation, if
; NonAscii_Quotes_To_Octal parameter is set to True.
;------------------------------------------------------------------------
; leave_graphic_chars = yes ; Boolean
;------------------------------------------------------------------------
; Setting this parameter to yes will strip any non-printable,
; non-ascii characters from the input file. Any non-printable
; octal/character notation if NonAscii_Quotes_To_Octal is set to
; True. Comment out this parameter if you are using
; Leave_Graphic_Chars parameter, as this parameter will override
; it.
;------------------------------------------------------------------------
ascii_chars_only = no ; Boolean
;------------------------------------------------------------------------
; This parameter will place open braces on a new line after it's
; associated code if set on/yes. Else the brace will be place on
; next above line if possible, with it's code.
;------------------------------------------------------------------------
place_brace_on_new_line = yes ; Boolean
;------------------------------------------------------------------------
; This parameter will stop output from the program corrupting output
; that may exit from the program via the standard output.
; If this parameter is set to off/no then no output is generated from
; the program, unless an error is encountered
;------------------------------------------------------------------------
program_output = yes ; Boolean
;------------------------------------------------------------------------
; Specifies what the internal memory requirements will be in size of the
; line processing buffer. This essentially is used only for open brace
; relocation in kernighan/ritchie style.
;------------------------------------------------------------------------
Queue_Buffer = 10 ; Integer
;------------------------------------------------------------------------
; If this option is set to true then the input file will be backup into a
; another file with a ".bac" extension added to the end of the file
; name.
;------------------------------------------------------------------------
Backup_File = yes ; Boolean
bcpp-20250914/package/ 0000755 0000000 0000000 00000000000 15061615555 013010 5 ustar root root bcpp-20250914/package/debian/ 0000755 0000000 0000000 00000000000 15061615555 014232 5 ustar root root bcpp-20250914/package/debian/copyright 0000644 0000000 0000000 00000003101 15061615555 016160 0 ustar root root This package was debianized by Miriam Ruiz on
Mon, 3 Oct 2005 15:43:14 +0200.
It was downloaded from https://www.invisible-island.net/bcpp/
Copyright 2005-2024,2025 by Thomas E. Dickey
Based on bcpp version 1.8, December 1995 by Steven De Toni
License:
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, distribute with modifications, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name(s) of the above copyright
holders shall not be used in advertising or otherwise to promote the
sale, use or other dealings in this Software without prior written
authorization.
bcpp-20250914/package/debian/docs 0000644 0000000 0000000 00000000007 11462653321 015074 0 ustar root root README
bcpp-20250914/package/debian/compat 0000644 0000000 0000000 00000000003 14316313226 015421 0 ustar root root 12
bcpp-20250914/package/debian/README.Debian 0000644 0000000 0000000 00000002054 11462653321 016266 0 ustar root root bcpp for Debian
----------------
How to check the trustability of the beautifier program:
1) Compiling the code into binary:
cp myprogram.cpp test.cpp
g++ -c test.cpp -o test.orig.o
bcpp myprogram.cpp > test.cpp
g++ -c test.cpp -o test.bcpp.o
diff test.orig.o test.bcpp.o
*.cpp files before compilation should have the same name, or there would be
differences in *.o objects.
You can use cmp command instead of diff for comparing the binary files.
2) Comparing the assembler code generated:
cp myprogram.cpp test.cpp
g++ -S test.cpp -o test.orig.S
bcpp myprogram.cpp > test.cpp
g++ -S test.cpp -o test.bcpp.S
diff test.orig.S test.bcpp.S
If *.cpp file names are different, diff will find differences between the
files, but they can be easily seen in the diff result.
3) You can check by hand the changes made, excluding whitespace changes:
bcpp myprogram.cpp > myprogram.bcpp.cpp
diff -wu myprogram.cpp myprogram.bcpp.cpp
See also: http://yolinux.com/HOWTO/C-C++Beautifier-HOWTO.html
-- Miriam Ruiz , Mon, 06 Mar 2006 15:46:01 +0100
bcpp-20250914/package/debian/rules 0000755 0000000 0000000 00000001114 14672404715 015310 0 ustar root root #!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
export DEB_BUILD_MAINT_OPTIONS := hardening=+all qa=+bug reproducible=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
%:
dh $@
# dh_autoreconf interferes with portability -- skip it
override_dh_autoreconf:
echo "skip: dh_autoreconf autoreconf-dickey -- -f -i"
override_dh_auto_configure:
dh_auto_configure -- \
--enable-warnings \
--verbose \
CXXFLAGS='$(CPPFLAGS) $(CXXFLAGS) -DBCPP_CONFIG_DIR=\"/etc/bcpp/\"'
override_dh_install:
dh_install code/bcpp.cfg etc/bcpp/
bcpp-20250914/package/debian/control 0000644 0000000 0000000 00000001174 14672402050 015627 0 ustar root root Source: bcpp
Section: devel
Priority: optional
Maintainer: Miriam Ruiz
Build-Depends: debhelper (>= 7), quilt, autotools-dev
Standards-Version: 4.7.0
Package: bcpp
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: C(++) beautifier
bcpp indents C/C++ source programs, replacing tabs with spaces or the
reverse. Unlike indent, it does (by design) not attempt to wrap long
statements.
.
This version improves the parsing algorithm by marking the state of all
characters, recognizes a wider range of indention structures, and implements
a simple algorithm for indenting embedded SQL.
bcpp-20250914/package/debian/source/ 0000755 0000000 0000000 00000000000 13260234536 015525 5 ustar root root bcpp-20250914/package/debian/source/format 0000644 0000000 0000000 00000000015 13260234536 016734 0 ustar root root 3.0 (native)
bcpp-20250914/package/debian/source/options 0000644 0000000 0000000 00000000270 11443776574 017160 0 ustar root root # Bzip2 compression for debian.tar
compression = "bzip2"
compression-level = 7
# Do not generate diff for changes in config.(sub|guess)
extend-diff-ignore = "(^|/)config.(sub|guess)$"
bcpp-20250914/package/debian/changelog 0000644 0000000 0000000 00000004100 15061615314 016070 0 ustar root root bcpp (20250914) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey Sun, 14 Sep 2025 15:43:08 -0400
bcpp (20240917) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey Tue, 17 Sep 2024 03:44:26 -0400
bcpp (20240111) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey Thu, 11 Jan 2024 03:49:41 -0500
bcpp (20230130) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey Mon, 30 Jan 2023 03:46:49 -0500
bcpp (20221002) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey Sun, 02 Oct 2022 09:45:59 -0400
bcpp (20210108) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey Fri, 08 Jan 2021 16:39:28 -0500
bcpp (20200922) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey Tue, 22 Sep 2020 19:34:20 -0400
bcpp (20180401) unstable; urgency=low
* update configure script
-- Thomas E. Dickey Sun, 01 Apr 2018 15:43:38 -0400
bcpp (20150811) unstable; urgency=low
* update configure script
-- Thomas E. Dickey Tue, 11 Aug 2015 04:12:18 -0400
bcpp (20131209) unstable; urgency=low
* update configure script
-- Thomas E. Dickey Mon, 09 Dec 2013 07:30:32 -0500
bcpp (20120318) unstable; urgency=low
* Add package scripts for testing
-- Thomas E. Dickey Sun, 18 Mar 2012 10:37:27 -0400
bcpp (0.0.20050725-2) unstable; urgency=low
* Upgraded Standards-Version from 3.6.2 to 3.9.1
* Moved to dpkg source v3
-- Miriam Ruiz Sat, 30 Oct 2010 01:21:04 +0200
bcpp (0.0.20050725-1) unstable; urgency=low
* Initial release. Closes: #355488.
* Modified FindConfigFile function in bcpp.cpp so that it gets config files from /etc/bcpp.
-- Miriam Ruiz Mon, 3 Oct 2005 15:43:14 +0200
bcpp-20250914/package/bcpp.spec 0000644 0000000 0000000 00000003457 15061615314 014612 0 ustar root root Summary: C(++) beautifier
# $Id: bcpp.spec,v 1.15 2025/09/14 19:43:08 tom Exp $
Name: bcpp
Version: 20250914
Release: 1
License: MIT
Group: Applications/Development
URL: https://invisible-island.net/%{name}
Source0: https://invisible-island.net/archives/%{name}/%{name}-%{version}.tgz
%description
bcpp indents C/C++ source programs, replacing tabs with spaces or the
reverse. Unlike indent, it does (by design) not attempt to wrap long
statements.
This version improves the parsing algorithm by marking the state of all
characters, recognizes a wider range of indention structures, and implements
a simple algorithm for indenting embedded SQL.
%prep
# no need for debugging symbols...
%define debug_package %{nil}
%setup -q -n %{name}-%{version}
%build
CPPFLAGS="$CPPFLAGS -DBCPP_CONFIG_DIR=\"%{_sysconfdir}\"" \
INSTALL_PROGRAM='${INSTALL}' \
%configure \
--program-prefix=b \
--target %{_target_platform} \
--prefix=%{_prefix} \
--bindir=%{_bindir} \
--datadir=%{_datadir} \
--sysconfdir=%{_sysconfdir} \
--libdir=%{_libdir} \
--mandir=%{_mandir}
make
%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}
install -m 644 code/bcpp.cfg $RPM_BUILD_ROOT%{_sysconfdir}
strip $RPM_BUILD_ROOT%{_bindir}/%{name}
%files
%defattr(-,root,root)
%{_bindir}/%{name}
%{_bindir}/cb++
%{_sysconfdir}/bcpp.cfg
%{_mandir}/man1/%{name}.*
%{_mandir}/man1/cb++.*
%changelog
# each patch should add its ChangeLog entries here
* Sun Sep 14 2025 Thomas E. Dickey
- testing bcpp 20250914-1
* Tue Sep 17 2024 Thomas E. Dickey
- rpmlint
* Thu Jan 11 2024 Thomas E. Dickey
- remove obsolete clean-section
- use hardening macros
* Sun Apr 01 2018 Thomas Dickey
- update ftp url, suppress debug package
* Sun Mar 18 2012 Thomas Dickey
- initial version
bcpp-20250914/VERSION 0000644 0000000 0000000 00000000014 15061615314 012451 0 ustar root root t2025-09-14
bcpp-20250914/bcppall.bat 0000644 0000000 0000000 00000000035 06016174262 013513 0 ustar root root @for %f in (%1) do bcpp %f
bcpp-20250914/makefile.in 0000644 0000000 0000000 00000002357 14672377017 013536 0 ustar root root # $Id: makefile.in,v 1.10 2024/09/17 22:09:19 tom Exp $
# top-level makefile-template for 'bcpp'
THIS = bcpp
THAT = cb++
#### Start of system configuration section. ####
srcdir = @srcdir@
VPATH = @srcdir@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
LN_S = @LN_S@
prefix = @prefix@
exec_prefix = @exec_prefix@
datarootdir = @datarootdir@
bindir = @bindir@
mandir = @mandir@
BINDIR = $(DESTDIR)$(bindir)
MANDIR = $(DESTDIR)$(mandir)/man1
manext = 1
#### End of system configuration section. ####
SHELL = /bin/sh
all:
cd code && $(MAKE) $@
install: all installdirs
cd code && $(MAKE) $@ DESTDIR=$(DESTDIR)
( $(INSTALL_DATA) $(srcdir)/txtdocs/$(THIS).1 $(MANDIR)/$(THIS).$(manext) )
( cd $(MANDIR) && $(LN_S) $(THIS).$(manext) $(THAT).$(manext) )
installdirs:
mkdir -p $(BINDIR) $(MANDIR)
uninstall:
rm -f $(BINDIR)/$(THIS) $(MANDIR)/$(THIS).$(manext)
mostlyclean:
cd code && $(MAKE) $@
rm -f *.o core *~ *.out *.BAK *.atac
clean: mostlyclean
cd code && $(MAKE) $@
rm -f $(THIS)
distclean: clean
cd code && $(MAKE) $@
rm -f makefile code/makefile code/autoconf.h
rm -f config.log config.cache config.status
realclean: distclean
cd code && $(MAKE) $@
check:
cd code && $(MAKE) $@
bcpp-20250914/config_h.in 0000644 0000000 0000000 00000000371 05576717302 013525 0 ustar root root /*
* $Id: config_h.in,v 1.1 1994/06/12 23:48:18 tom Exp $
* config_h.in is a template file used by configure to produce config.h.
* config_h is then transformed (by config.status) into the header file
* config.h -- Kevin Buettner.
*/
@DEFS@
bcpp-20250914/README 0000644 0000000 0000000 00000013001 07567703741 012277 0 ustar root root -- $Id: README,v 1.2 2002/11/23 13:51:29 tom Exp $
-- This is the original README - see CHANGES for a current history -TD
-------------------------------------------------------------------------------
History
-------
Version 0.9
-----------
Heaps of bugs, should never been released.
Version 1.0
-----------
Heaps of bug fixes, have tested the program heaps, and tried to
extract 98% of the errors, any bugs found while using this
program are to be considered as undocumented features.
Future Versions will include most of the limitations of version 1
fixed. I haven't fixed these yet as I'd rather have a program
that works happily instead of one that is giving me eternal
hassles (plus project dead lines). The next updated version will
be released within early December.
Version 1.5
-----------
- Couple more bug fixes, and some code optimisation.
- Unlimited (ram limited) amount of line decoding so even
the most tangled code can be decoded (uses recursion).
- Unlimited amount of single code indenting is provided
(fixed from last version (uses recursion))
- Options for program can entered via command line, or
configuration file.
- Operating system I/O redirection is fully support within
the program.
- User definable line buffer size.
I have tried to test this program rigorously to see that I have
no rouge pointers lying within ... (fingers crossed). Anyways it
ran fine under Qemm, and Windows (i.e. no exception errors due to
incorrect memory access). Using Qemm V7.0, the program uses DPMI
memory allocation so you the program allocate memory exceeding
640 k in MS-DOS memory model. This is done by processing large
files (i.e. 1 meg+), and using a very large buffer (i.e. 10000).
Large buffers above 10 are not really require and will slow
processing because of extensive searching (plus my Queue object
isn't the fastest of designs ever).
Version 1.55
------------
- The only real update is working the code so that it
functions/compiles under Unix.
- Removed all segmentation violations.
- Fixed a couple of little things ... I forget.
- Input redirection under DOS fails, but works under Unix.
Version 1.6 (Final)
-------------------
This will be the final release from me of this software. This
version fixes a few more bugs, some small, some large, but I
think this time the program is about as stable as I'm going to
get it. The code will still be able to compile under both Unix,
and MS-DOS.
- Added a backup file feature.
- Added a time feature just for the hell of it.
- Fixed a decoding problem with quotes
- Fixed a decoding/construction problem with tabs. The
current method will expand all tabs to spaces that are
ready via the input data stream.
Version 1.61 (User Update)
--------------------------
A Canadian programmer (Justin Slootsky) introduced a new feature
into this program that allows code that has no accompanied code
to be indented as per normal code. Although just a few lines of
code, this new feature is very effective.
Version 1.629 (Bug Update)
---------------------------
Fixed a couple of minor bugs that would cause a little havock.
Added preprocessor handling, so that any preprocessor commands are always
place at position 1;
Version 1.7 (Bug Update)
------------------------
Fixed C comment process bugs.
fixed locating configuration file (i.e uses argv[0] now) unless -fnc
switch is used.
Version 1.75 (Bug Update)
-------------------------
Fixed single statement formating over multiple lines (i.e. if, while type
statements)
Fixed a couple of simple errors that Manuel T. Petit pointed out in my
code.
Version 1.8 (Bug Of A Bug Update)
----------------------------------
This bug was created becuase of Unix's perdantic checking of memory (i.e. MNU).
I haven't checked all the conditions of a certain section of code, this caused
an 'if' statement within case structure to prematurely be trashed. The result
of which is the indent structure is removed and the code output doesn't align
correctly.
Util
----
Text Conversion:
I've provided a program than when compiled will convert MS-DOS
text input UNIX text using standard output, or Unix text to
MS-DOS text (OS dependant). Use this program to convert my source
so that it can be compiled without worries of carriage returns.
Compiling
---------
The only OS type system that this program has been fully tested
on is MS-DOS, so I give no guarantees that this program will
function under any other OS other then DOS. It's up to you to fix
any possible conflicts between compilers/operating systems. This
software is provided on the "As Is Where Is" bases.
Compiled using the following compilers ...
Borland Turbo C V1.0
Borland Turbo C V3.0
GNU G++ V1.05 (DOS)
GNU G++ V2.62 (UNIX)
Feed Back
---------
Thanks to the few people that sent me mail pointing out my
deliberate mistakes :-) within my code/documentation. If people
use this program for other projects, I wouldn't mind hearing
about it, see DOCs for addresses.
Notices
-------
Thanks to:
Pink Floyd (some of the best music ever written to program to)
Black Jack, 8forty8, Knight Shade, Cold Shock ...
(Some of the best heavy rock/metal bands in Hamilton/N.Z)
GNU (For producing a brilliant compiler)
Borland (Brilliant programming environment)
bcpp-20250914/CHANGES 0000644 0000000 0000000 00000037644 15061615365 012425 0 ustar root root -- $Id: CHANGES,v 1.62 2025/09/14 19:43:49 tom Exp $
-- Thomas E. Dickey
2025/09/14
----------
+ updated configure script macros, for compiler-warnings
2024/09/17
----------
+ improve utility/test scripts, with shellcheck and other checks.
+ improve test-packages, e.g., for hardening options.
+ updated configure script macros, for ignored options
+ update config.guess, config.sub
2024/01/11
----------
+ minor cleanup of manual page
+ updated configure script macros, for compiler-warnings
+ update config.guess, config.sub
2023/01/30
----------
+ updated configure script macros, for compiler-warnings
2022/10/02
----------
+ updated configure script macros
+ update config.guess, config.sub
2021/01/08
----------
+ eliminate archaic "Boolean" enum
+ updated configure script macros
+ update config.guess, config.sub
2020/09/22
+ remove obsolete makefile-rules
+ updated configure script macros
+ update config.guess, config.sub
2018/04/01
+ updated configure script macros
+ update config.guess, config.sub
2015/08/11
+ fix an off-by-one in limit-checking for command-line option values
(patch by Miriam Ruiz).
+ updated configure script macros
+ update config.guess, config.sub
2013/12/09
+ updated configure script macros
+ update config.guess, config.sub
2012/03/18
+ add rpm script.
+ fixes for DESTDIR in makefiles
+ add cb++ script to install-rules
+ integrate patch from Debian package, to search for bcpp.cfg in
user's home-directory and optionally a compile-time specific
directory.
+ add dpkg script from Debian package, for testing.
+ updated configure script macros
+ drop mkdirs.sh, using "mkdir -p"
+ update config.guess, config.sub
2009/06/30
+ updated configure scripts
+ improve exec-sql parser, detecting inline comments beginning with
"--".
+ fix a case where multi-line indent was set during a #define, and
not reset on completion of the #define, causing the following code
to be indented.
+ check for braces or preprocessor-level before indenting comments
which are on a line without code.
+ improve config-file parser, which used strstr...
+ add keep_code_with_comment option, to merge inline-comments with
the code immediately following, rather than merging (for example)
with trailing "}" (request by Daniel Lin).
2005/07/25
+ add COPYING (request by Peter Hille).
+ fixes for Intel 9.0 compiler-warnings.
+ add AC_EXEEXT and AC_OBJEXT checks to configure properly with cygwin.
2005/05/16
+ fixes to build with g++ 2.95.3
+ add .SUFFIXES rule to build with Solaris make.
2005/04/10
+ correct some regressions introduced by 2004/10/27:
+ check if a line began as part of a quoted string string before
computing its indentation.
+ count indent-level for curly-braces within #define's.
+ improve configure check for g++ warnings (from ncurses).
2004/10/27
+ correct logic that tracks state of preprocessor lines that continue
from one line to the next. The additional lines were not marked
as preprocessor lines (report by Edward Bishop).
+ updated configure script, fixes a check that added some gcc warning
options which are not recognized by g++.
2003/11/03
+ correct one of the valgrind fixes from 2003/04/23 which used delete[]
in a special case where delete was correct (reports by Gert van de
Kraats and John Whitley
).
2003/04/23
+ fix several mismatches between new and delete (versus delete[])
reported by valgrind.
+ add place_top_brace_on_new_line to config, with corresponding
command-line options -tbcl and tbnl to disable or enable it
respectively. This is for the special case of the top-level
brace, e.g., at the function-level, to better match K&R style
braces (request by Daniel Lin).
+ modified run-test script to facilitate testing variations of bcpp.cfg
2002/11/24
+ check in OutputToOutFile() for a trailing C-comment fragment which
happened to precede code on the same line, e.g.,
*/ a = b;
and split the line to avoid constructing
a = b; */
(reports by Andreas Werner and Yanir Lubetkin
+ add isFinalComment() check to ensure that embedded comments are
not moved, e.g.,
void myFunct(int /*number*/, float* /*data*/);
(report by Andreas Werner).
2002/11/23
+ add a simple configure script.
+ rename UNIX makefile to makefile.unx, changing compiler definition
from "gcc -x g++" to "g++", since that no longer works with gcc 3.2
(report by Don Park ).
+ remove obsolete 'unix' subdirectory.
2002/05/18
+ add indent_both_braces config-file option and corresponding
command-line -nbbi, -ybbi options to allow user to indent both
leading/trailing braces of a block by one level (adapted from patch
by Brad Mettee ).
+ add brace_indent config-file option and corresponding command-line
-nbi, -ybi options to allow user to indent the trailing brace of a
block to align with its content rather than the beginning of the
block (detailed request by Edwin Robert Tisdale
)
+ correct isContinuation() by ignoring backslash characters within
comments. This makes it handle comment blocks such as
/*******\
* BUG *
\*******/
(reported by Andreas Werner ).
+ add makefile.blc for Borland C (from Chris Elliott ).
+ remove references to obsolete email address
+ add CHANGES file, document the sets of changes I marked in RCS
+ add MANIFEST file.
1999/08/10
+ makefile: do not link with -lg++ anymore
+ makefile: change $D to "./", to make vile follow the compiler
warnings more easily
+ add __FILE__ to traceOutput() calls
+ fixes to compile on SunOS 4.x, which needs the stuff
prototyped also, change interface of traceInput() and traceOutput()
to add __FILE__
+ fix a case Jeff Gilliat pointed out - an inline C comment fragment
resulted in commenting out the code on that line.
+ mods in IndentNonBraces() which serve to distinguish "public:" which
is a class scope from "public" which is a Java type. Otherwise we
get odd indention for the latter case.
+ backup.cpp: had allocated one char too few for ".orig" suffix
1999/01/21
+ rename the backup file to .orig, since "~" confuses WinNT's directory
scanning, making it return the same file more than once.
+ open the output in binary mode, so we get ^J's rather than ^M^J's
1999/01/04
+ kludge to ifdef for g++ versus M$ Visual C++
+ kludge to compile in case we have the misfortune to use gcc 2.8.1
with Solaris's header files (some idiot decided to undef __STDC__ in
g++ because they disapprove of using __STDC__ for ifdef'ing).
+ change defaults in bcpp.cfg to use_tabs=yes, and
comments_with_code=33 (the original bpp.cfg is in top-level).
+ baseq.cpp: fix so we do not try to peek into a negative index
+ add top-level bcpp.cfg, indent.bat, indent.cfg as part of port to
win32.
+ add txtdocs/manual.txt to distribution, updated wpdocs/manual.doc
1999/01/02
+ mods to "work" with tisca.h, which contains a number of comments
within long multi-line comments. This isn't quite right, since lines
containing only a backslash are deleted, where they should be
combined just like blank lines.
+ add run-test file (used with regression test-cases not part of the
distribution).
+ implement html.cpp, to provide limited support for indenting
JavaScript embedded in HTML files.
+ split-out backup.cpp to support renaming of the original file,
preserving its modification-time, to allow recovery if the indent is
not needed (makes no change), or otherwise should be discarded.
+ implement verbose.cpp, to support interactions such as stopping
processing a set of files on an error.
+ change scattered printf's to call verbose(), and fprintf(stderr's to
warning().
+ rewrote ReadLine so it doesn't use fseek/ftell (which is a porting
problem).
+ config.cpp: removed a lot of ugly/repetitious code
+ config.cpp: moved ShowConfig here from bcpp.cpp
+ debug.cpp: change trace() calls to not use stderr explicitly.
1997/04/04
+ first draft of logic to reset indent-stack at the end of a multi-line
preprocessor command. also, fixed (?) a bug in splitting
continuation-line (but there's more)
+ allow unrecognized preprocessor-lines to be indented
+ refine a change to allow for things like "else return;"
+ replaced a couple of strcmp calls by CompareKeyword to allow for
matching both "else" and "else if" statements.
+ fixes for places where we split a line that has continuation-marker
on the end. while I was at it, trim redundant whitespace before the
'\', to make it uniform.
1997/01/07
+ tabs.cpp: fix a place where I trimmed trailing blanks from data w/o
trimming state, causing bogus results with baseobj.hh, due to overrun
in later logic.
+ lots of spelling corrections.
+ fixes for stricter gcc warnings
1996/12/24
+ updated copyright notices.
+ refined adjustment of inline comments to work with hanging.cpp, which
doesn't take that into account.
+ remove unused logic for adjustHangingComment, since I'm doing this in
a different way.
1996/12/17
+ execsql.cpp: refined hanging-indents to account for statements other
than the two block-styles we use
+ make SqlStruct a class
1996/12/12
+ shift-adjust dangling else{} block
+ makefile: record the debug-ifdefs
+ hanging.cpp: make HangStruct class to get rid of static variables
+ bcpp.h: made HangStruct class
+ change hang_state from an int to a class
+ made singleIndentLen obsolete via hanging.cpp
1996/12/06
+ tabs.cpp: mods to allow tabs in OutputStruct.filler
+ fix a few leaks
+ ensure that hanging comments remain hanging when re-indenting.
+ use tabs for OutputStruct.filler
1996/12/05
+ tabs.cpp: correct leading-whitespace conversion (space is printable
;-)
+ hanging.cpp: remove redundant reset of hang_state
+ debug.cpp: SunOS 4.x needs stdlib.h for size_t
+ add InputStruct.offset
+ add OutputStruct.splitElseIf
+ remove IndentStruct.firstPass, because hanging.cpp does it better
+ mods to preserve code-fragment's offset to use in shifting
block-indented C-style comments
+ fixes for offset adjustment due to stripping whitespace from
fragments in DecodeLine
+ first cut of logic to pass offset of code-fragments into InputStruct
(to use for categorizing hanging comments)
+ revised logic for split else/if statement using flag 'splitElseIf'.
this fixes the problem of indenting the code undef 'if'.
+ mods to make TestLineHasCode look at the parse-state (which is more
reliable)
+ remove IndentStruct.firstPass logic, since hanging.cpp does it better
+ add pBFlag to OutputStruct to use in hanging.cpp
1996/11/15
+ tabs.cpp: correct off-by-one in return from skipEscape() that ate
trailing quote.
+ bcpp.h: rename OutputStruct.pState to OutputStruct.pCFlag
+ bcpp.h: add OutputStruct.pBFlag
+ use OutputStruct.indentHangs
+ split-out hanging.cpp
+ hanging.cpp: add 'do_aggreg' flag
+ hanging.cpp: use new member of OutputStruct, indentHangs to allow
merge with info from execsql.cpp
1996/11/08
+ move emptyString to bcpp.h
+ pass-in Config struct to IndentSQL, making it pass by ref everywhere
+ move some string-parsing to strings.cpp, to re-use in execsql.cpp
+ move debug/trace code to debug.cpp
+ move input/output/indent definitions to bcpp.h
+ align successive else/if
+ don't set interfunction-spacing for lines that happen to have R_CURL,
if there's more on the line.
+ add indent_exec_sql to bcpp.cfg
+ execsql.cpp - quick hack to indent non-keyword stuff extra
+ move some functions to strings.cpp from bcpp.cpp, for use in
execsql.cpp
1996/11/06
+ restructured keyword-lookup to add 3rd type (blockLine). use this to
fix case (successive lines) with "while", "switch" -- the
curly-braces for "switch" weren't indented under "switch".
+ also, dropped special logic for singleIndentLen, making it the same
as a standard indent (was too ugly).
1996/11/05
+ propagate parse-state via InputStruct to OutputStruct.
+ correct potential indention of continued-string fragments.
1996/11/04
+ moved string-table to config.cpp
+ fix uninitialized-memory-ref (Purify)
+ unused parameter.
+ add indent_preprocessor
+ simplify config.cpp a little using overloading
+ corrected some minor bugs affecting indention
+ add "#else" to typeOfPreP(), along with all other standard
directives.
+ use enum rather than int for 'attrib' types. change name of one
'attrib' type to make it easier to maintain. fixes for TRACE.
+ first cut of indent_preprocessor option
+ modify so that both comma and semicolon are treated specially after
'}', to make data lists work properly
+ correct a couple of special cases with multi-indent
1996/10/31
+ fixes for memory leaks
+ corrections to tab computation
+ add special state for '#' pre-processor lines
+ makefile - move some symbols to accommodate non-g++
+ add POUNDC
+ mods to track preprocessor-lines
+ reduce ConstructLine to a single-level switch, rather than the nested
one that will get in the way of mods for execsql
+ refined logic in dontHangComment(), fixing a case I missed before.
+ correct a logical-reduction for matching against PreP types
+ suppress inter-function spacing before "#endif"
+ add pType to OutputStruct so I can tag them as PreP when needed
+ fix while-loop that was expressed as for-loop with break
+ undid unnecessary if-level in ConstructLine
+ restore leading tabs in comments if we're expanding tabs
+ moved the non-printing character conversion to tabs.cpp
1996/10/20
+ moved delete for lineState into bcpp.cpp
+ make pString in/out for ExpandTabs
+ modify ExpandTabs to maintain a string of CharState values
+ corrected state: allow tab-expansion in // comments
+ add strings.cpp
+ make pString in/out for ExpandTabs
+ fixes for include-order (bcpp.h should be last)
+ reduce FindStartofComment and FindEndofComment to return index
instead of pointers
+ revised FindPunctuation so it returns an index rather than a pointer,
and uses the pLineState info so that we can easily discard quoted
punctuation (which didn't work for a complicated string, e.g.,
"'\\0','\\0'}").
+ changed allocation scheme of lineState
+ drop CComments param of DecodeLine, since pLineState contains proper
info
+ fixes for blank-lines: ensure that we don't emit trailing
blank-lines in a file, that except for inter-function blanks, we
reduce runs of blank lines to a single blank, and that there's no
lines (even comments) that come out with trailing whitespace.
+ simplify allocation/deallocation in DecodeLine by leaving pLineData
alone.
+ a couple of Purify-fixes
+ modify ExpandTabs to maintain a string of CharState values; use this
to retain parsing state so I can correct blank-trimming (so that
continuation lines of a string aren't trimmed!).
1996/10/12
+ split-out bcpp.h and tabs.cpp
+ moved tab-expansion (and tab-spacing) into separate file, first to
fix an error in tab-expansion (wrong fill amount), then to allow
rewrite to capture left/right CharState, to prevent quoted tabs from
being expanded. Also, moved L_CURL, R_CURL, DQUOTE, SQUOTE into
config.h, making capitalization consistent.
+ fixes for multi-line C comments
+ implement shiftToMatchSingleIndent, peekIndexOfBrace,
chainedSingleIndent
+ better logic in resetSingleIndent(), to reset all pending
single-indents
+ ifdef'd trace code so I don't have to uncomment it added clause in
IndentNonBraceCode to (try to) reset singleIndentLen immediately
after "{" -- works in one place but not another
+ eliminate single-char constant-strings to use strchr instead of
strstr. use FindPunctuation to simplify some logic
+ new function CompareKeyword fixes parse ambiguity with strstr allow
combination of tabs and spaces.
bcpp-20250914/MANIFEST 0000644 0000000 0000000 00000007612 15061615314 012545 0 ustar root root MANIFEST for bcpp, version t20250914
--------------------------------------------------------------------------------
MANIFEST this file
CHANGES change-log for BCPP
COPYING copyright and license
README top-level README for bcpp
VERSION version of this package
aclocal.m4 autoconf macros for BCPP
bcpp.cfg default configuration for bcpp
bcppall.bat run bcpp for a whole directory
config.guess utility script
config.sub utility script
config_h.in template for config.h
configure configure script for BCPP
configure.in configure-script template for BCPP
indent.bat script for format all C/C++/Java(Script) files
indent.cfg alternate configuration (larger queue)
install-sh utility script
makefile.in top-level makefile templace for BCPP
code subdirectory
code/.vilerc vile settings
code/anyobj.cpp the base class for all objects...
code/anyobj.h interface of anyobj.cpp
code/backup.cpp backup original file, restore if no change is made
code/baseq.cpp objects which are descendents of ANYOBJECT
code/baseq.h interface of baseq.cpp
code/bcpp.cfg sample config-file for bcpp (used in testing also)
code/bcpp.cpp main program (Beautify C++)
code/bcpp.h common interface/defs for bcpp
code/cb++ sample unix script, used for regression testing
code/cmdline.cpp command-line options-parsing
code/cmdline.h interface of cmdline.cpp
code/config.cpp config-file reader
code/config.h interface of config.cpp
code/debug.cpp debug/trace functions for BCPP
code/execsql.cpp module to indent embedded SQL statements
code/hanging.cpp compute hanging-indent of multiline statements
code/html.cpp test for HTML vs JavaScript
code/makefile.blc makefile for Borland C
code/makefile.in makefile template for BCPP program
code/makefile.unx UNIX makefile (g++)
code/makefile.wnt makefile for M$ Visual C++
code/run-test test-script
code/stacklis.cpp container class that stores items in a linked list
code/stacklis.h interface of stacklis.cpp
code/strings.cpp simple string-utilities
code/tabs.cpp tab expansion/conversion for BCPP
code/verbose.cpp all output to stdout or stderr
package subdirectory
package/bcpp.spec build-script
package/debian subdirectory
package/debian/README.Debian Debian package scripts
package/debian/changelog Debian package scripts
package/debian/compat Debian package scripts
package/debian/control Debian package scripts
package/debian/copyright Debian package scripts
package/debian/docs Debian package scripts
package/debian/rules Debian package scripts
package/debian/source subdirectory
package/debian/source/format Debian package scripts
package/debian/source/options Debian package scripts
txtdocs subdirectory
txtdocs/bcpp.1 manual, in UNIX manpage format
txtdocs/hirachy.txt text-version of class-hierarchy
txtdocs/manual.txt text-version of manual
wpdocs subdirectory
wpdocs/hirachy.doc document, in WP51 format
wpdocs/manual.doc document, in WP51 format
bcpp-20250914/config.sub 0000755 0000000 0000000 00000115441 14627414553 013410 0 ustar root root #! /bin/sh
# Configuration validation subroutine script.
# Copyright 1992-2024 Free Software Foundation, Inc.
# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale
timestamp='2024-05-27'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see .
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
# Please send patches to .
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
# Each package is responsible for reporting which valid configurations
# it does not support. The user should be able to distinguish
# a failure to support a valid configuration from a meaningless
# configuration.
# The goal of this file is to map all the various variations of a given
# machine specification into a single specification in the form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or in some cases, the newer four-part form:
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
# The "shellcheck disable" line above the timestamp inhibits complaints
# about features and limitations of the classic Bourne shell that were
# superseded or lifted in POSIX. However, this script identifies a wide
# variety of pre-POSIX systems that do not have POSIX shells at all, and
# even some reasonably current systems (Solaris 10 as case-in-point) still
# have a pre-POSIX /bin/sh.
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
Canonicalize a configuration name.
Options:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
Report bugs and patches to ."
version="\
GNU config.sub ($timestamp)
Copyright 1992-2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
Try '$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
echo "$timestamp" ; exit ;;
--version | -v )
echo "$version" ; exit ;;
--help | --h* | -h )
echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
break ;;
-* )
echo "$me: invalid option $1$help" >&2
exit 1 ;;
*local*)
# First pass through any local machine types.
echo "$1"
exit ;;
* )
break ;;
esac
done
case $# in
0) echo "$me: missing argument$help" >&2
exit 1;;
1) ;;
*) echo "$me: too many arguments$help" >&2
exit 1;;
esac
# Split fields of configuration type
saved_IFS=$IFS
IFS="-" read field1 field2 field3 field4 <&2
exit 1
;;
*-*-*-*)
basic_machine=$field1-$field2
basic_os=$field3-$field4
;;
*-*-*)
# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
# parts
maybe_os=$field2-$field3
case $maybe_os in
cloudabi*-eabi* \
| kfreebsd*-gnu* \
| knetbsd*-gnu* \
| kopensolaris*-gnu* \
| linux-* \
| managarm-* \
| netbsd*-eabi* \
| netbsd*-gnu* \
| nto-qnx* \
| os2-emx* \
| rtmk-nova* \
| storm-chaos* \
| uclinux-gnu* \
| uclinux-uclibc* \
| windows-* )
basic_machine=$field1
basic_os=$maybe_os
;;
android-linux)
basic_machine=$field1-unknown
basic_os=linux-android
;;
*)
basic_machine=$field1-$field2
basic_os=$field3
;;
esac
;;
*-*)
case $field1-$field2 in
# Shorthands that happen to contain a single dash
convex-c[12] | convex-c3[248])
basic_machine=$field2-convex
basic_os=
;;
decstation-3100)
basic_machine=mips-dec
basic_os=
;;
*-*)
# Second component is usually, but not always the OS
case $field2 in
# Do not treat sunos as a manufacturer
sun*os*)
basic_machine=$field1
basic_os=$field2
;;
# Manufacturers
3100* \
| 32* \
| 3300* \
| 3600* \
| 7300* \
| acorn \
| altos* \
| apollo \
| apple \
| atari \
| att* \
| axis \
| be \
| bull \
| cbm \
| ccur \
| cisco \
| commodore \
| convergent* \
| convex* \
| cray \
| crds \
| dec* \
| delta* \
| dg \
| digital \
| dolphin \
| encore* \
| gould \
| harris \
| highlevel \
| hitachi* \
| hp \
| ibm* \
| intergraph \
| isi* \
| knuth \
| masscomp \
| microblaze* \
| mips* \
| motorola* \
| ncr* \
| news \
| next \
| ns \
| oki \
| omron* \
| pc533* \
| rebel \
| rom68k \
| rombug \
| semi \
| sequent* \
| siemens \
| sgi* \
| siemens \
| sim \
| sni \
| sony* \
| stratus \
| sun \
| sun[234]* \
| tektronix \
| tti* \
| ultra \
| unicom* \
| wec \
| winbond \
| wrs)
basic_machine=$field1-$field2
basic_os=
;;
zephyr*)
basic_machine=$field1-unknown
basic_os=$field2
;;
*)
basic_machine=$field1
basic_os=$field2
;;
esac
;;
esac
;;
*)
# Convert single-component short-hands not valid as part of
# multi-component configurations.
case $field1 in
386bsd)
basic_machine=i386-pc
basic_os=bsd
;;
a29khif)
basic_machine=a29k-amd
basic_os=udi
;;
adobe68k)
basic_machine=m68010-adobe
basic_os=scout
;;
alliant)
basic_machine=fx80-alliant
basic_os=
;;
altos | altos3068)
basic_machine=m68k-altos
basic_os=
;;
am29k)
basic_machine=a29k-none
basic_os=bsd
;;
amdahl)
basic_machine=580-amdahl
basic_os=sysv
;;
amiga)
basic_machine=m68k-unknown
basic_os=
;;
amigaos | amigados)
basic_machine=m68k-unknown
basic_os=amigaos
;;
amigaunix | amix)
basic_machine=m68k-unknown
basic_os=sysv4
;;
apollo68)
basic_machine=m68k-apollo
basic_os=sysv
;;
apollo68bsd)
basic_machine=m68k-apollo
basic_os=bsd
;;
aros)
basic_machine=i386-pc
basic_os=aros
;;
aux)
basic_machine=m68k-apple
basic_os=aux
;;
balance)
basic_machine=ns32k-sequent
basic_os=dynix
;;
blackfin)
basic_machine=bfin-unknown
basic_os=linux
;;
cegcc)
basic_machine=arm-unknown
basic_os=cegcc
;;
cray)
basic_machine=j90-cray
basic_os=unicos
;;
crds | unos)
basic_machine=m68k-crds
basic_os=
;;
da30)
basic_machine=m68k-da30
basic_os=
;;
decstation | pmax | pmin | dec3100 | decstatn)
basic_machine=mips-dec
basic_os=
;;
delta88)
basic_machine=m88k-motorola
basic_os=sysv3
;;
dicos)
basic_machine=i686-pc
basic_os=dicos
;;
djgpp)
basic_machine=i586-pc
basic_os=msdosdjgpp
;;
ebmon29k)
basic_machine=a29k-amd
basic_os=ebmon
;;
es1800 | OSE68k | ose68k | ose | OSE)
basic_machine=m68k-ericsson
basic_os=ose
;;
gmicro)
basic_machine=tron-gmicro
basic_os=sysv
;;
go32)
basic_machine=i386-pc
basic_os=go32
;;
h8300hms)
basic_machine=h8300-hitachi
basic_os=hms
;;
h8300xray)
basic_machine=h8300-hitachi
basic_os=xray
;;
h8500hms)
basic_machine=h8500-hitachi
basic_os=hms
;;
harris)
basic_machine=m88k-harris
basic_os=sysv3
;;
hp300 | hp300hpux)
basic_machine=m68k-hp
basic_os=hpux
;;
hp300bsd)
basic_machine=m68k-hp
basic_os=bsd
;;
hppaosf)
basic_machine=hppa1.1-hp
basic_os=osf
;;
hppro)
basic_machine=hppa1.1-hp
basic_os=proelf
;;
i386mach)
basic_machine=i386-mach
basic_os=mach
;;
isi68 | isi)
basic_machine=m68k-isi
basic_os=sysv
;;
m68knommu)
basic_machine=m68k-unknown
basic_os=linux
;;
magnum | m3230)
basic_machine=mips-mips
basic_os=sysv
;;
merlin)
basic_machine=ns32k-utek
basic_os=sysv
;;
mingw64)
basic_machine=x86_64-pc
basic_os=mingw64
;;
mingw32)
basic_machine=i686-pc
basic_os=mingw32
;;
mingw32ce)
basic_machine=arm-unknown
basic_os=mingw32ce
;;
monitor)
basic_machine=m68k-rom68k
basic_os=coff
;;
morphos)
basic_machine=powerpc-unknown
basic_os=morphos
;;
moxiebox)
basic_machine=moxie-unknown
basic_os=moxiebox
;;
msdos)
basic_machine=i386-pc
basic_os=msdos
;;
msys)
basic_machine=i686-pc
basic_os=msys
;;
mvs)
basic_machine=i370-ibm
basic_os=mvs
;;
nacl)
basic_machine=le32-unknown
basic_os=nacl
;;
ncr3000)
basic_machine=i486-ncr
basic_os=sysv4
;;
netbsd386)
basic_machine=i386-pc
basic_os=netbsd
;;
netwinder)
basic_machine=armv4l-rebel
basic_os=linux
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
basic_os=newsos
;;
news1000)
basic_machine=m68030-sony
basic_os=newsos
;;
necv70)
basic_machine=v70-nec
basic_os=sysv
;;
nh3000)
basic_machine=m68k-harris
basic_os=cxux
;;
nh[45]000)
basic_machine=m88k-harris
basic_os=cxux
;;
nindy960)
basic_machine=i960-intel
basic_os=nindy
;;
mon960)
basic_machine=i960-intel
basic_os=mon960
;;
nonstopux)
basic_machine=mips-compaq
basic_os=nonstopux
;;
os400)
basic_machine=powerpc-ibm
basic_os=os400
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
basic_os=ose
;;
os68k)
basic_machine=m68k-none
basic_os=os68k
;;
paragon)
basic_machine=i860-intel
basic_os=osf
;;
parisc)
basic_machine=hppa-unknown
basic_os=linux
;;
psp)
basic_machine=mipsallegrexel-sony
basic_os=psp
;;
pw32)
basic_machine=i586-unknown
basic_os=pw32
;;
rdos | rdos64)
basic_machine=x86_64-pc
basic_os=rdos
;;
rdos32)
basic_machine=i386-pc
basic_os=rdos
;;
rom68k)
basic_machine=m68k-rom68k
basic_os=coff
;;
sa29200)
basic_machine=a29k-amd
basic_os=udi
;;
sei)
basic_machine=mips-sei
basic_os=seiux
;;
sequent)
basic_machine=i386-sequent
basic_os=
;;
sps7)
basic_machine=m68k-bull
basic_os=sysv2
;;
st2000)
basic_machine=m68k-tandem
basic_os=
;;
stratus)
basic_machine=i860-stratus
basic_os=sysv4
;;
sun2)
basic_machine=m68000-sun
basic_os=
;;
sun2os3)
basic_machine=m68000-sun
basic_os=sunos3
;;
sun2os4)
basic_machine=m68000-sun
basic_os=sunos4
;;
sun3)
basic_machine=m68k-sun
basic_os=
;;
sun3os3)
basic_machine=m68k-sun
basic_os=sunos3
;;
sun3os4)
basic_machine=m68k-sun
basic_os=sunos4
;;
sun4)
basic_machine=sparc-sun
basic_os=
;;
sun4os3)
basic_machine=sparc-sun
basic_os=sunos3
;;
sun4os4)
basic_machine=sparc-sun
basic_os=sunos4
;;
sun4sol2)
basic_machine=sparc-sun
basic_os=solaris2
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
basic_os=
;;
sv1)
basic_machine=sv1-cray
basic_os=unicos
;;
symmetry)
basic_machine=i386-sequent
basic_os=dynix
;;
t3e)
basic_machine=alphaev5-cray
basic_os=unicos
;;
t90)
basic_machine=t90-cray
basic_os=unicos
;;
toad1)
basic_machine=pdp10-xkl
basic_os=tops20
;;
tpf)
basic_machine=s390x-ibm
basic_os=tpf
;;
udi29k)
basic_machine=a29k-amd
basic_os=udi
;;
ultra3)
basic_machine=a29k-nyu
basic_os=sym1
;;
v810 | necv810)
basic_machine=v810-nec
basic_os=none
;;
vaxv)
basic_machine=vax-dec
basic_os=sysv
;;
vms)
basic_machine=vax-dec
basic_os=vms
;;
vsta)
basic_machine=i386-pc
basic_os=vsta
;;
vxworks960)
basic_machine=i960-wrs
basic_os=vxworks
;;
vxworks68)
basic_machine=m68k-wrs
basic_os=vxworks
;;
vxworks29k)
basic_machine=a29k-wrs
basic_os=vxworks
;;
xbox)
basic_machine=i686-pc
basic_os=mingw32
;;
ymp)
basic_machine=ymp-cray
basic_os=unicos
;;
*)
basic_machine=$1
basic_os=
;;
esac
;;
esac
# Decode 1-component or ad-hoc basic machines
case $basic_machine in
# Here we handle the default manufacturer of certain CPU types. It is in
# some cases the only manufacturer, in others, it is the most popular.
w89k)
cpu=hppa1.1
vendor=winbond
;;
op50n)
cpu=hppa1.1
vendor=oki
;;
op60c)
cpu=hppa1.1
vendor=oki
;;
ibm*)
cpu=i370
vendor=ibm
;;
orion105)
cpu=clipper
vendor=highlevel
;;
mac | mpw | mac-mpw)
cpu=m68k
vendor=apple
;;
pmac | pmac-mpw)
cpu=powerpc
vendor=apple
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
cpu=m68000
vendor=att
;;
3b*)
cpu=we32k
vendor=att
;;
bluegene*)
cpu=powerpc
vendor=ibm
basic_os=cnk
;;
decsystem10* | dec10*)
cpu=pdp10
vendor=dec
basic_os=tops10
;;
decsystem20* | dec20*)
cpu=pdp10
vendor=dec
basic_os=tops20
;;
delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300)
cpu=m68k
vendor=motorola
;;
# This used to be dpx2*, but that gets the RS6000-based
# DPX/20 and the x86-based DPX/2-100 wrong. See
# https://oldskool.silicium.org/stations/bull_dpx20.htm
# https://www.feb-patrimoine.com/english/bull_dpx2.htm
# https://www.feb-patrimoine.com/english/unix_and_bull.htm
dpx2 | dpx2[23]00 | dpx2[23]xx)
cpu=m68k
vendor=bull
;;
dpx2100 | dpx21xx)
cpu=i386
vendor=bull
;;
dpx20)
cpu=rs6000
vendor=bull
;;
encore | umax | mmax)
cpu=ns32k
vendor=encore
;;
elxsi)
cpu=elxsi
vendor=elxsi
basic_os=${basic_os:-bsd}
;;
fx2800)
cpu=i860
vendor=alliant
;;
genix)
cpu=ns32k
vendor=ns
;;
h3050r* | hiux*)
cpu=hppa1.1
vendor=hitachi
basic_os=hiuxwe2
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
cpu=hppa1.0
vendor=hp
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
cpu=m68000
vendor=hp
;;
hp9k3[2-9][0-9])
cpu=m68k
vendor=hp
;;
hp9k6[0-9][0-9] | hp6[0-9][0-9])
cpu=hppa1.0
vendor=hp
;;
hp9k7[0-79][0-9] | hp7[0-79][0-9])
cpu=hppa1.1
vendor=hp
;;
hp9k78[0-9] | hp78[0-9])
# FIXME: really hppa2.0-hp
cpu=hppa1.1
vendor=hp
;;
hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
# FIXME: really hppa2.0-hp
cpu=hppa1.1
vendor=hp
;;
hp9k8[0-9][13679] | hp8[0-9][13679])
cpu=hppa1.1
vendor=hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
cpu=hppa1.0
vendor=hp
;;
i*86v32)
cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
basic_os=sysv32
;;
i*86v4*)
cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
basic_os=sysv4
;;
i*86v)
cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
basic_os=sysv
;;
i*86sol2)
cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
basic_os=solaris2
;;
j90 | j90-cray)
cpu=j90
vendor=cray
basic_os=${basic_os:-unicos}
;;
iris | iris4d)
cpu=mips
vendor=sgi
case $basic_os in
irix*)
;;
*)
basic_os=irix4
;;
esac
;;
miniframe)
cpu=m68000
vendor=convergent
;;
*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
cpu=m68k
vendor=atari
basic_os=mint
;;
news-3600 | risc-news)
cpu=mips
vendor=sony
basic_os=newsos
;;
next | m*-next)
cpu=m68k
vendor=next
;;
np1)
cpu=np1
vendor=gould
;;
op50n-* | op60c-*)
cpu=hppa1.1
vendor=oki
basic_os=proelf
;;
pa-hitachi)
cpu=hppa1.1
vendor=hitachi
basic_os=hiuxwe2
;;
pbd)
cpu=sparc
vendor=tti
;;
pbb)
cpu=m68k
vendor=tti
;;
pc532)
cpu=ns32k
vendor=pc532
;;
pn)
cpu=pn
vendor=gould
;;
power)
cpu=power
vendor=ibm
;;
ps2)
cpu=i386
vendor=ibm
;;
rm[46]00)
cpu=mips
vendor=siemens
;;
rtpc | rtpc-*)
cpu=romp
vendor=ibm
;;
sde)
cpu=mipsisa32
vendor=sde
basic_os=${basic_os:-elf}
;;
simso-wrs)
cpu=sparclite
vendor=wrs
basic_os=vxworks
;;
tower | tower-32)
cpu=m68k
vendor=ncr
;;
vpp*|vx|vx-*)
cpu=f301
vendor=fujitsu
;;
w65)
cpu=w65
vendor=wdc
;;
w89k-*)
cpu=hppa1.1
vendor=winbond
basic_os=proelf
;;
none)
cpu=none
vendor=none
;;
leon|leon[3-9])
cpu=sparc
vendor=$basic_machine
;;
leon-*|leon[3-9]-*)
cpu=sparc
vendor=`echo "$basic_machine" | sed 's/-.*//'`
;;
*-*)
saved_IFS=$IFS
IFS="-" read cpu vendor <&2
exit 1
;;
esac
;;
esac
# Here we canonicalize certain aliases for manufacturers.
case $vendor in
digital*)
vendor=dec
;;
commodore*)
vendor=cbm
;;
*)
;;
esac
# Decode manufacturer-specific aliases for certain operating systems.
if test x"$basic_os" != x
then
# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
# set os.
obj=
case $basic_os in
gnu/linux*)
kernel=linux
os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
;;
os2-emx)
kernel=os2
os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
;;
nto-qnx*)
kernel=nto
os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
;;
*-*)
saved_IFS=$IFS
IFS="-" read kernel os <&2
fi
;;
*)
echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
exit 1
;;
esac
case $obj in
aout* | coff* | elf* | pe*)
;;
'')
# empty is fine
;;
*)
echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
exit 1
;;
esac
# Here we handle the constraint that a (synthetic) cpu and os are
# valid only in combination with each other and nowhere else.
case $cpu-$os in
# The "javascript-unknown-ghcjs" triple is used by GHC; we
# accept it here in order to tolerate that, but reject any
# variations.
javascript-ghcjs)
;;
javascript-* | *-ghcjs)
echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
exit 1
;;
esac
# As a final step for OS-related things, validate the OS-kernel combination
# (given a valid OS), if there is a kernel.
case $kernel-$os-$obj in
linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
| linux-mlibc*- | linux-musl*- | linux-newlib*- \
| linux-relibc*- | linux-uclibc*- | linux-ohos*- )
;;
uclinux-uclibc*- | uclinux-gnu*- )
;;
managarm-mlibc*- | managarm-kernel*- )
;;
windows*-msvc*-)
;;
-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
| -uclibc*- )
# These are just libc implementations, not actual OSes, and thus
# require a kernel.
echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
exit 1
;;
-kernel*- )
echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
exit 1
;;
*-kernel*- )
echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
exit 1
;;
*-msvc*- )
echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
exit 1
;;
kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-)
;;
vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
;;
nto-qnx*-)
;;
os2-emx-)
;;
rtmk-nova-)
;;
*-eabi*- | *-gnueabi*-)
;;
none--*)
# None (no kernel, i.e. freestanding / bare metal),
# can be paired with an machine code file format
;;
-*-)
# Blank kernel with real OS is always fine.
;;
--*)
# Blank kernel and OS with real machine code file format is always fine.
;;
*-*-*)
echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
exit 1
;;
esac
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
case $vendor in
unknown)
case $cpu-$os in
*-riscix*)
vendor=acorn
;;
*-sunos* | *-solaris*)
vendor=sun
;;
*-cnk* | *-aix*)
vendor=ibm
;;
*-beos*)
vendor=be
;;
*-hpux*)
vendor=hp
;;
*-mpeix*)
vendor=hp
;;
*-hiux*)
vendor=hitachi
;;
*-unos*)
vendor=crds
;;
*-dgux*)
vendor=dg
;;
*-luna*)
vendor=omron
;;
*-genix*)
vendor=ns
;;
*-clix*)
vendor=intergraph
;;
*-mvs* | *-opened*)
vendor=ibm
;;
*-os400*)
vendor=ibm
;;
s390-* | s390x-*)
vendor=ibm
;;
*-ptx*)
vendor=sequent
;;
*-tpf*)
vendor=ibm
;;
*-vxsim* | *-vxworks* | *-windiss*)
vendor=wrs
;;
*-aux*)
vendor=apple
;;
*-hms*)
vendor=hitachi
;;
*-mpw* | *-macos*)
vendor=apple
;;
*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
vendor=atari
;;
*-vos*)
vendor=stratus
;;
esac
;;
esac
echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
exit
# Local variables:
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
# End:
bcpp-20250914/install-sh 0000755 0000000 0000000 00000037111 15021413211 013401 0 ustar root root #!/bin/sh
# install - install a program, script, or datafile
scriptversion=2020-11-14.01; # UTC
# https://lists.gnu.org/archive/html/automake/2018-09/msg00002.html
#
# Originally X11R4 util/scripts/install.sh, the following comments, copyright
# and license were added by an autoconf developer in 1998 (about nine years
# later). I have made a minor change to the wording, i.e., "copyright holders"
# vs "X Consortium", for reusability -TD
#
# -----------------------------------------------------------------------------
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
# -----------------------------------------------------------------------------
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
#
# Except as contained in this notice, the name(s) of the above copyright
# holders shall not be used in advertising or otherwise to promote the sale,
# use or other dealings in this Software without prior written authorization.
# -----------------------------------------------------------------------------
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
tab=' '
nl='
'
IFS=" $tab$nl"
# Set DOITPROG to "echo" to test this script.
doit=${DOITPROG-}
doit_exec=${doit:-exec}
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_mkdir=
# Desired mode of installed file.
mode=0755
# Create dirs (including intermediate dirs) using mode 755.
# This is like GNU 'install' as of coreutils 8.32 (2020).
mkdir_umask=22
backupsuffix=
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
is_target_a_directory=possibly
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-p pass -p to $cpprog.
-s $stripprog installed files.
-S SUFFIX attempt to back up existing files, with suffix SUFFIX.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
By default, rm is invoked with -f; when overridden with RMPROG,
it's up to you to specify -f if you want it.
If -S is not specified, no backups are attempted.
Email bug reports to bug-automake@gnu.org.
Automake home page: https://www.gnu.org/software/automake/
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-p) cpprog="$cpprog -p";;
-s) stripcmd=$stripprog;;
-S) backupsuffix="$2"
shift;;
-t)
is_target_a_directory=always
dst_arg=$2
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
shift;;
-T) is_target_a_directory=never;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
# We allow the use of options -d and -T together, by making -d
# take the precedence; this is for compatibility with GNU install.
if test -n "$dir_arg"; then
if test -n "$dst_arg"; then
echo "$0: target directory not allowed when installing a directory." >&2
exit 1
fi
fi
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
if test $# -gt 1 || test "$is_target_a_directory" = always; then
if test ! -d "$dst_arg"; then
echo "$0: $dst_arg: Is not a directory." >&2
exit 1
fi
fi
fi
if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
trap "ret=141; $do_exit" 13
trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names problematic for 'test' and other utilities.
case $src in
-* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
# Don't chown directories that already exist.
if test $dstdir_status = 0; then
chowncmd=""
fi
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# If destination is a directory, append the input filename.
if test -d "$dst"; then
if test "$is_target_a_directory" = never; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dstbase=`basename "$src"`
case $dst in
*/) dst=$dst$dstbase;;
*) dst=$dst/$dstbase;;
esac
dstdir_status=0
else
dstdir=`dirname "$dst"`
test -d "$dstdir"
dstdir_status=$?
fi
fi
case $dstdir in
*/) dstdirslash=$dstdir;;
*) dstdirslash=$dstdir/;;
esac
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
# The $RANDOM variable is not portable (e.g., dash). Use it
# here however when possible just to lower collision chance.
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap '
ret=$?
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
exit $ret
' 0
# Because "mkdir -p" follows existing symlinks and we likely work
# directly in world-writeable /tmp, make sure that the '$tmpdir'
# directory is successfully created first before we actually test
# 'mkdir -p'.
if (umask $mkdir_umask &&
$mkdirprog $mkdir_mode "$tmpdir" &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
test_tmpdir="$tmpdir/a"
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
fi
trap '' 0;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
[-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
oIFS=$IFS
IFS=/
set -f
set fnord $dstdir
shift
set +f
IFS=$oIFS
prefixes=
for d
do
test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=${dstdirslash}_inst.$$_
rmtmp=${dstdirslash}_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask &&
{ test -z "$stripcmd" || {
# Create $dsttmp read-write so that cp doesn't create it read-only,
# which would cause strip to fail.
if test -z "$doit"; then
: >"$dsttmp" # No need to fork-exec 'touch'.
else
$doit touch "$dsttmp"
fi
}
} &&
$doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# If $backupsuffix is set, and the file being installed
# already exists, attempt a backup. Don't worry if it fails,
# e.g., if mv doesn't support -f.
if test -n "$backupsuffix" && test -f "$dst"; then
$doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
fi
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
bcpp-20250914/wpdocs/ 0000755 0000000 0000000 00000000000 06271552430 012707 5 ustar root root bcpp-20250914/wpdocs/hirachy.doc 0000644 0000000 0000000 00000007307 05650466754 015051 0 ustar root root ÿWPCè
ûÿ 2 ÿÿ B P Z ¦ Courier 10cpi 3| x (/ôx þ6X @É “8Å; X@þþþþþþþÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿHP LaserJet Series II HPLASEII.PRS Ûx Œ
@É ‡Ï ,ð t0d¶„X@Ó USUK ÓÐ÷ 3Ø' 3Ø'Standard Ð6Â&