Category : Recently Uploaded Files
Archive   : OXCC1411.ZIP
Filename : CFAR.DOC
A .cff archive is maintained with 'cfar' which works in a similar manner
to ar. The notable difference about .cff archives is their ability to hold
multiple libraries and multiply defined symbols. The user can store up to
4096 libraries for each of 16 library types. A library contains .o files
in a.out format. Symbols may not be multiply defined within one library.
Since .cff filesystems have database characteristics, the entries are
automatically cross indexed in various ways and provide very fast access
to a particular module or symbol. Nothing precludes the user from combining
archival and other data within the same .cff file. .o files are stored
as data chunks within libraries, they have a sibling .x chunk which is a packet
of globally defined symbols in the .o chunk and a sibling .t chunk which
contains the external filetime and origin path.
Standard (reserved) symbols in the root directory of a .cff archive.
ArVeR version number of archive
SN0 a serial number supplier
SN1 ditto
SN2 ditto
Standard (reserved) subdirectories within .cff archives:
'/msyms' cross indexed symbols
'/ipaths' cross indexed paths to .o files in libraries
'/qipaths' quick access path info
'/origins' paths to outside origns of the archived .o files
'/qorigins' quick access origin info
'/ltype0' library types 0
'/ltype0/lib0' library 0 type 0
'/ltype0/lib1' library 1 type 0
...
'/ltype0/lib4095' library 4095 type 0
...
'/ltype15' library types 15
'/ltype15/lib0' library 0 type 15
...
'/ltype15/lib4095' library 4095 type 15
Currently, the following library types are in use:
Type
0 random collections of modules such as libc.a libm.a etc.
1 class libraries (a single class occupies a single .o file)
2 subsystem libraries (a single subsystem occupies a single .o file)
3-7 to be defined
4 source code for the random modules
5 source code for classes
6 source code for subsystems
7-15 to be defined
The primary use of .cff archives is to provide quick access for dynamic
linking. In the future they will hold source code and diffs.
Usage: cfar [-acdflmrstvxMS] archive [files ...]
Switch ------ Meaning
a Add file , do not overwrite
r Replace/Add file
d Delete file
x Extract 'file'
f Freshen the archive (replace outdated files)
c Check input files against library for clashes
t# Set libtype # 0=module, 1=class, 2=subsystem, max:15
l# Place file in libnum #, max:4095
s 'file' is a symbol name not a file name (for extract/delete)
m Print archive map
M Print a .bat file which would recreate the archive
v Verbose
S Shrink archive
examples:
cfar -rt1l6 /lib/oxlib.cff *.o // enter a bunch of .o files into
// library 6 type 1 (classes)
cfar -dl2S /lib/oxlib.cff func.o // delete func.o from library 2
// type 0 and shrink the archive
cfar -mv /lib/oxlib.cff > oxlib.map // print a verbose map of the contents
// oxlib.cff and store it in oxlib.map
cfar -xt2l5s /lib/oxlib.cff _main // extract the module in library 5
// type 2 which defines the symbol
// _main
cfar -al4 /lib/oxlib.cff libc.a // add libc.a to library 4 type 0
cfar -cl4 /lib/oxlib.cff libc.a // check libc.a against the contents
// of library 4 and print any symbol
// clashes
cfar -rv /lib/oxlib.cff libm.a // add/replace the contents of libm.a
// to library 0 type 0, verbosely
cfar -f /lib/oxlib.cff // freshen all the entries
cfar -M /lib/oxlib.cff // print a .bat file which would
// recreate the archive
Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!
This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.
But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/