Annotation of coherent/d/usr/lib/ndir/libndir/INSTALL, revision 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.