Skeletal instructions for using the contents of this tar file (for libupd 1.3 & 1.3a WJS. Jul 10) The installation procedure (below) for libupd 1.3a has not changed from the libupd 1.0 installation procedure ===== libupd 1.3a implements comment lines in .objects and .remoteobjects files. If a line in one of those files has a # in column 1, that line is ignored. Also ignored are empty lines and lines consisting entirely of whitespace. Note that this modification breaks things if an object was deliberately named with # as its first character. Note also that not all routines that read .objects and/or .remoteobjects use the library routine. In particular, dir does not use the library routines to read .remoteobject files. libupd 1.3a fixes a bug in path_info_routines.c that manifested itself as problems with parse_path_info as called from info v 4. ===== libupd 1.3 fixes a typo in _makefile_.jgofs libupd 1.3 contains a new routine; varnames_in_selection. libupd 1.1d separated the parsing subsystem from the outer module. In libupd 1.3, the selection parsing subsystem has been further split into separate parsing and testing modules, and these modules have been renamed. THE OLD MODULE parse.o MUST BE REMOVED FROM THE LIBRARY if it is present, either by use of the command ar -d jgofsroot/src/lib/jgofs.a parse.o or anything else that accomplishes the same aim (such as the removal of the whole library via rm jgofsroot/src/lib/jgofs.a ) The presence of the parse.o module can be determined with the ar "table of contents" command ar -t jgofsroot/src/lib/jgofs.a Don't confuse the HTParse.o module with the parse.o module. They are different things. It is recommended that the replaced files, parse.c and parse.o, be removed from jgofsroot/src/lib. The routine un_trigram has been modified so that it will refuse to untrigram a binary 0 (%00). Because the c language treats a binary 0 as a string terminator, all characters following an untrigrammed binary 0 would be ignored, which is unlikely to be the user intent. Several attempted security compromises attempt to take advantage of this peculiarity. ===== Files: This tar file contains most of the files released with jgofs 1.5, as well as files which seem to have ended up in jgofs.a anyway. The only 2 .c files I know of that are in jgofs.a and NOT in libupd are HTParse.c and HTString.c. A list of the libupd .c files is included at the end of this file. Note: although HTParse.c and HTString.c are not distributed in libupd, the distributed make file will attempt to make them. This tar file also contains 2 "stub" files containing rudimentary err routines. Most of the jgofs.a routines now call err to report their problems. It is intended that main programs calling the library provide an err entry to handle problems reported by the library (as well as, presumably, their own). For old programs whose source we may not want to change, err_stub.o or err_stub_methods.o can be added into the appropriate make file. err_stub_methods should be used w/inners; err_stub w/stand-alone programs. See their .c files for more comments, etc. _makefile_.jgofs can be used to build a test jgofs.a file where desired. A sample that builds ./jgofs.a on the globec data server is included as c shell script make_testjgofs.csh. The name, directory, or both, of the output library can be changed by specifying LIBNAME, LIBDIR, or LIB, respectively, on the make command. HTTCP.c is included as httcp.c. The make file renames things appropriately if the dates work. If HTTCP.c "arrived" via cp, its date may be newer than that of httcp.c in a tar file, despite the contents being older. This tar file also contains core.h, parse.h, path_info_routines.h, query_string_routines.h and utils.h. The make file included in this tar file will place these .h files in ../include (unless existing files in ../include are newer) To complete a usable library, the system maintainer is responsible for the creation and contents of ../include/default.h and ../include/inner.h There are test and documentation files for path_info_routines that are not included in libupd. They are included in the path_info package, typically installed on option servers. The path_info package may be installed on a data server without negative effect (other than installing some unused main programs). Most straightforward way to update jgofs.a & various include files: 1) cd to the library directory (usually jgofsroot/src/lib) 2) backup this directory to your satisfaction. 3) backup ../include to your satisfaction. 4) unpack this tar file. It will replace versions of .c and .h files, as well as replace earlier versions of support files that may have been included in previous libupd releases 5) check the dates on httcp.c (which came from the tar file) and HTTCP.c. If the content of httcp.c is in fact newer (eg, no local changes have been made to HTTCP.c), be sure the httcp.c date is more recent (touch httcp.c if necessary) The description of the tar file contents (above) gives another way the dates can be a problem. 6) compare _makefile_.jgofs with makefile.jgofs Note that _makefile_.jgofs compiles everything w/debug support You may wish to change this The 2 make files should be functionally the same unless: a) a file in your jgofs.a library is not included in libupd b) a file in your jgofs.a library is compiled differently from the way libupd compiles its version I believe a) is not a fatal problem because my understanding of ar, the program which builds jgofs.a, is that with the switches typically set in jgofsroot/build-env.pl, ar will update jgofs.a, overwriting modules if needed. b) is a problem 7) replace makefile.jgofs with _makefile_.jgofs after suitable modification 8) If upgrading from libupd 1.1d, 1.2, or 1.2a, ar -d jgofs.a parse.o (See libupd 1.3 release notes) If unsure of the previous libupd version, issue the ar -d command. If ar -d was not needed, it will fail with a "not found" message 9) jgofsroot/build.pl lib or jgofsroot/build-env.pl -sh > /tmp/envvars source /tmp/envvars make -f src/lib/makefile.jgofs library .c files included in libupd 1.3a dct.c httcp.c jdb.c jgofs_selection_parser.c jgofs_selection_tester.c outer_utils.c path_info_routines.c query_string_routines.c startchild.c utils.c varnames_in_selection.c