Annotation of coherent/d/usr/lib/ndir/libndir/INSTALL, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3:                        INSTALLATION INSTRUCTIONS
                      4: 
                      5: 
                      6: The following instructions are for systems resembling Ninth Edition UNIX, with
                      7: hints about dealing with variations you may encounter for your specific system.
                      8: Installation should be done only by someone who is comfortable with modifying
                      9: the standard C library and header files.
                     10: 
                     11: If your system already includes directory access routines, you should replace
                     12: them with this package.  We're trying to get this standardized; see the
                     13: discussion in the NOTES file.
                     14: 
                     15: I have tried to make the source code as generic as possible, but if your system
                     16: predates Seventh Edition UNIX you will have problems.
                     17: 
                     18: DISCLAIMER:  Although I believe the code and procedures described here to be
                     19: correct, I make no warranty of any kind, and you are advised to perform your
                     20: own careful testing before making any substantial change like this to your
                     21: programming environment.
                     22: 
                     23: 
                     24: 0)  For antique systems that do not support C's "void" data type, edit the file
                     25:     sys.dirent.h to add the following:
                     26: 
                     27:        typedef int             void;   /* good enough for govt work */
                     28: 
                     29:     If for some reason your <sys/types.h> doesn't define them, add the
                     30:     following to sys.dirent.h:
                     31: 
                     32:        typedef unsigned short  ino_t;  /* (assuming original UFS) */
                     33:        typedef long            off_t;  /* long is forced by lseek() */
                     34: 
                     35:     None of this should be necessary for any modern UNIX system.
                     36: 
                     37: 1)  Copy the file dirent.h to /usr/include/dirent.h and copy the file
                     38:     sys.dirent.h to /usr/include/sys/dirent.h.  (The file sys._dir.h is also
                     39:     provided for the BRL UNIX System V emulation for 4.nBSD.  That environment
                     40:     uses different directory names for everything.)
                     41: 
                     42: 2)  Copy the file directory.3c to /usr/man/man3/directory.3 and copy the file
                     43:     dirent.4 to /usr/man/man5/dirent.5; edit the new file
                     44:     /usr/man/man3/directory.3 to change the "SEE ALSO" reference from dirent(4)
                     45:     to dirent(5) and to change the 3C on the first line to 3; edit the new file
                     46:     /usr/man/man5/dirent.5 to change the 4 on the first line to 5; then print
                     47:     the manual pages via the command
                     48: 
                     49:        man directory dirent
                     50: 
                     51:     to see what the new routines are like.  (If you have a "catman" style of
                     52:     on-line manual, adapt these instructions accordingly.  Manual entries are
                     53:     kept in directories with other names on some systems such as UNIX System V.
                     54:     On systems that already had a directory library documented in some other
                     55:     manual entry, remove the superseded manual entry; if the description of the
                     56:     native filesystem directory format found by "man dir" refers to a directory
                     57:     library, modify it to simply refer to the entry for "dirent".)
                     58: 
                     59: 3)  Copy the files closedir.c, opendir.c, readdir.c, rewinddir.c, seekdir.c,
                     60:     and telldir.c to the "gen" or "port/gen" subdirectory of your C library
                     61:     source directory.  If you do not have a getdents() system call, copy the
                     62:     file getdents.c to the "sys" or "port/sys" subdirectory and copy the file
                     63:     getdents.2 to /usr/man/man2/getdents.2 (actually you may prefer to put this
                     64:     file in section 3 and adjust the references in the other manual entries
                     65:     accordingly; also adjust the references to dirent(4) to be to dirent(5) if
                     66:     that's where the entry is).  Edit the C library makefile(s) to include the
                     67:     new object modules in the C library.  (See the comments at the beginning of
                     68:     getdents.c for symbols that must be defined to configure getdents.c.)  Then
                     69:     remake and reinstall the C library.  Alternatively, you can just compile
                     70:     the new sources and insert their objects near the front of the C library
                     71:     /lib/libc.a using the "ar" utility (seekdir.o should precede readdir.o,
                     72:     which in turn should precede getdents.o).  On some systems you then need to
                     73:     use the "ranlib" utility to update the archive symbol table.
                     74: 
                     75: 4)  After the C library has been updated, delete /usr/include/ndir.h or any
                     76:     other header used with a previous directory library to prevent inadvertent
                     77:     use of the superseded directory access interface.  Also delete any
                     78:     corresponding library such as /usr/lib/libndir.a.
                     79: 
                     80: 5)  To verify installation, try compiling, linking, and running the program
                     81:     testdir.c.  This program searches the current directory "." for each file
                     82:     named as a program argument and prints `"FOO" found.' or `"FOO" not found.'
                     83:     where FOO is of course replaced by the name being sought in the directory.
                     84:     Try something like
                     85: 
                     86:        cd /usr/bin                     # a multi-block directory
                     87:        WHEREVER/testdir FOO lint BAR f77 XYZZY
                     88: 
                     89:     which should produce the output
                     90: 
                     91:        "FOO" not found.
                     92:        "lint" found.
                     93:        "BAR" not found.
                     94:        "f77" found.
                     95:        "XYZZY" not found.
                     96: 
                     97:     A more thorough test would be
                     98: 
                     99:        cd /usr/bin                     # a multi-block directory
                    100:        WHEREVER/testdir `ls -a` | grep 'not found'
                    101: 
                    102:     This program does not test the seekdir() and telldir() functions.
                    103: 
                    104: 6)  Notify your programmers that all directory access must be made through the
                    105:     new interface, and that documentation is available via
                    106: 
                    107:        man directory dirent
                    108: 
                    109:     Make the NOTES file available to those programmers who might want to
                    110:     understand what this is all about.
                    111: 
                    112: 7)  Change all system sources that were accessing directories to use the new
                    113:     routines.  Nearly all such sources contain the line
                    114: 
                    115:        #include <sys/dir.h>
                    116:     or
                    117:        #include <ndir.h>
                    118: 
                    119:     so they should be easy to find.  (If you earlier removed some other header
                    120:     file, that is, if this package superseded an earlier version of the
                    121:     directory access library, look for its name too.  See the conversion
                    122:     instructions in the NOTES file.)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.