- Xref Version 3.3 - HISTORY.TXT - Changes and updates: Version 2.01 o Did some tweaking, and reduced the program size about 35% and increased execution speed about 15%. o Fixed a small bug in the function tree output. Also, function names are now output in the order they are referenced in the function. Version 3.0 o Fixed a small bug that sometimes tagged a global variable's type in a function listing as being "unknown" when it really wasn't. o C xref now looks for the "res_word.txt" file in the same directory it is run from. Before it looked in the default directory. o Removed the limit on the number of include files deep that C xref will open. It will now open files until the system runs out of handles, at which time it tells you that it is unable to open the file. o Improved (at least I think so) the output of the local and global variables in the "function" section. Got rid of the module name where a global variable originates (I didn't think that it was really necessary here), and made the line numbers for the local variables line-up like the global variables do. o Improved the "function tree" output section by making it put a blank line between function calls that fall directly below each other in the same column. o C xref can now cross-reference many more modules at one time. C xref creates a temporary file in the directory that C xref is run from, and saves most of the function's information in it, which frees a lot of memory. (I cross-reference over 1/2 meg. of source code without running out of memory.) If you still run out of memory, and you are cross- referencing header files, try it without the headers (header files make a lot of global declarations, which are kept in memory and are not saved to the temporary file. This can use a lot of memory). o Struct variables are now labeled with their tag type, when possible, instead of [struct]. HISTORY Information Page 1 - Xref Version 3.3 - HISTORY.TXT - o The only C++ compatiblity enabled at this time is that C++ keywords and comments (i.e. "//") are ignored. C++ compatiblity will be added in a future update. o The RES_WORD.TXT file has been updated to include all ansi C and C++ key words. o If a function name is over 20 characters long, then it is truncated when it is output in the "CALLS" section of the "FUNCTION" report. When this occures, the truncated name will be followed with three elispses. [i.e. {filename.c}Very_very_long_na...()] o You can now format the output in the verbose function listing with the '-f' command. The command recognizes C's standard formatting commands, '\f' and '\n'. A space must separate the command and the format string, and no spaces should appear in the formatting string. For example: -f \n\n\n This command would output three newlines after each function's cross- reference. Version 3.0a o A list of a function's input parameters is now included in the verbose cross-reference listing. It follows the "CALLS" section. o Functions that have no line of origin are no longer referenced in the verbose listing or the function tree output. (They continue to be referenced in the function summary, however.) o The wild card character "*" can now be used in the RES_WORD.TXT file. Operates the same as with DOS filenames. HISTORY Information Page 2 - Xref Version 3.3 - HISTORY.TXT - Version 3.1 o If a header file command line included a path name (i.e. #include "c:\text\myheader.h") C xref ignored it. Fixed that. C xref will now use the path if given. o In the same vein, added a new command (-p path;path;...) that lets you input alternate search paths. These paths will be searched when looking for C modules and header files. o Eliminated the "P" (path names) command that follows the "-i" command. No longer needed because of above. o Added the "-o" command. This command allows you to output in the verbose and tree sections those functions that have no line-of-origin. o To save memory (and loading time) when not cross- referencing Windows' programs I split the RES_WORD file into a "C" file (RES_WORD.TXT) and a "Windows" file (WIN_RES.TXT). The WIN_RES file is only loaded when the "-m" command is entered (the RES_WORD file is always loaded). The "-m" command also improves the tree output for Windows' programs. The calling hierarchy is output for the "WinMain" procedure and for any procedure name(s) that are assigned to a WNDCLASS structure (i.e. wndcls.lpfnWndProc = WindowProc). o Changed the program's name to "Xref," because I discovered that another cross-reference program uses the name "C xref." Version 3.1a o Corrected a small bug that treated the directive "error" as a type. This directive was from an older version of Borland C++. Deleted it from the RES_WORD.TXT file. o Fixed a bug where Xref failed to handle a function declaration on it's line-of-origin correctly if anything but a line-feed or a comment followed it. HISTORY Information Page 3 - Xref Version 3.3 - HISTORY.TXT - Version 3.2 o Added a DOS Extender. Xref will now address up to 4 gigabytes of memory. (Requires a '386 processor or higher.) o I now send a printed manual to registered users. o Xref will now read a text file (using the "-c" command) and execute the commands that it finds there as if they were entered on the command line. o You may not care for the characters that I used to separate the different sections, so I've added two commands to let you choose your own. The "-e" and the "-d" commands let you choose replacements for the equal and dash characters, respectively. o In a variable's line number cross-reference listing, an "*" is placed before those line numbers in which the variable is to the left of an assignment operator (i.e. "=" or "+=", etc.). o Fixed a bug in when dealing with the "define" statement. If a "(", "{" or "[" was redefined, Xref "knew" it was in a define statement, but it also thought it should wait for the appropriate closing character. o The time and date that a module was last modified are now printed in the File Summary Section, following the file name. Version 3.2a o Had to compensate for a flaky library call in my C compiler that sometimes causes an error in the tree output section when cross-referencing a large number of modules. o Fixed a bug in the variable output section that listed a line number twice if it appeared more then once on a line, and it was assigned a value on that line (e.g.: Var [int] *23 23). o Added two status lines that give the total number of global variables, and functions in the modules cross- referenced. They appear at the ends of the Global Variables/Constants, and the Function Summary sections. o Added the "r" command to read the header and module names from a MAKE file. Syntax is: -r MakeFileName. HISTORY Information Page 4 - Xref Version 3.3 - HISTORY.TXT - Version 3.2b/3.3 o Changed the date format on the output for both the header and the file's modified date. o Fixed a bug that caused Xref to handle struct arrays incorrectly. Xref saw "StrArray[ 1 ].iElem" as two variables: "StrArray" and "iElem." It was mislead by the "[]"s. o Some assignments to variables were missed (i.e. no `*' appeared before the line number in the cross-reference listing for a variable) because of whitespace. o Used "feof" which doesn't work very well (at least in Borland C), which caused Xref to sometimes read past the end-of-file (it read the last line twice). Got rid of "feof." o Callback functions are now referenced when they appear in a function call's parameter list (i.e. with a common Windows 3.1 API: MakeProcInstance( CallBack, instance ) the reference to "CallBack" will now appear in the "USERS" section. o A reference to a function's prototype will no longer appear in the "USERS" section. A line has been added under the function's name in the "Verbose list of functions" section. It looks like: Prototype : {module name} : line number The "module name" is the module that the functions prototype appears in, and the "line number" is on what line it can be found. o Fixed a possible bug: some internal program settings were not reinitialized after xrefing one module and affect the next module. They are now reset after each module is finished being xrefed. o Fixed a problem Xref had with typedefing functions. Xref would save identifiers (if there are any) that followed the functions type as new types as well (i.e. with (*foobar)( id1, id2 ), "id1" and "id2" were also saved as new types.) o Fixed an internal flag that had to do with being between "( )" on the current line (some things are handled differently if they are between parenthesizes). Sometimes Xref would miss the closing ")" and continue to think that it was between parenthesizes, and then HISTORY Information Page 5 - Xref Version 3.3 - HISTORY.TXT - things would not work as they should (header files might be seen as struct types, etc.). HISTORY Information Page 6