2325 lines
77 KiB
Plaintext
2325 lines
77 KiB
Plaintext
HOW TO USE THIS FILE: This file has a table of contents and
|
|
an index that refer to "pages" in this file. If your editor
|
|
has a search facility, you can use it to search for the page
|
|
numbers listed in either the table of contents or in the index.
|
|
The phrase "Page n" (where n represents the actual page number)
|
|
appears at the bottom left of the "page" it refers to. Thus, at
|
|
the bottom of page 1, you'll find "Page 1" as the last item on
|
|
that "page."
|
|
|
|
UTILITIES
|
|
TABLE OF CONTENTS
|
|
___________________________________________________________________
|
|
|
|
|
|
Overview 1 The OBJXREF command-line
|
|
BGIOBJ: Conversion utility for options . . . . . . . . . 22
|
|
graphics drivers and fonts . . 1 Control options . . . . 23
|
|
Adding the new .OBJ files to Report options . . . . 24
|
|
GRAPHICS.LIB . . . . . . . . 2 Response files . . . . . . 26
|
|
Registering the drivers and Free-form response
|
|
fonts . . . . . . . . . . . 2 files . . . . . . . . . . 26
|
|
An example . . . . . . . . 3 Project files . . . . . . 26
|
|
The /F option . . . . . . . 4 Linker response files . . 27
|
|
Advanced features . . . . . 5 Sample OBJXREF reports . . 28
|
|
Report by public names (/
|
|
RP) . . . . . . . . . . . 29
|
|
CPP: The preprocessor Report by module (/RM) . 29
|
|
utility . . . . . . . . . . . 9 Report by reference (/
|
|
CPP as a macro RR) . . . . . . . . . . . 30
|
|
preprocessor . . . . . . . . 9 Report by external
|
|
An example . . . . . . . . 10 references (/RX) . . . . 30
|
|
GREP: A text-search utility . 10 Report of module sizes (/
|
|
Command-line syntax . . . 11 RS) . . . . . . . . . . . 31
|
|
GREP options . . . . . . . 11 Report by class type (/
|
|
Order of precedence . . 13 RC) . . . . . . . . . . . 31
|
|
The search string . . . . 14 Report of unreferenced
|
|
Operators in regular symbol names (/RU) . . . 32
|
|
expressions . . . . . . 14 Verbose reporting (/RV) . 33
|
|
File specifications . . . 16 Examples of how to use
|
|
Some GREP examples . . . . 16 OBJXREF . . . . . . . . . . 33
|
|
Example 1 . . . . . . . 16 Example 1 . . . . . . . . 33
|
|
Example 2 . . . . . . . 17 Example 2 . . . . . . . . 33
|
|
Example 3 . . . . . . . 17 Example 3 . . . . . . . . 34
|
|
Example 4 . . . . . . . 18 Example 4 . . . . . . . . 34
|
|
Example 5 . . . . . . . 18 OBJXREF error messages and
|
|
Example 6 . . . . . . . 19 warnings . . . . . . . . . 34
|
|
Example 7 . . . . . . . 19 Error messages . . . . . 35
|
|
Example 8 . . . . . . . 20 Warnings . . . . . . . . 35
|
|
OBJXREF: The object module THELP . . . . . . . . . . . 36
|
|
cross-reference utility . . 21 TRIGRAPH . . . . . . . . . . 37
|
|
The OBJXREF command line . 21 Index 41
|
|
|
|
|
|
Appendix: Project conversion utilities . . . . . . . . . . . . . A
|
|
____________________________________________________________________
|
|
|
|
OVERVIEW
|
|
|
|
Your Turbo C++ package supplies much more than just two versions of
|
|
the fastest C compiler available. It also provides twelve powerful
|
|
standalone utility programs that you can use with your Turbo C++
|
|
files or your other modules. Of these, MAKE, TLIB, TLINK, and TOUCH
|
|
are documented in the User's Guide. The rest of them, listed below,
|
|
are documented in this file.
|
|
|
|
BGIOBJ converts graphics drivers and fonts
|
|
|
|
CPP is the Turbo C++ preprocessor
|
|
|
|
GREP searches files for text strings
|
|
|
|
OBJXREF is an object module cross-referencer
|
|
|
|
PRJCNVT converts Turbo C 2.0 project files to Turbo C++ format
|
|
|
|
PRJ2MAK converts Turbo C++ project files to MAKE files
|
|
|
|
THELP is the Turbo Help utility
|
|
|
|
TRIGRAPH supports character conversion
|
|
|
|
==================================================================
|
|
BGIOBJ: Conversion utility for graphics drivers and fonts
|
|
|
|
You can use BGIOBJ to convert graphics driver files and character
|
|
sets (stroked font files) to object (.OBJ) files. Once they're con-
|
|
verted, you can link them into your program, making them part of
|
|
the executable file. This is in addition to the graphics package's
|
|
dynamic loading scheme, in which your program loads graphics
|
|
drivers and character sets (stroked fonts) from disk at run time.
|
|
|
|
Linking drivers and fonts directly into your program is advanta-
|
|
geous because the executable file contains all (or most) of the
|
|
|
|
Page 1
|
|
|
|
BGIOBJ
|
|
|
|
drivers and/or fonts it might need, and doesn't need to access the
|
|
driver and font files on disk when running. However, linking the
|
|
drivers and fonts into your executable file increases its size.
|
|
|
|
To convert a driver or font file to a linkable object file, use the
|
|
BGIOBJ.EXE utility. This is the simplified syntax:
|
|
|
|
BGIOBJ source_file
|
|
|
|
where source_file is the driver or font file to be converted to an
|
|
object file. The object file created has the same file name as the
|
|
source file, with the extension .OBJ; for example, EGAVGA.BGI
|
|
yields EGAVGA.OBJ, SANS.CHR gives SANS.OBJ, and so on.
|
|
|
|
|
|
Adding the new
|
|
.OBJ files to
|
|
GRAPHICS.LIB
|
|
|
|
You should add the driver and font object modules to GRAPHICS.LIB,
|
|
so the linker can locate them when it links in the graphics
|
|
routines. If you don't add these new object modules to
|
|
GRAPHICS.LIB, you'll have to add them to the list of files in the
|
|
TC project (.PRJ) file, on the TCC command line, or on the TLINK
|
|
command line. To add these object modules to GRAPHICS.LIB, invoke
|
|
TLIB with the following command line:
|
|
|
|
tlib graphics + object_file_name [+ object_file_name ...]
|
|
|
|
where object_file_name is the name of the object file created by
|
|
BGIOBJ.EXE (such as CGA, EGAVGA, GOTH, and so forth). The .OBJ
|
|
extension is implied, so you don't need to include it. You can add
|
|
several files with one command line to save time; see the example
|
|
in the following section.
|
|
|
|
|
|
Registering the
|
|
drivers and
|
|
fonts
|
|
|
|
After adding driver and font object modules to GRAPHICS.LIB, you
|
|
have to register all the drivers and fonts that you want linked in;
|
|
you do this by calling registerbgidriver and registerbgifont in
|
|
your program (before calling initgraph). This informs the graphics
|
|
system of the presence of those files, and ensures that they will
|
|
be linked in when the executable file is created by the linker.
|
|
|
|
The registering routines each take one parameter; a symbolic name
|
|
defined in graphics.h. Each registering routine returns a
|
|
nonnegative value if the driver or font is successfully registered.
|
|
|
|
Page 2
|
|
|
|
BGIOBJ
|
|
|
|
The following table shows the names to be used with
|
|
registerbgidriver and registerbgifont. It is a complete list of
|
|
drivers and fonts included with Turbo C++.
|
|
___________________________________________________________________
|
|
|
|
Driver file registerbgidriver Font file registerbgifont
|
|
(*.BGI) symbolic name (*.CHR) symbolic name
|
|
___________________________________________________________________
|
|
|
|
CGA CGA_driver TRIP triplex_font
|
|
EGAVGA EGAVGA_driver LITT small_font
|
|
HERC Herc_driver SANS sansserif_font
|
|
ATT ATT_driver GOTH gothic_font
|
|
PC3270 PC3270_driver
|
|
IBM8514 IBM8514_driver
|
|
___________________________________________________________________
|
|
|
|
An example
|
|
|
|
Suppose you want to convert the files for the CGA graphics driver,
|
|
the gothic font, and the triplex font to object modules, then link
|
|
them into your program. Here's what you do:
|
|
|
|
1. Convert the binary files to object files using BGIOBJ.EXE, as
|
|
shown in the following separate command lines:
|
|
|
|
bgiobj cga
|
|
bgiobj trip
|
|
bgiobj goth
|
|
|
|
This creates three files: CGA.OBJ, TRIP.OBJ, and GOTH.OBJ.
|
|
|
|
2. You can add these object files to GRAPHICS.LIB with this TLIB
|
|
command line:
|
|
|
|
tlib graphics +cga +trip +goth
|
|
|
|
3. If you don't add the object files to GRAPHICS.LIB, you must add
|
|
the object file names CGA.OBJ, TRIP.OBJ, and GOTH.OBJ to your
|
|
project list (if you are using Turbo C++'s integrated
|
|
environment), or to the TCC command line. For example, the TCC
|
|
command line would look like this:
|
|
|
|
tcc niftgraf graphics.lib cga.obj trip.obj goth.obj
|
|
|
|
4. You register these files in your graphics program like this:
|
|
|
|
Page 3
|
|
|
|
BGIOBJ
|
|
|
|
|
|
If you ever get a linker error "Segment exceeds 64K" after linking
|
|
in some drivers and/or fonts, refer to the following section.
|
|
/* Header file declares CGA_driver, triplex_font & gothic_font
|
|
*/
|
|
#include <graphics.h>
|
|
|
|
/* Register and check for errors (one never knows...) */
|
|
|
|
if (registerbgidriver(CGA_driver) < 0) exit(1);
|
|
if (registerbgifont(triplex_font) < 0) exit(1);
|
|
if (registerbgifont(gothic_font) < 0) exit(1);
|
|
|
|
/* ... */
|
|
|
|
initgraph(....); /* initgraph should be called
|
|
after registering */
|
|
|
|
/* ... */
|
|
|
|
|
|
The /F option
|
|
|
|
This section explains what steps to take if you get the linker
|
|
error "Segment exceeds 64K" (or a similar error) after linking in
|
|
several driver and/or font files (especially with small- and
|
|
compact-model programs).
|
|
|
|
By default, the files created by BGIOBJ.EXE all use the same
|
|
segment (called _TEXT). This can cause problems if your program
|
|
links in many drivers and/or fonts, or when you're using the small
|
|
or compact memory model.
|
|
|
|
To solve this problem, you can convert one or more of the drivers
|
|
or fonts with the BGIOBJ /F option. This option directs BGIOBJ to
|
|
use a segment name of the form filename_TEXT, so that the default
|
|
segment is not overburdened by all the linked-in drivers and fonts
|
|
(and, in small and compact model programs, all the program code).
|
|
For example, the following two BGIOBJ command lines direct BGIOBJ
|
|
to use segment names of the form EGAVGA_TEXT and SANS_TEXT.
|
|
|
|
bgiobj /F egavga
|
|
bgiobj /F sans
|
|
|
|
When you select /F, BGIOBJ also appends F to the target object file
|
|
name (EGAVGAF.OBJ, SANSF.OBJ, and so forth), and appends _far to
|
|
the name that will be used with registerfarbgidriver and
|
|
registerfarbgifont. (For example, EGAVGA_driver becomes
|
|
EGAVGA_driver_far.)
|
|
|
|
For files created with /F, you must use these far registering
|
|
routines instead of the regular registerbgidriver and
|
|
registerbgifont. For example,
|
|
|
|
Page 4
|
|
|
|
BGIOBJ
|
|
|
|
|
|
if (registerfarbgidriver(EGAVGA_driver_far) < 0) exit(1);
|
|
if (registerfarbgifont(sansserif_font_far) < 0) exit(1);
|
|
|
|
|
|
Advanced
|
|
features
|
|
|
|
This section explains some of BGIOBJ's advanced features, and the
|
|
routines registerfarbgidriver and registerfarbgifont. Only
|
|
experienced users should use these features.
|
|
|
|
This is the full syntax of the BGIOBJ.EXE command line:
|
|
|
|
BGIOBJ [/F] source destination public-name seg-name seg-class
|
|
|
|
This table describes each component of the BGIOBJ command line.
|
|
___________________________________________________________________
|
|
|
|
Component Description
|
|
___________________________________________________________________
|
|
|
|
/F or -F This option instructs BGIOBJ.EXE to use a
|
|
segment name other than _TEXT (the
|
|
default), and to change the public name and
|
|
destination file name. (See page 4 for a
|
|
detailed discussion of /F.)
|
|
|
|
source This is the driver or font file to be
|
|
converted. If the file is not one of the
|
|
driver/font files shipped with Turbo C++,
|
|
you should specify a full file name
|
|
(including extension).
|
|
|
|
destination This is the name of the object file to be
|
|
produced. The default destination file name
|
|
is source.OBJ, or sourceF.OBJ if you use
|
|
the /F option.
|
|
|
|
public-name This is the name that will be used in the
|
|
program in a call to registerbgidriver or
|
|
registerbgifont (or their respective far
|
|
versions) to link in the object module.
|
|
|
|
The public name is the external name used
|
|
by the linker, so it should be the name
|
|
used in the program, prefixed with an
|
|
underscore. If your program uses Pascal
|
|
calling conventions, use only uppercase
|
|
letters, and do not add an underscore.
|
|
|
|
Page 5
|
|
|
|
BGIOBJ
|
|
|
|
|
|
seg-name This is an optional segment name; the
|
|
default is _TEXT (or filename_TEXT if /F is
|
|
specified)
|
|
|
|
seg-class This is an optional segment class; the
|
|
default is CODE.
|
|
___________________________________________________________________
|
|
|
|
All parameters except source are optional. However, if you need to
|
|
specify an optional parameter, all the parameters preceding it must
|
|
also be specified.
|
|
|
|
If you choose to use your own public name(s), you have to add
|
|
declaration(s) to your program, using one of the following forms:
|
|
|
|
void public_name(void); /* if /F not used, */
|
|
/* default segment name used */
|
|
|
|
extern int far public_name[]; /* if /F used, or */
|
|
/* segment name not _TEXT */
|
|
|
|
In these declarations, public_name matches the public-name you used
|
|
when converting with BGIOBJ. The graphics.h header file contains
|
|
declarations of the default driver and font public names; if you
|
|
use those default public names you don't have to declare them as
|
|
just described.
|
|
|
|
After these declarations, you have to register all the drivers and
|
|
fonts in your program. If you don't use the /F option and don't
|
|
change the default segment name, you should register drivers and
|
|
fonts through registerbgidriver and registerbgifont; otherwise, use
|
|
registerfarbgidriver and registerfarbgifont.
|
|
|
|
Here is an example of a program that loads a font file into memory:
|
|
|
|
/* Example of loading a font file into memory */
|
|
|
|
#include <graphics.h>
|
|
#include <io.h>
|
|
#include <fcntl.h>
|
|
#include <stdio.h>
|
|
#include <conio.h>
|
|
#include <stdlib.h>
|
|
#include <process.h>
|
|
#include <alloc.h>
|
|
|
|
main()
|
|
{
|
|
void *gothic_fontp; /* points to font buffer in memory
|
|
*/
|
|
int handle; /* file handle used for I/O */
|
|
unsigned fsize; /* size of file (and buffer) */
|
|
|
|
Page 6
|
|
|
|
BGIOBJ
|
|
|
|
int errorcode;
|
|
int graphdriver;
|
|
int graphmode;
|
|
|
|
/* open font file */
|
|
handle = open("GOTH.CHR", O_RDONLY|O_BINARY);
|
|
if (handle == -1)
|
|
{
|
|
printf("unable to open font file 'GOTH.CHR'\n");
|
|
exit(1);
|
|
}
|
|
/* find out size of the file */
|
|
fsize = filelength(handle);
|
|
/* allocate buffer */
|
|
gothic_fontp = malloc(fsize);
|
|
if (gothic_fontp == NULL)
|
|
{
|
|
printf("unable to allocate memory for font file
|
|
'GOTH.CHR'\n");
|
|
exit(1);
|
|
}
|
|
/* read font into memory */
|
|
if (read(handle, gothic_fontp, fsize) != fsize)
|
|
{
|
|
printf("unable to read font file 'GOTH.CHR'\n");
|
|
exit(1);
|
|
}
|
|
/* close font file */
|
|
close(handle);
|
|
/* register font */
|
|
if (registerfarbgifont(gothic_fontp) != GOTHIC_FONT)
|
|
{
|
|
printf("unable to register font file 'GOTH.CHR'\n");
|
|
exit(1);
|
|
}
|
|
/* detect and initialize graphix */
|
|
graphdriver = DETECT;
|
|
initgraph(&graphdriver, &graphmode, "..");
|
|
errorcode = graphresult();
|
|
if (errorcode != grOk)
|
|
{
|
|
printf("graphics error: %s\n",grapherrormsg(errorcode));
|
|
exit(1);
|
|
}
|
|
settextjustify(CENTER_TEXT, CENTER_TEXT);
|
|
settextstyle(GOTHIC_FONT, HORIZ_DIR, 4);
|
|
outtextxy(getmaxx()/2,getmaxy()/2,
|
|
"Borland Graphics Interface (BGI)");
|
|
/* press a key to terminate */
|
|
getch();
|
|
/* shut down graphics system */
|
|
closegraph();
|
|
|
|
Page 7
|
|
|
|
BGIOBJ
|
|
|
|
|
|
return(0);
|
|
}
|
|
|
|
|
|
Page 8
|
|
|
|
CPP
|
|
|
|
CPP: The preprocessor utility
|
|
|
|
CPP produces a list (in a file) of a C source program in which
|
|
include files and #define macros have been expanded. It is not
|
|
needed for normal compilations of C programs.
|
|
Often, when the compiler reports an error inside a macro or an
|
|
include file, you can get more information about what the error is
|
|
if you can see the include files or the results of the macro
|
|
expansions. In many multi-pass compilers, a separate pass performs
|
|
this work, and the results of the pass can be examined. Since Turbo
|
|
C++ uses an integrated single-pass compiler, we provided CPP to
|
|
supply the first-pass functionality found in other compilers.
|
|
|
|
You use CPP just as you would use TCC, the standalone compiler. CPP
|
|
reads the same TURBOC.CFG file for default options, and accepts the
|
|
same command-line options as TCC.
|
|
|
|
The TCC options that don't pertain to CPP are simply ignored by
|
|
CPP. To see the list of arguments handled by CPP, type cpp at the
|
|
DOS prompt.
|
|
|
|
With one exception, the file names listed on the CPP command line
|
|
are treated like they are in TCC, with wildcards allowed. The
|
|
exception to this is that all files are treated as C source files.
|
|
There is no special treatment for .OBJ, .LIB, or .ASM files.
|
|
|
|
For each file processed by CPP, the output is written to a file in
|
|
the current directory (or the output directory named by the -n
|
|
option) with the same name as the source name but with an extension
|
|
of .I.
|
|
|
|
This output file is a text file containing each line of the source
|
|
file and any include files. Any preprocessing directive lines have
|
|
been removed, along with any conditional text lines excluded from
|
|
the compile. Unless you use a command-line option to specify other-
|
|
wise, text lines are prefixed with the file name and line number of
|
|
the source or include file the line came from. Within a text line,
|
|
any macros are replaced with their expansion text.
|
|
|
|
Important!
|
|
The resulting output of CPP cannot be compiled because of the file
|
|
name and line number prefix attached to each source line.
|
|
|
|
|
|
CPP as a macro
|
|
preprocessor
|
|
|
|
The -P option to CPP tells it to prefix each line with the source
|
|
file name and line number. If you give it -P* (turning this option
|
|
off), CPP omits this line number information. With this option
|
|
|
|
Page 9
|
|
CPP
|
|
|
|
turned off, CPP can be used as a macro preprocessor; the resulting
|
|
.I file can then be compiled with TC or TCC.
|
|
|
|
|
|
An example
|
|
|
|
The following simple program illustrates how CPP preprocesses a
|
|
file, first with -P selected, then with -P*.
|
|
|
|
Source file: HELLOJOE.C
|
|
#define NAME "Joe Smith"
|
|
#define BEGIN {
|
|
#define END }
|
|
|
|
main()
|
|
BEGIN
|
|
printf("%s\n", NAME);
|
|
END
|
|
|
|
Command line used to invoke CPP as a preprocessor:
|
|
cpp hellojoe.c
|
|
|
|
Output:
|
|
hellojoe.c 1:
|
|
hellojoe.c 2:
|
|
hellojoe.c 3:
|
|
hellojoe.c 4:
|
|
hellojoe.c 5: main()
|
|
hellojoe.c 6: {
|
|
hellojoe.c 7: printf("%s\n","Joe Smith");
|
|
hellojoe.c 8: }
|
|
|
|
Command line used to invoke CPP as a macro preprocessor:
|
|
cpp -P* hellojoe.c
|
|
|
|
Output:
|
|
main()
|
|
{
|
|
printf("%s\n","Joe Smith");
|
|
}
|
|
|
|
|
|
GREP: A text-search utility
|
|
|
|
GREP (Global Regular Expression Print) is a powerful text-search
|
|
program derived from the UNIX utility of the same name. GREP
|
|
searches for a text pattern in one or more files or in its standard
|
|
input stream.
|
|
|
|
Page 10
|
|
|
|
GREP
|
|
|
|
|
|
Here's a quick example of a situation where you might want to use
|
|
GREP. Suppose you wanted to find out which text files in your
|
|
current directory contained the string "Elisabeth." You would issue
|
|
the command
|
|
|
|
grep Elisabeth *.txt
|
|
|
|
and GREP would respond with a list of the lines in each file (if
|
|
any) that contained the string "Elisabeth." The strings "elisabeth"
|
|
and "ELISABETH" would not be considered matches.
|
|
|
|
GREP can do a lot more than match a single, fixed string. In the
|
|
section that follows, you'll see how to make GREP search for any
|
|
string that matches a particular pattern.
|
|
|
|
|
|
Command-line
|
|
syntax
|
|
|
|
The general command-line syntax for GREP is
|
|
|
|
grep [options] searchstring [filespec ... ]
|
|
|
|
options consist of one or more letters, preceded by a hyphen (*),
|
|
that let you change various aspects of GREP's behavior.
|
|
|
|
searchstring gives the pattern to search for.
|
|
|
|
filespec (a list of file specifications) tells GREP which files to
|
|
search. (If no file is specified, GREP searches its standard input;
|
|
this lets you use GREP with pipes and redirection.)
|
|
|
|
In addition, the command
|
|
|
|
GREP ?
|
|
|
|
prints a brief help screen showing GREP's command-line options,
|
|
special characters, and defaults. (See the description of the -u
|
|
command-line option for information on how to change GREP's
|
|
defaults.)
|
|
|
|
|
|
GREP options
|
|
|
|
In the command line, options are one or more single characters
|
|
preceded by a hyphen (*). Each individual character is a switch
|
|
that you can turn on or off: A plus symbol (+) after a character
|
|
turns the option on; a hyphen (*) after the character turns the
|
|
option off.
|
|
|
|
The default is on; for example, -r means the same thing as -r+. You
|
|
can list multiple options individually (like this: -i -d -l), or
|
|
Page 11
|
|
|
|
GREP
|
|
|
|
|
|
you can combine them (like this: -ild or -il, -d, and so on); it's
|
|
all the same to GREP.
|
|
|
|
Here are the GREP option characters and their meanings:
|
|
__________________________________________________________
|
|
|
|
Option Meaning
|
|
__________________________________________________________
|
|
|
|
|
|
-c Count only: Prints only a count of matching lines.
|
|
For each file that contains at least one matching
|
|
line, GREP prints the file name and a count of the
|
|
number of matching lines. Matching lines are not
|
|
printed.
|
|
|
|
-d Directories: For each filespec specified on the
|
|
command line, GREP searches for all files that
|
|
match the file specification, both in the directory
|
|
specified and in all subdirectories below the
|
|
specified directory. If you give a filespec without
|
|
a path, GREP assumes the files are in the current
|
|
directory.
|
|
|
|
-i Ignore case: GREP ignores upper/lowercase
|
|
differences (case folding). GREP treats all letters
|
|
a to z as identical to the corresponding letters A
|
|
to Z in all situations.
|
|
|
|
-l List match files: Prints only the name of each file
|
|
containing a match. After GREP finds a match, it
|
|
prints the file name and processing immediately
|
|
moves on to the next file.
|
|
|
|
-n Numbers: Each matching line that GREP prints is
|
|
preceded by its line number.
|
|
|
|
-o UNIX output format: Changes the output format of
|
|
matching lines to support more easily the UNIX
|
|
style of command-line piping. All lines of output
|
|
are preceded by the name of the file that contained
|
|
the matching line.
|
|
|
|
-r Regular expression search: The text defined by
|
|
searchstring is treated as a regular expression
|
|
instead of as a literal string. This option is on
|
|
by default.
|
|
|
|
-u Update options: GREP will combine the options given
|
|
on the command line with its default options and
|
|
write these to the GREP.COM file as the new
|
|
defaults. (In other words, GREP is self-
|
|
configuring.) This option allows you to tailor the
|
|
|
|
Page 12
|
|
|
|
GREP
|
|
|
|
default option settings to your own taste. If you
|
|
want to see what the defaults are in a particular
|
|
copy of GREP.COM, type
|
|
|
|
GREP ?
|
|
|
|
at the DOS prompt. Each option on the help screen
|
|
will be followed by a + or a - depending on its
|
|
default setting.
|
|
|
|
-v Nonmatch: Prints only nonmatching lines. Only lines
|
|
that do not contain the search string are
|
|
considered to be nonmatching lines.
|
|
|
|
-w Word search: Text found that matches the regular
|
|
expression is considered a match only if the
|
|
character immediately preceding and following
|
|
cannot be part of a word. The default word
|
|
character set includes A to Z, 0 to 9, and the
|
|
underscore ( _ ).
|
|
|
|
An alternate form of this option lets you specify
|
|
the set of legal word characters. Its form is -
|
|
w[set], where set is any valid regular expression
|
|
set definition.
|
|
|
|
If you define the set with alphabetic characters,
|
|
it is automatically defined to contain both the
|
|
uppercase and lowercase values for each letter in
|
|
the set (regardless of how it is typed), even if
|
|
the search is case-sensitive. If you use the -w
|
|
option in combination with the -u option, the new
|
|
set of legal characters is saved as the default
|
|
set.
|
|
|
|
-z Verbose: GREP prints the file name of every file
|
|
searched. Each matching line is preceded by its
|
|
line number. A count of matching lines in each file
|
|
is given, even if the count is zero._______________
|
|
|
|
|
|
Order of
|
|
precedence
|
|
|
|
Remember that each of GREP's options is a switch: Its state
|
|
reflects the way you last set it. At any given time, each option
|
|
can only be on or off. Each occurrence of a given option on the
|
|
command line overrides its previous definition. Given this command
|
|
line,
|
|
|
|
grep -r -i* -d -i -r* main( my*.c
|
|
|
|
Page 13
|
|
|
|
GREP
|
|
|
|
|
|
GREP runs with the -d option on, the -i option on, and the -r
|
|
option off.
|
|
|
|
You can install your preferred default setting for each option in
|
|
GREP.COM with the -u option. For example, if you want GREP to
|
|
always do a verbose search (-z on), you can install it with the
|
|
following command:
|
|
|
|
grep -u -z
|
|
|
|
|
|
The search
|
|
string
|
|
|
|
To use GREP well, you'll need to become proficient at writing
|
|
search strings. The value of searchstring defines the pattern GREP
|
|
searches for. A search string can be either a regular expression or
|
|
a literal string.
|
|
|
|
In a regular expression, certain characters have special meanings:
|
|
They are operators that govern the search.
|
|
|
|
In a literal string, there are no operators: Each character is
|
|
treated literally.
|
|
|
|
You can enclose the search string in quotation marks to prevent
|
|
spaces and tabs from being treated as delimiters. The text matched
|
|
by the search string cannot cross line boundaries; that is, all the
|
|
text necessary to match the pattern must be on a single line.
|
|
|
|
A regular expression is either a single character or a set of
|
|
characters enclosed in brackets. A concatenation of regular
|
|
expressions is a regular expression.
|
|
|
|
|
|
Operators in
|
|
regular
|
|
expressions
|
|
|
|
When you use the -r option (on by default), the search string is
|
|
treated as a regular expression (not a literal expression). The
|
|
following characters take on special meanings:
|
|
|
|
Page 14
|
|
|
|
GREP
|
|
|
|
__________________________________________________________
|
|
|
|
Option Meaning
|
|
__________________________________________________________
|
|
|
|
^ A circumflex at the start of the expression matches
|
|
the start of a line.
|
|
|
|
$ A dollar sign at the end of the expression matches
|
|
the end of a line.
|
|
|
|
. A period matches any character.
|
|
|
|
* An expression followed by an asterisk wildcard
|
|
matches zero or more occurrences of that
|
|
expression. For example, in to*, the * operates on
|
|
the expression o; it matches t, to, too, etc. (t
|
|
followed by zero or more os), but doesn't match ta.
|
|
|
|
+ An expression followed by a plus sign matches one
|
|
or more occurrences of that expression: to+ matches
|
|
to, too, etc., but not t.
|
|
|
|
[ ] A string enclosed in brackets matches any character
|
|
in that string, but no others. If the first
|
|
character in the string is a circumflex (^), the
|
|
expression matches any character except the
|
|
characters in the string.
|
|
|
|
For example, [xyz] matches x, y, or z, while [^xyz]
|
|
matches a and b, but not x, y, or z. You can
|
|
specify a range of characters with two characters
|
|
separated by a hyphen (*). These can be combined to
|
|
form expressions (like [a*bd*z?], which matches the
|
|
? character and any lowercase letter except c).
|
|
|
|
\ The backslash escape character tells GREP to search
|
|
for the literal character that follows it. For
|
|
example, \. matches a period instead of "any
|
|
character." The backslash can be used to quote
|
|
itself; that is, you can use \\ to indicate a
|
|
literal backslash character in a GREP expression.
|
|
__________________________________________________________
|
|
|
|
Note
|
|
Four of the "special" characters ($, ., *, and +) don't have any
|
|
special meaning when used within a bracketed set. In addition, the
|
|
character ^ is only treated specially if it immediately follows the
|
|
beginning of the set definition (immediately after the [
|
|
delimiter).
|
|
|
|
Any ordinary character not mentioned in the preceding list matches
|
|
that character (> matches >, # matches #, and so on).
|
|
|
|
Page 15
|
|
|
|
GREP
|
|
|
|
|
|
File
|
|
specifications
|
|
|
|
filespec tells GREP which files (or groups of files) to search.
|
|
filespec can be an explicit file name, or a "generic" file name
|
|
incorporating the DOS ? and * wildcards. In addition, you can enter
|
|
a path (drive and directory information) as part of filespec. If
|
|
you give filespec without a path, GREP searches the current
|
|
directory.
|
|
|
|
If you don't specify any file specifications, input to GREP must
|
|
come from redirection (<) or a vertical bar (|).
|
|
|
|
|
|
Some GREP
|
|
examples
|
|
|
|
The following examples show how to combine GREP's features to do
|
|
different kinds of searches. They assume GREP's default settings
|
|
are unchanged.
|
|
|
|
|
|
Example 1
|
|
|
|
The search string here tells GREP to search for the word main with
|
|
no preceding lowercase letters ([^a*z]), followed by zero or more
|
|
occurrences of blank spaces (\ *), then a left parenthesis.
|
|
|
|
Since spaces and tabs are normally considered to be command-line
|
|
delimiters, you must quote them if you want to include them as part
|
|
of a regular expression. In this case, the space after main is
|
|
quoted with the backslash escape character. You could also
|
|
accomplish this by placing the space in double quotes.
|
|
|
|
Command line:
|
|
grep -r [^a*z]main\ *( *.c
|
|
|
|
Matches: main(i:integer)
|
|
main(i,j:integer)
|
|
if (main ()) halt;
|
|
|
|
Does not match:
|
|
mymain()
|
|
MAIN(i:integer);
|
|
|
|
Files searched:
|
|
*.C in current directory.
|
|
|
|
|
|
Page 16
|
|
|
|
GREP
|
|
|
|
Example 2
|
|
|
|
Because the backslash (\) and period (.) characters usually have
|
|
special meaning in path and file names, you must place
|
|
the backslash escape character immediately in front of them if
|
|
you want to search for them. The -i option is used here, so
|
|
the search is not case sensitive.
|
|
|
|
Command line:
|
|
grep -ri [a*c]:\\data\.fil
|
|
*.c *.inc
|
|
|
|
Matches: A:\data.fil
|
|
c:\Data.Fil
|
|
B:\DATA.FIL
|
|
|
|
Does not match:
|
|
d:\data.fil
|
|
a:data.fil
|
|
|
|
Files searched:
|
|
*.C and *.INC in current
|
|
directory.
|
|
|
|
|
|
Example 3
|
|
|
|
This format basically defines how to search for a given word.
|
|
|
|
Command line:
|
|
grep -ri [^a*z]word[^a*z]
|
|
*.doc
|
|
|
|
Matches: every new word must be on a new line.
|
|
MY WORD!
|
|
word--smallest unit of speech.
|
|
In the beginning there was
|
|
the WORD, and the WORD
|
|
|
|
Does not match:
|
|
Each file has at least 2000 words.
|
|
He misspells toward as toword.
|
|
|
|
Page 17
|
|
|
|
GREP
|
|
|
|
Files searched:
|
|
*.DOC in the current directory.
|
|
|
|
Example 4
|
|
|
|
This format defines a basic "word" search.
|
|
|
|
Command line:
|
|
grep -iw word *.doc
|
|
|
|
Matches: every new word must be on a new line. However,
|
|
MY WORD!
|
|
word: smallest unit of speech which conveys
|
|
In the beginning there was the WORD, and
|
|
|
|
Does not match:
|
|
each document contains at least 2000 words!
|
|
He seems to continually misspell "toward" as "toword."
|
|
|
|
Files searched:
|
|
*.DOC in the current directory.
|
|
|
|
|
|
Example 5
|
|
|
|
This is an example of how to search for a string with embedded spaces.
|
|
|
|
Command line:
|
|
grep "search string with spaces" *.doc *.c a:\work\myfile.*
|
|
|
|
Matches: This is a search string with spaces in it.
|
|
|
|
Does not match:
|
|
THIS IS A SEARCH STRING WITH SPACES IN IT.
|
|
This search string has spaces in it, too.
|
|
|
|
Page 18
|
|
|
|
GREP
|
|
|
|
|
|
Files searched:
|
|
*.DOC and *.C in the current directory, and MYFILE.* in a
|
|
directory called \WORK on drive A.
|
|
|
|
|
|
Example 6
|
|
|
|
This example searches for any one of the characters " . : ? ' and ,
|
|
at the end of a line.
|
|
|
|
The double quote within the range is preceded by an escape character,
|
|
so it is treated as a normal character instead of as the ending quote
|
|
for the string. Also, the $ character appears outside of the quoted
|
|
string. This demonstrates how regular expressions can be concatenated
|
|
to form a longer expression.
|
|
|
|
Command line:
|
|
grep -rd "[ ,.:?'\"]"$ \*.doc
|
|
|
|
Matches: He said hi to me.
|
|
Where are you going?
|
|
In anticipation of a unique situation,
|
|
Examples include the following:
|
|
"Many men smoke, but fu man chu."
|
|
|
|
Does not match:
|
|
He said "Hi" to me
|
|
Where are you going? I'm headed to the
|
|
|
|
Files searched:
|
|
*.DOC in the root directory and all its subdirectories on
|
|
the current drive.
|
|
|
|
|
|
Example 7
|
|
|
|
This example ignores case and just prints the names of any files
|
|
that contain at least one match. The three command-line examples
|
|
show different ways of specifying multiple options.
|
|
|
|
Page 19
|
|
|
|
GREP
|
|
|
|
Command line:
|
|
grep -ild " the " \*.doc
|
|
or
|
|
grep -i -l -d " the " \*.doc
|
|
or
|
|
grep -il -d " the " \*.doc
|
|
|
|
Matches: Anyway, this is the time we have
|
|
do you think? The main reason we are
|
|
|
|
Does not match:
|
|
He said "Hi" to me just when I
|
|
Where are you going? I'll bet you're headed
|
|
|
|
Files searched:
|
|
*.DOC in the root directory and all its subdirectories on
|
|
the current drive.
|
|
|
|
|
|
Example 8
|
|
|
|
This example redefines the current set of legal characters for a word
|
|
as the assignment operator (=) only, then does a word search. It matches
|
|
C assignment statements, which use a single equal sign (=), but not
|
|
equality tests, which use a double equal sign (==).
|
|
|
|
Command line:
|
|
grep -w[=] = *.c
|
|
|
|
Matches: i = 5;
|
|
j=5;
|
|
i += j;
|
|
|
|
Does not match:
|
|
if (i == t) j++;
|
|
/* ======================= */
|
|
|
|
Files searched:
|
|
*.C in the current directory.
|
|
|
|
|
|
Page 20
|
|
|
|
OBJXREF
|
|
|
|
|
|
OBJXREF: The object module cross-reference utility
|
|
|
|
OBJXREF examines a list of object files and library files and
|
|
produces reports on their contents. One type of report lists
|
|
definitions of public names and references to them. The other type lists
|
|
the segment sizes defined by object modules.
|
|
|
|
There are two categories of public names: global variables and function
|
|
names. The TEST1.C and TEST2.C files in the section "Sample OBJXREF
|
|
reports" (page 28) illustrate definitions of public names and external
|
|
references to them.
|
|
|
|
Object modules are object (.OBJ) files produced by TC, TCC or TASM. A
|
|
library (.LIB) file contains multiple object modules. An object module
|
|
generated by TC is given the same name as the .C source file it was
|
|
compiled from. This is also true for TCC, unless a different output
|
|
file name is specifically indicated with the -o TCC command-line option.
|
|
|
|
|
|
The OBJXREF command line
|
|
|
|
The OBJXREF command line consists of the word OBJXREF followed by a
|
|
series of command-line options and a list of object and library file
|
|
names, separated by a space or tab character. The syntax is as
|
|
follows:
|
|
|
|
OBJXREF options filename filename ...
|
|
|
|
The command-line options determine the kind of reports that OBJXREF will
|
|
generate and the amount of detail that OBJXREF will provide. They are
|
|
discussed in more detail in the next section.
|
|
|
|
Each option begins with a forward slash (/) followed by a one- or
|
|
two-character option name.
|
|
|
|
Page 21
|
|
|
|
OBJXREF
|
|
|
|
|
|
Object files and library files may be specified either on the command
|
|
line or in a response file. On the command line, file names are
|
|
separated by a space or a tab. All object modules specified as .OBJ
|
|
files are included in reports. Like TLINK, however, OBJXREF includes only
|
|
those modules from .LIB files which contain a public name referenced by an
|
|
.OBJ file or by a previously included module from a .LIB file.
|
|
|
|
As a general rule, you should list all the .OBJ and .LIB files that
|
|
are needed if the program is to link correctly, including the startup
|
|
.OBJ file and one or more C libraries.
|
|
|
|
File names may include a drive and directory path. The DOS ? and * wildcard
|
|
characters may be used to identify more than one file. File names may
|
|
refer to .OBJ object files or to .LIB library files. (If you don't
|
|
give a file extension, the .OBJ extension is assumed.)
|
|
|
|
Options and file names may occur in any order in the command line.
|
|
|
|
OBJXREF reports are written to the DOS standard output. The default is the
|
|
screen. The reports can be sent to a printer (as with >LPT1:) or to a
|
|
file (as with >lstfile) with the DOS redirection character (>).
|
|
|
|
Entering OBJXREF with no file names or options produces a summary of
|
|
available options.
|
|
|
|
|
|
The OBJXREF
|
|
command-line
|
|
options
|
|
|
|
OBJXREF command-line options fall into two categories: control options and
|
|
report options.
|
|
|
|
Page 22
|
|
|
|
OBJXREF
|
|
|
|
|
|
Control options
|
|
|
|
Control options modify the default behavior of OBJXREF (the default is that
|
|
none of these options are enabled).
|
|
_________________________________________
|
|
|
|
Option Meaning
|
|
_________________________________________
|
|
|
|
|
|
/I Ignore case differences in public
|
|
names. Use this option if you use
|
|
TLINK without the /C option (which
|
|
makes case differences
|
|
significant).
|
|
|
|
/D Look for .OBJ files in another
|
|
directory. If you want OBJXREF to
|
|
look for .OBJ files in a directory
|
|
other than the current one,
|
|
include the directory name on the
|
|
command line, prefixed with /D:
|
|
|
|
OBJXREF /Ddir1 [; dir2 [; dir3]]
|
|
|
|
or
|
|
|
|
OBJXREF /Ddir1 [/Ddir2] [/Ddir3]
|
|
|
|
OBJXREF will search each of the
|
|
directories in the specified order
|
|
for all object and library files.
|
|
|
|
Important!
|
|
|
|
If you don't use a /D option,
|
|
OBJXREF will search only the
|
|
current directory. If you do use a
|
|
/D option, however, the current
|
|
directory will not be searched
|
|
unless it is included in the
|
|
directory list. For example, if
|
|
you wanted OBJXREF to search first
|
|
the BORLAND directory and then the
|
|
current directory for files, you
|
|
would enter
|
|
|
|
OBJXREF /Dborland;.
|
|
|
|
|
|
Page 23
|
|
|
|
OBJXREF
|
|
|
|
|
|
The period denotes the current directory.
|
|
|
|
|
|
/F Include full library. All object
|
|
modules in specified .LIB files
|
|
are included even if they do not
|
|
contain public names that are
|
|
referenced by an object module
|
|
being processed by OBJXREF. This
|
|
provides information on the entire
|
|
contents of a library file. (See
|
|
example 4 in the section "OBJXREF
|
|
examples.")
|
|
|
|
/O Allows you to specify an output
|
|
file where OBJXREF will send any
|
|
reports generated. Its syntax is
|
|
as follows:
|
|
|
|
OBJXREF filename.obj /report
|
|
option /Ooutputfilename.ext
|
|
|
|
By default all output is sent to
|
|
the screen.
|
|
|
|
|
|
/V Verbose output. Lists names of
|
|
files read and displays totals of
|
|
public names, modules, segments,
|
|
and classes.
|
|
|
|
/Z Include zero-length segment
|
|
definitions. Object modules may
|
|
define a segment without
|
|
allocating any space in it.
|
|
Listing these zero length segment
|
|
definitions normally makes the
|
|
module size reports harder to use
|
|
but it can be valuable if you are
|
|
trying to remove all definitions
|
|
of a segment.
|
|
_________________________________________
|
|
|
|
Report options
|
|
|
|
Report options govern what sort of report is generated, and the
|
|
amount of detail that OBJXREF provides.
|
|
|
|
Page 24
|
|
|
|
OBJXREF
|
|
_______________________________________________________________
|
|
|
|
Option Report generated
|
|
_______________________________________________________________
|
|
|
|
/RC Report by class type: Module sizes ordered by class type
|
|
of segment.
|
|
|
|
/RM Report by module: Public names ordered by defining module.
|
|
|
|
/RP Report by public names: Public names in order with
|
|
defining module name.
|
|
|
|
This is the default.
|
|
|
|
/RR Report by reference: Public name definitions and
|
|
references ordered by name.
|
|
|
|
/RS Report of module sizes: Module sizes ordered by segment name.
|
|
|
|
/RU Report of unreferenced symbol names: Unreferenced public
|
|
names ordered by defining module.
|
|
|
|
/RV Verbose reporting: OBJXREF produces a report of every type.
|
|
|
|
/RX Report by external reference: External references ordered
|
|
by referencing module name.
|
|
________________________________________________________________
|
|
|
|
Public names defined in .C files appear in reports with a leading
|
|
underscore in the reports unless the -U* option was specified when
|
|
the file was compiled (main appears as _main).
|
|
|
|
You can limit the modules, segments, classes, or public names that OBJXREF
|
|
reports on by entering the appropriate name on the command line prefixed with
|
|
the /N option. For example,
|
|
|
|
OBJXREF filelist /RM /NC0
|
|
|
|
tells OBJXREF to generate a report listing information only for the module
|
|
named C0.
|
|
|
|
Page 25
|
|
|
|
OBJXREF
|
|
|
|
|
|
Response files
|
|
|
|
The command line is limited by DOS to a maximum of 128 characters. If
|
|
your list of options and file names will exceed this limit, you must
|
|
place your file names in a response file.
|
|
|
|
A response file is a text file that you make with a text editor. Since
|
|
you may already have prepared a list of the files that make up your
|
|
program for other Turbo C++ programs, OBJXREF recognizes several
|
|
response file types.
|
|
|
|
Response files are called from the command line using one of the following
|
|
options. The response file name must follow the option without an
|
|
intervening space (so, for example, you would type /Lresp, not /L resp).
|
|
|
|
You can specify more than one response file on the command line;
|
|
additional .OBJ and .LIB file names can precede or follow them.
|
|
|
|
|
|
Free-form
|
|
response files
|
|
|
|
You can create a free-form response file with a text editor. Just list
|
|
the names of all .OBJ and .LIB files needed to make your .EXE file.
|
|
|
|
Any file name listed in the response file without an extension is
|
|
assumed to be an .OBJ file. To use free-form files with OBJXREF, type
|
|
in each response file name on the command line, preceded by an @, and
|
|
separate it from other command-line entries with a space or tab:
|
|
|
|
@filename @filename ...
|
|
|
|
|
|
Project files
|
|
|
|
|
|
Page 26
|
|
|
|
OBJXREF
|
|
|
|
You can also use project files of the type generated by Turbo C++'s
|
|
integrated environment as response files. In the command line, precede
|
|
the project file name with /P, like this:
|
|
|
|
/Pfilename
|
|
|
|
If the file name does not include an explicit extension, a .PRJ extension
|
|
is assumed.
|
|
|
|
File names in the project file with a .C extension or no extension are
|
|
interpreted as specifying the corresponding .OBJ file. You need not
|
|
remove file dependencies specified inside parentheses; they are ignored
|
|
by OBJXREF.
|
|
|
|
Note
|
|
By itself, the list of files in a .PRJ file does not specify a complete
|
|
program--you must also specify a startup file (C0x.OBJ) and one or more
|
|
Turbo C++ library files (MATHX.LIB, EMU.LIB, and CX.LIB, for example).
|
|
In addition, you may need to use the /D option to specify the directory
|
|
where OBJXREF should look for your .OBJ files.
|
|
|
|
|
|
Linker response
|
|
files
|
|
|
|
Files in TLINK response-file format can also be used by OBJXREF. A linker
|
|
response file called from the command line is preceded by /L, like so:
|
|
|
|
/Lfilename
|
|
|
|
To see how to use one of these files, refer to Example 2 in the section
|
|
"Examples of how to use OBJXREF."
|
|
|
|
Page 27
|
|
|
|
OBJXREF
|
|
|
|
|
|
Sample OBJXREF
|
|
reports
|
|
|
|
Suppose you have two source files in your Turbo C++ directory, and want to
|
|
generate OBJXREF reports on the object files compiled from them. The source
|
|
files are called TEST1.C and TEST2.C, and they look like this:
|
|
|
|
/* test1.c */
|
|
int i1; /* defines i1 */
|
|
extern int i2; /* refers to i2 */
|
|
static int i3; /* not a public name */
|
|
extern void look(void); /* refers to look */
|
|
|
|
void main(void) /* defines main */
|
|
{
|
|
int i4; /* not a public name */
|
|
|
|
look(); /* refers to look */
|
|
}
|
|
|
|
/* test2.c */
|
|
#include <process.h>
|
|
extern int i1; /* refers to i1 */
|
|
int i2; /* defines i2 */
|
|
|
|
void look(void) /* defines look */
|
|
{
|
|
exit(i1); /* refers to exit... */
|
|
} /* and to i1 */
|
|
|
|
The object modules compiled from these source files are TEST1.OBJ and
|
|
TEST2.OBJ. You can tell OBJXREF what kind of report to generate about
|
|
these .OBJ files by entering the file names on the command line,
|
|
followed by a /R and a second letter denoting report type.
|
|
|
|
Page 28
|
|
|
|
OBJXREF
|
|
|
|
|
|
Note: The following examples show only useful parts of the output.
|
|
|
|
|
|
Report by public names (/RP)
|
|
|
|
A report by public names lists each of the public names defined in
|
|
the object modules being reported on, followed by the name of the
|
|
module in which it is defined.
|
|
|
|
If you enter this on the command line:
|
|
|
|
OBJXREF /RP test1 test2
|
|
|
|
OBJXREF generates a report that looks like this:
|
|
|
|
SYMBOL DEFINED IN
|
|
_i1 TEST1
|
|
_i2 TEST2
|
|
_look TEST2
|
|
_main TEST1
|
|
|
|
|
|
Report by module (/RM)
|
|
|
|
A report by module lists each object module being reported on, followed
|
|
by a list of the public names defined in it.
|
|
|
|
If you enter this on the command line:
|
|
|
|
OBJXREF /RM test1 test2
|
|
|
|
OBJXREF generates a report that looks like this:
|
|
|
|
MODULE: TEST1 defines the following symbols:
|
|
public: _i1
|
|
public: _main
|
|
MODULE: TEST2 defines the following symbols:
|
|
public: _i2
|
|
public: _look
|
|
|
|
|
|
Page 29
|
|
|
|
OBJXREF
|
|
|
|
|
|
Report by
|
|
reference (/RR)
|
|
|
|
A report by reference lists each public name with the defining module in
|
|
parentheses on the same line. Modules that refer to this public name are
|
|
listed on following lines indented from the left margin.
|
|
|
|
This is the default if no report option is specified.
|
|
|
|
If you enter this on the command line:
|
|
|
|
OBJXREF /RR C0 test1 test2 CS.LIB
|
|
|
|
OBJXREF generates a report that looks like this:
|
|
|
|
_exit (EXIT)
|
|
C0
|
|
TEST2
|
|
_i1 (TEST1)
|
|
TEST2
|
|
_i2 (TEST2)
|
|
_look (TEST2)
|
|
TEST1
|
|
_main (TEST1)
|
|
C0
|
|
|
|
|
|
Report by
|
|
external
|
|
references (/RX)
|
|
|
|
A report by external references lists each module followed by a list of
|
|
external references it contains.
|
|
|
|
If you enter this on the command line:
|
|
|
|
OBJXREF /RX C0 test1 test2 CS.LIB
|
|
|
|
OBJXREF generates a report that looks like this:
|
|
|
|
MODULE: C0 references the following symbols:
|
|
_main
|
|
MODULE: TEST1 references the following symbols:
|
|
_i2
|
|
_look
|
|
|
|
Page 30
|
|
|
|
OBJXREF
|
|
|
|
|
|
MODULE: TEST2 references the following symbols:
|
|
_exit
|
|
_i1
|
|
|
|
|
|
Report of module
|
|
sizes (/RS)
|
|
|
|
A report by sizes lists segment names followed by a list of modules that
|
|
define the segment. Sizes in bytes are given in decimal and hexadecimal
|
|
notation. The word uninitialized appears where no initial values are
|
|
assigned to any of the symbols defined in the segment. Segments
|
|
defined at absolute addresses in a .ASM file are flagged Abs to the
|
|
left of the segment size.
|
|
|
|
If you enter this on the command line:
|
|
|
|
OBJXREF /RS test1 test2
|
|
|
|
OBJXREF generates a report that looks like this:
|
|
|
|
These files were compiled using the large memory model.
|
|
|
|
TEST1_TEXT
|
|
6 (00006h) TEST1
|
|
6 (00006h) total
|
|
TEST2_TEXT
|
|
10 (0000Ah) TEST2
|
|
10 (0000Ah) total
|
|
_BSS
|
|
4 (00004h) TEST1, uninitialized
|
|
2 (00002h) TEST2, uninitialized
|
|
6 (00006h) total
|
|
|
|
|
|
Report by class
|
|
type (/RC)
|
|
|
|
A report by class type lists segment size definitions by segment class.
|
|
The CODE class contains instructions, DATA class contains initialized
|
|
data and BSS class contains uninitialized data. Segments
|
|
|
|
Page 31
|
|
|
|
OBJXREF
|
|
|
|
|
|
which do not have a class type will be listed under the notation No
|
|
class type.
|
|
|
|
If you enter this on the command line:
|
|
|
|
OBJXREF /RC C0 test1 test2 CS.LIB
|
|
|
|
OBJXREF generates a report that looks like this:
|
|
|
|
BSS
|
|
4 (00004h) TEST1
|
|
2 (00002h) TEST2
|
|
...
|
|
132 (00084h) total
|
|
CODE
|
|
6 (00006h) TEST1
|
|
10 (0000Ah) TEST2
|
|
16 (00010h) total
|
|
DATA
|
|
143 (0008Fh) C0
|
|
143 (0008Fh) total
|
|
|
|
|
|
Report of
|
|
unreferenced
|
|
symbol names (/
|
|
RU)
|
|
|
|
A report of unreferenced symbol names lists modules that define public names
|
|
not referenced in other modules. Such a symbol is either:
|
|
|
|
1. referenced only from within the defining module and does not need to be
|
|
defined as a public symbol (in that case, if the module is in C, the keyword
|
|
static should be added to the definition; if the module is in TASM, just
|
|
remove the public definition).
|
|
|
|
2. never used (therefore, it can be deleted to save code or data space).
|
|
|
|
If you enter this on the command line:
|
|
|
|
OBJXREF /RU test1 test2
|
|
|
|
OBJXREF generates a report that looks like this:
|
|
|
|
Page 32
|
|
|
|
OBJXREF
|
|
|
|
|
|
MODULE: TEST2 defines the unreferenced symbol _i2.
|
|
|
|
|
|
Verbose
|
|
reporting (/RV)
|
|
|
|
If you enter /RV on the command line, OBJXREF generates one report of each
|
|
type.
|
|
|
|
|
|
Examples of how
|
|
to use OBJXREF
|
|
|
|
These examples assume that the application files are in the current
|
|
directory of the default drive and that the Turbo C++ startup files
|
|
(C0x.OBJ) and the library files are in the \TURBOC\LIB directory.
|
|
|
|
|
|
Example 1
|
|
|
|
C>OBJXREF \turboc\lib\c0l test1 test2 \turboc\lib\cl.lib
|
|
|
|
In this example, the TEST1.OBJ and TEST2.OBJ files and the Turbo C++ startup
|
|
file \TURBOC\LIB\C0L.OBJ and the library file \TURBOC\LIB\CL.LIB are
|
|
specified. Since no report type is specified, the resulting report is
|
|
the default report by reference, listing public names and the modules
|
|
that reference them.
|
|
|
|
|
|
Example 2
|
|
|
|
C>OBJXREF /RV /Ltest1.arf
|
|
|
|
The TLINK response file TEST1.ARF contains the same list of files as the
|
|
command line in Example 1. The /RV option is specified, so a report of
|
|
every type will be generated. TEST1.ARF contains
|
|
|
|
\turboc\lib\c0l
|
|
test1 test2
|
|
test1.exe
|
|
test1.map
|
|
\turboc\lib\cl
|
|
|
|
Page 33
|
|
|
|
OBJXREF
|
|
|
|
Example 3
|
|
|
|
C>OBJXREF /RC B:c0s /Ptest1 @libs
|
|
|
|
The TC project file TEST1.PRJ specifies TEST1.OBJ and TEST2.OBJ. The response
|
|
file @libs specifies libraries on a disk in the B drive. TEST1.PRJ contains
|
|
|
|
test1
|
|
test2.c
|
|
|
|
The file LIBS contains
|
|
|
|
b:maths.lib b:emu.lib b:cs.lib
|
|
|
|
The startup and library files specified depend on the memory model and
|
|
floating point options used in compilation. The /RC causes a report of
|
|
class type to be output.
|
|
|
|
|
|
Example 4
|
|
|
|
C>OBJXREF /F /RV \turboc\lib\cs.lib
|
|
|
|
This example reports on all the modules in the Turbo C++ library file CS.LIB;
|
|
OBJXREF can produce useful reports even when the files specified do not make a
|
|
complete program. The /F causes all modules in CS.LIB file to be included in
|
|
the report.
|
|
|
|
|
|
OBJXREF error
|
|
messages and
|
|
warnings
|
|
|
|
OBJXREF generates two sorts of diagnostic messages: error messages
|
|
and warnings.
|
|
|
|
Page 34
|
|
|
|
OBJXREF
|
|
|
|
|
|
Error messages
|
|
|
|
Out of memory
|
|
OBJXREF performs its cross referencing in
|
|
RAM memory and may run out of memory even
|
|
if TLINK is able to link the same list of
|
|
files successfully. When this happens,
|
|
OBJXREF aborts. Remove memory resident
|
|
programs to get more space, or add more
|
|
RAM.
|
|
|
|
|
|
Warnings
|
|
|
|
WARNING: Unable to open input file <filename>
|
|
The input file filename could not be
|
|
located or opened. OBJXREF proceeds to
|
|
the next file.
|
|
|
|
WARNING: Unknown option - <option>
|
|
The option name option is not recognized
|
|
by OBJXREF. OBJXREF ignores the option.
|
|
|
|
WARNING: Unresolved symbol <symbol> in module <module>
|
|
The public name symbol referenced in
|
|
module module is not defined in any of
|
|
the .OBJ or .LIB files specified. OBJXREF
|
|
flags the symbol in any reports it
|
|
generates as being referenced but not
|
|
defined.
|
|
|
|
WARNING: Invalid file specification <filename>
|
|
Some part of the file name filename is
|
|
invalid. OBJXREF proceeds to the next
|
|
file.
|
|
|
|
WARNING: No files matching <filename>
|
|
The file named filename listed on the
|
|
command line or in a response file could
|
|
not be located or opened. OBJXREF skips
|
|
to the next file.
|
|
|
|
WARNING: Symbol <symbol> defined in <module1> duplicated in <module2>
|
|
Public name symbol is defined in modules
|
|
module1 and module2. OBJXREF ignores the
|
|
second definition.
|
|
|
|
|
|
Page 35
|
|
|
|
TURBO HELP UTILITY
|
|
------------------
|
|
|
|
This file explains how to use THELP.COM. THELP is a memory-resident
|
|
utility that provides online help for Turbo C++. If you are using
|
|
Turbo Debugger, for example, you can load THELP, then run Turbo
|
|
Debugger and get online help for Turbo C++ while you are debugging.
|
|
|
|
|
|
Table of Contents
|
|
-----------------
|
|
1. Starting THELP
|
|
2. Command-line Options Summary
|
|
3. Detailed Explanation of Keys Used When THELP is Active
|
|
4. Detailed Explanation of Command line Options
|
|
|
|
|
|
1. Starting THELP
|
|
------------------
|
|
|
|
Load THELP at the DOS command line simply by typing THELP. Make sure
|
|
the Turbo help file is in the current directory or use the /F command
|
|
line option (described below). The INSTALL program inserts the correct
|
|
path information in THELP.
|
|
|
|
Memory usage
|
|
THELP requires about 21K bytes.
|
|
|
|
Default hot key
|
|
The default hot key is Numeric-Keypad-5 (scan code 4ch,
|
|
shift state 00h).
|
|
|
|
If you are using SideKick Plus or SideKick 1.x, make sure you
|
|
load THELP before you load SideKick.
|
|
|
|
|
|
2. Command-line Options Summary
|
|
-------------------------------
|
|
|
|
USAGE: THELP [options]
|
|
|
|
Here is a summary of THELP's command-line options. If you use more
|
|
than one option, you must separate them with spaces.
|
|
|
|
/C#xx Select color: #=color number, xx=hex color value
|
|
/Fname Full path and file name of help file
|
|
/H,/?,? Display this help screen
|
|
/Kxxyy Change hot key: xx=shift state(hex), yy=scan code(hex)
|
|
/S+ Enable snow checking for video (useful for older CGA adapters).
|
|
/S- Disable snow checking for video (for snappier displays).
|
|
/U Remove THELP from memory
|
|
/W Write options to THELP.COM and exit
|
|
|
|
|
|
3. Detailed Explanation of Keys Used When THELP is Active
|
|
---------------------------------------------------------
|
|
|
|
Arrow keys: Move the cursor.
|
|
PgUp/PgDn: Move the cursor.
|
|
|
|
Shift-Arrow keys: Move the cursor while marking a block.
|
|
|
|
TAB: Moves the cursor to the next keyword.
|
|
Shift-TAB: Moves the cursor to the previous keyword.
|
|
|
|
HOME: Go to the beginning of the line.
|
|
END: Go to the end of the line.
|
|
|
|
ENTER: Select help entry for the item highlighted in the
|
|
current help screen.
|
|
|
|
ESC: End Help.
|
|
|
|
Shift-F1: Help Index. F1 from any help screen brings up
|
|
the Help Index. You can search for a specific keyword
|
|
incrementally. For example, you can find "printf" by
|
|
typing p r i. With each letter you type, the list
|
|
jumps to the keyword that starts with p, then to pr,
|
|
then to pri, etc.
|
|
|
|
ALT-F1: Displays in reverse order the last 20 screens you
|
|
have reviewed.
|
|
|
|
CTRL-P key: Pastes the marked block or the example text into
|
|
the application.
|
|
|
|
|
|
|
|
4. Detailed Explanation of Command-line Options
|
|
------------------------------------------------
|
|
|
|
|
|
/C#xx Select color: #=color number, xx=hex color value
|
|
|
|
There are twelve possible colors, described as follows:
|
|
|
|
0 = Color border attribute
|
|
1 = Monochrome border attribute
|
|
2 = Color text attribute
|
|
3 = Monochrome text attribute
|
|
4 = Color keyword attribute
|
|
5 = Monochrome keyword attribute
|
|
6 = Color selected keyword attribute
|
|
7 = Monochrome selected keyword attribute
|
|
8 = Color example text attribute
|
|
9 = Monochrome example text attribute
|
|
A = Color marked block attribute
|
|
B = Monochrome marked block attribute
|
|
|
|
The color numbers for a standard IBM-compatible Color Display are
|
|
as follows:
|
|
|
|
First Digit (Background) Second Digit (Foreground)
|
|
|
|
0 -- Black 0 -- Black
|
|
1 -- Blue 1 -- Blue
|
|
2 -- Green 2 -- Green
|
|
3 -- Cyan 3 -- Cyan
|
|
4 -- Red 4 -- Red
|
|
5 -- Magenta 5 -- Magenta
|
|
6 -- Brown 6 -- Brown
|
|
7 -- Grey 7 -- Grey
|
|
8 -- Intense Black
|
|
ORing the color value with 9 -- Intense Blue
|
|
Hex 80 produces a blinking A -- Intense Green
|
|
color unless blinking has been B -- Intense Cyan
|
|
disabled. C -- Intense Red
|
|
D -- Intense Magenta
|
|
E -- Intense Brown (Yellow)
|
|
F -- Intense Grey (White)
|
|
|
|
On monochrome monitors, the attribute values can differ widely,
|
|
so some experimentation would be needed.
|
|
|
|
|
|
/Fname Full path and name of help file
|
|
|
|
The name that follows the /F option should be the full
|
|
drive/directory path name of the help file to use; e.g.,
|
|
|
|
THELP /FC:\TP\TURBO.HLP
|
|
THELP /FC:\TURBOC\TCHELP.TCH
|
|
|
|
By default, THELP looks for the help file on the logged drive and
|
|
directory.
|
|
|
|
|
|
/H,/?,? Display help screen
|
|
|
|
This option displays a summary of THELP's command-line options
|
|
|
|
|
|
/Kxxyy Change hot key: xx=shift state, yy=scan code
|
|
|
|
Virtually any shift state/scan code combination may be selected. A
|
|
quick summary of some common shift-states and scan codes follows:
|
|
|
|
Shift States (may be OR'ed together)
|
|
|
|
right shift 01h
|
|
left shift 02h
|
|
control 04h
|
|
alt 08h
|
|
|
|
Scan Codes
|
|
|
|
A --- 1eh N --- 31h 0 --- 0bh F1 --- 3bh
|
|
B --- 30h O --- 18h 1 --- 02h F2 --- 3ch
|
|
C --- 2eh P --- 19h 2 --- 03h F3 --- 3dh
|
|
D --- 20h Q --- 10h 3 --- 04h F4 --- 3eh
|
|
E --- 12h R --- 13h 4 --- 05h F5 --- 3fh
|
|
F --- 21h S --- 1fh 5 --- 06h F6 --- 40h
|
|
G --- 22h T --- 14h 6 --- 07h F7 --- 41h
|
|
H --- 23h U --- 16h 7 --- 08h F8 --- 42h
|
|
I --- 17h V --- 2fh 8 --- 09h F9 --- 43h
|
|
J --- 24h W --- 11h 9 --- 0ah F10 --- 44h
|
|
K --- 25h X --- 2dh
|
|
L --- 26h Y --- 15h
|
|
M --- 32h Z --- 2ch
|
|
|
|
|
|
Enhanced Keyboards only (may not work with all computers, keyboards)
|
|
|
|
F11 --- 57h
|
|
F12 --- 58h
|
|
|
|
/S Controls snow-checking logic for video.
|
|
|
|
Some older CGA have a tendency to produce a "snow" effect when
|
|
software tries to write directly into their memory space. If you see
|
|
this snow you should start up THELP with /S+ to enable the snow
|
|
checking code. You may want to use the /W switch (see below) to make
|
|
it permanent. Snow checking takes time and it is better to live
|
|
without it. To disable snow checking use /S-; this is the default.
|
|
|
|
/U Remove THELP from memory
|
|
|
|
This option removes THELP from memory. If other TSRs have been
|
|
loaded after THELP, make sure to remove them before removing
|
|
THELP.
|
|
|
|
|
|
/W Write Options to THELP.COM and exit
|
|
|
|
The /W parameter creates a new version of THELP that uses the
|
|
options you desire as a default. All options may be specified
|
|
and made "permanent."
|
|
|
|
Page 36
|
|
|
|
TRIGRAPH
|
|
|
|
Trigraphs are three-character sequences that replace certain
|
|
characters used in C that are not available on some keyboards.
|
|
Translating trigraphs in the compiler would slow compilation down
|
|
considerably, yet trigraph support is required by ANSI C. So
|
|
Turbo C++ provides a filer named TRIGRAPH.EXE to handle trigraph
|
|
sequences when you need to. The syntax for invoking this program is
|
|
|
|
TRIGRAPH [-u] <filespec> [<filespec> ...]
|
|
|
|
The following table shows the trigraph sequences that TRIGRAPH.EXE
|
|
recognizes:
|
|
|
|
===========================
|
|
Trigraph Character
|
|
===========================
|
|
|
|
??= #
|
|
??( [
|
|
??) ]
|
|
??< {
|
|
??> }
|
|
??/ \
|
|
??' ^
|
|
??! |
|
|
??- ~
|
|
|
|
TRIGRAPH.EXE works in two directions: It can convert all trigraphs
|
|
to their single-character representation, and it can convert single
|
|
characters to their trigraph representation. Ordinarily, TRIGRAPH.EXE
|
|
converts trigraphs to single characters. You can specify the inverse
|
|
conversion with the -u (undo) command-line option, which must come
|
|
before any file name on the command line.
|
|
|
|
TRIGRAPH.EXE accepts any number of file specifiers, including wildcards,
|
|
on the command line. For each file specified, it creates a backup copy
|
|
of the file with the original file name and an extension .BAK, and then
|
|
creates a new file with the original file name and the appropriate
|
|
conversions performed. For example,
|
|
|
|
trigraph test.c test1.c
|
|
|
|
removes all trigraphs from the two files TEST.C and TEST1.C, and creates
|
|
backup files TEST.BAK and TEST1.BAK.
|
|
|
|
As another example, the following command inserts trigraphs into all the
|
|
files with the extension .C, and makes backup copies of all those files,
|
|
giving them the extension .BAK.
|
|
|
|
trigraph -u *.c
|
|
|
|
Page 37
|
|
|
|
Page 38 through Page 40
|
|
___________________________________________________________________
|
|
|
|
INDEX
|
|
|
|
Note: This index does not include entries for PRJCNVT, THELP, or TRIGRAPH.
|
|
|
|
ASCII characters files
|
|
|
|
[ ] GREP operator 15 files
|
|
$ GREP operator 15 compiling 10
|
|
* GREP operator 15 -P option (source file names
|
|
+ GREP operator 15 and line numbers) 9
|
|
. GREP operator 15 wildcards and 9
|
|
\ GREP operator 15
|
|
^ GREP operator 15
|
|
D
|
|
-d GREP option (directories) 12
|
|
B /D OBJXREF option (directory)
|
|
BGIOBJ (graphics converter) 1-8 23
|
|
advanced features 5 debugging
|
|
command-line syntax 2, 5 include files 9
|
|
components 5 macros 9
|
|
example 3 directories
|
|
graphics.h and 6 CPP (preprocessor) 9
|
|
options GREP option 12
|
|
destination file 5 .OBJ files 23
|
|
/F 5
|
|
file name 5
|
|
file name (/F) 4 E
|
|
public name 5 errors
|
|
segment class 6 linker
|
|
segment name 5 graphics drivers and fonts
|
|
source file 5 4
|
|
OBJXREF (list) 34
|
|
examples
|
|
C OBJXREF 28-34
|
|
-c GREP option (count only) 12
|
|
case sensitivity
|
|
GREP option 12 F
|
|
/F BGIOBJ option 5
|
|
/F BGIOBJ option (far routines)
|
|
4
|
|
command line /F OBJXREF option (include full
|
|
syntax library) 24
|
|
CPP 9 files
|
|
configuration files destination
|
|
CPP (preprocessor) and 9 BGIOBJ 5
|
|
TCC file 9 linker response, used by OBJXREF
|
|
CPP (preprocessor) 9-10 27, 33
|
|
command-line options and macros
|
|
syntax 9 expanded 9
|
|
directory 9 matching
|
|
example of use 10 GREP option 12
|
|
|
|
Page 41
|
|
|
|
files linker
|
|
|
|
files
|
|
names -o (UNIX output format) 12
|
|
printing (GREP) 13 precedence 13
|
|
output, generated by OBJXREF regular expression search
|
|
24 (-r) 12
|
|
searching 10-20 UNIX format (-o) 12
|
|
source updating (-u) 12
|
|
BGIOBJ 5 -v 13
|
|
fonts -v (nonmatching lines) 13
|
|
adding to graphics library 2 verbose 13
|
|
files, converting to .OBJ word search (-w) 13
|
|
files 2 search strings 14
|
|
included with Turbo C++ 3 white space in 16
|
|
linker errors and 4 using 11
|
|
linking 1-8 wildcards and 16
|
|
registering 2, 6 GREP.COM 14
|
|
stroked 1-8
|
|
linking 1
|
|
H
|
|
header files
|
|
G graphics.h 6
|
|
graphics drivers help
|
|
adding to graphics library 2 GREP (file searcher) 11
|
|
converting to .OBJ files 2, OBJXREF 22
|
|
1-8
|
|
included with Turbo C++ 3
|
|
linker I
|
|
errors and 4 -i GREP option (case
|
|
linking 1 sensitivity) 12
|
|
registering 2, 6 /I OBJXREF option (case
|
|
graphics.h (header file) sensitivity) 23
|
|
BGIOBJ and 6 include files
|
|
GRAPHICS.LIB debugging 9
|
|
adding to 2
|
|
GREP (file searcher) 10-20
|
|
examples 16 L
|
|
files to search 16 -l GREP option (list matching
|
|
help 11 files) 12
|
|
literal character 15 /L OBJXREF command (linker
|
|
matches 15 response file) 27
|
|
operators 14 libraries
|
|
optimizing use of 14 files 21
|
|
options contents of 21
|
|
case sensitivity (-i) 12 graphics
|
|
count only (-c) 12 adding driver and font
|
|
default 12, 14 files to 2
|
|
discussion 11 OBJXREF
|
|
file names (printing) 13 including all 24
|
|
-i (case sensitivity) 12 lines
|
|
line numbers (-n) 12 numbering
|
|
lines, nonmatching (-v) 13 printing (GREP) 12
|
|
list matching files (-l) 12 linker
|
|
-n (line numbers) 12 error: segment exceeds 64K 4
|
|
|
|
Page 42
|
|
|
|
linker OBJXREF
|
|
|
|
linker
|
|
response files options 21
|
|
used by OBJXREF 27, 33 /N (limit information) 25
|
|
linking /RV 25
|
|
graphics drivers 1 /RC 31
|
|
control 23
|
|
directories (/D) 23
|
|
M /F (include full library)
|
|
macros 24
|
|
CPP (preprocessor) and 9 ignore case (/I) 23
|
|
debugging 9 include full library (/F)
|
|
expanded 24
|
|
list of 9 include zero-length segment
|
|
preprocessing 9 definitions (/Z) 24
|
|
preprocessor 9 list file names (/V) 24
|
|
modified reports 25
|
|
/O (output file) 24
|
|
N reports 24
|
|
-n command-line compiler option by class type (/RC) 25,
|
|
CPP (preprocessor) and 9 31, 34
|
|
-n GREP option (line numbers) by external reference (/
|
|
12 RX) 25, 30
|
|
/N OBJXREF option (limit by module (/RM) 25, 29
|
|
reports) 25 by public names (/RP) 25,
|
|
29
|
|
by reference (/RR) 25,
|
|
O 30, 33
|
|
-o GREP option (UNIX format default type 33
|
|
output) 12 examples 28-33
|
|
/O OBJXREF option (output file of all types (/RV) 25
|
|
for reports) 24 of module sizes (/RS) 25,
|
|
.OBJ files 31
|
|
converting font files into 2 of unreferenced symbol
|
|
converting graphics drivers names (/RU) 25, 32
|
|
files into 2 output file (/O) 24
|
|
defined 21 verbose (/RV) 25, 33, 34
|
|
directories 23 /V (verbose output) 24
|
|
names 21 verbose report (/RV) 33
|
|
response files and 26 /Z (include zero-length
|
|
object modules segment definitions) 24
|
|
defined 21 project files
|
|
names 21 as response files 27
|
|
OBJXREF (object module cross- project files (/P) 27
|
|
referencer) 21-35 reports 22
|
|
directories 23 examples 28-33
|
|
error messages 34 modifying 25
|
|
examples of reports 29, 30, output file for (/O) 24
|
|
31, 32, 33 response files 21, 26
|
|
help 22 example 33
|
|
/L command (linker response linker 27
|
|
files) 27 warnings 35
|
|
linker files wildcards and 22
|
|
as response files 27
|
|
|
|
Page 43
|
|
|
|
operators /Z OBJXREF option
|
|
|
|
operators /RV OBJXREF option (reports) 25
|
|
GREP 14 /RX OBJXREF option (reports) 25
|
|
output file
|
|
generated by OBJXREF 24
|
|
S
|
|
searches
|
|
P text files 10-20
|
|
-P CPP (preprocessor) option standalone utilities
|
|
(source file names and line list 1
|
|
numbers) 10 strings
|
|
/P OBJXREF command (project searching for
|
|
files) 27 as expressions (GREP) 12
|
|
precedence in text files 10-20
|
|
GREP options 13 syntax
|
|
project files CPP 9
|
|
converting Page A
|
|
OBJXREF and 27
|
|
used by OBJXREF 34
|
|
public names T
|
|
defined 21 text files
|
|
searching 10-20
|
|
TLINK (linker)
|
|
R response files
|
|
-r GREP option (regular OBJXREF and 27
|
|
expression search) 12 TURBOC.CFG 9
|
|
/RC OBJXREF option (report) 31
|
|
/RC OBJXREF option (reports) 25
|
|
registerbgidriver (function) U
|
|
BGIOBJ and 2, 6 -u GREP option (updating) 12
|
|
registerbgifont (function) UNIX
|
|
BGIOBJ and 2, 6 format (GREP) 12
|
|
registerfarbgidriver (function)
|
|
BGIOBJ and 4, 5, 6
|
|
registerfarbgifont (function) V
|
|
BGIOBJ and 4, 5, 6 -v GREP option (nonmatching
|
|
response files lines) 13
|
|
file-name extensions and 26 /V OBJXREF option (verbose
|
|
formats 26 output) 24
|
|
free-form 26
|
|
example 34
|
|
linker files and 27 W
|
|
OBJXREF and 21, 26, 27 -w GREP option (word search) 13
|
|
example 33 wildcards
|
|
project files and 27 CPP (preprocessor) and 9
|
|
TLINK, OBJXREF and 33 OBJXREF and 22
|
|
/RM OBJXREF option (reports) 25
|
|
/RP OBJXREF option (reports) 25
|
|
/RR OBJXREF option (reports) 25 Z
|
|
/RS OBJXREF option (reports) 25 -z GREP option (verbose) 13
|
|
/RU OBJXREF option (reports) 25 /Z OBJXREF option (include
|
|
zero-length segment
|
|
definitions) 24
|
|
|
|
Page 44
|
|
|
|
Appendix A: Project conversion utilities
|
|
|
|
=============================
|
|
PRJCNVT
|
|
=============================
|
|
|
|
Converts Turbo C 1.0, 1.5 or 2.0 project files to Turbo C++
|
|
project files.
|
|
|
|
Syntax:
|
|
|
|
PRJCNVT infile[.prj] [outfile[.prj]]
|
|
or
|
|
PRJCNVT infile[.tc] [outfile[.prj]]
|
|
|
|
If you specify a configuration file as input, it must have a
|
|
project file defined. The compiler options in the .CFG file
|
|
and the dependencies in the Turbo C 2.0 .PRJ file will be placed
|
|
into the corresponding Turbo C++ .PRJ file.
|
|
|
|
If you specify a project file as input, only dependencies
|
|
information will be placed into the Turbo C++ .PRJ file. All
|
|
compiler options will remain default.
|
|
|
|
If you don't provide an extension, .TC is assumed. If PRJCVNT
|
|
can't find a .TC file, it looks for a .PRJ file.
|
|
|
|
The default name of the output file is the base name of the
|
|
input file with the extension .PRJ. For example, STARS.TC will
|
|
turn into STARS.PRJ. If the input and the output name are the
|
|
same, the old file will be renamed to a .BAK file.
|
|
|
|
=============================
|
|
PRJ2MAK
|
|
=============================
|
|
|
|
This utility converts a .PRJ file to a .MAK file (containing all
|
|
relevant switches and settings) for use with the MAKE utility.
|
|
These files can be re-used without accessing the Programmer's
|
|
Platform (the IDE).
|
|
|
|
Syntax:
|
|
|
|
PRJ2MAK <project-file>[.PRJ] [<makefile>[.MAK] [<config>[.CFG]]]
|
|
|
|
The extension for project file name is assumed to be .PRJ unless
|
|
you specify otherwise.
|
|
|
|
The default name for the new MAKE file is the base file name of the .PRJ
|
|
file with the extension .MAK. The default name for the new .CFG file is
|
|
the base file name of the .MAK file with the extension .CFG.
|
|
|
|
To change the names of the makefile and cfg files, just specify
|
|
different names on the command line.
|
|
|
|
Examples of valid execution:
|
|
|
|
PRJ2MAK MYPROJ.PRJ MAKEFILE.MAK TURBOC.CFG
|
|
This execution will cause a makefile called makefile.mak to be
|
|
created, and a config file called turboc.cfg.
|
|
|
|
PRJ2MAK MYPROJ.PRJ MAKEFILE.MAK
|
|
This execution will cause a makefile called makefile.mak to be
|
|
created, and a config.file called myproj.cfg.
|
|
|
|
PRJ2MAK MYPROJ
|
|
This execution will cause a makefile called myproj.mak to be
|
|
created, and a config file called myproj.cfg.
|
|
|
|
The makefile that PRJ2MAK creates will set up a redirection
|
|
file for the linker response file, and for the .CFG file. They
|
|
will be created when the user runs the makefile which is generated.
|
|
The linker response file that is generated is a temporary file,
|
|
and will be deleted. The .CFG file will be left as a file on disk.
|
|
|
|
PRJ2MAK will place the following options into the .CFG file:
|
|
|
|
Those that are not default to the Turbo C++ command-line compiler
|
|
AND have been selected in the project file.
|
|
|
|
PRJ2MAK will attempt to locate all of the libraries to be included,
|
|
through the "Library Directories" path that is specified in the .PRJ
|
|
file. A comment will be written to the screen noting any of the files
|
|
which cannot be located. When this happens, a special make dependency
|
|
will be generated at the top of the makefile. When the makefile is
|
|
run, it will print out the listing of files which were not be located,
|
|
and then the makefile will terminate. You may correct the library
|
|
locations in the makefile and delete this "comment" dependency in
|
|
order to continue.
|
|
|
|
|
|
Page A
|