Linklint - Input examples

     This page shows examples of all of the inputs to Linklint.

Command Line Files

     There are two types of command line files: @commandfiles which
     contain command line options and @@httpfiles which are parsed to
     find http:// urls.

     linklint @commandfile
     Reads in command line arguments from commandfile. Command files
     can be nested. Each command file is interpreted line by line.
     Empty lines and lines beginning with # are ignored. Lines that
     start with -anything can only contain command line arguments. You
     can have multiple arguments on one line, and arguments can take
     repeated parameters in command files only. Example:

     # This is a sample command file
     #
     -host www.goldwarp.com
     -root /usr/local/goldwarp
     -doc linkdoc
     -index index.html index.cgi

     linklint @@httpfile
     Check the status of all http:// references that are found in
     httpfile. Very forgiving in looking for links. If the file looks
     like a remoteX.txt file generated by Linklint, failed urls will be
     cross referenced.

     linklint -doc linkdoc @@
     When you specify @@ with no filename, Linklint will check all the
     http links found in the file linkdoc/remoteX.txt. You must specify
     a -doc directory. This is an easy way to recheck all of the remote
     links on your site.

Local Site Checking

     If you are developing html pages on a computer that does not have
     an http server, or if you are developing a simple site that does
     not use Server Redirection or extensive CGI, you should use local
     site checking.

     linklint /@
     Checks all html files in the current directory and below. Assumes
     that the current directory is the server root directory so links
     starting with "/" default to this directory. You must specify /@
     to check the entire site. See Which Files to Check for details.

     linklint -root dir /@
     Checks all html files in dir and below. This is useful if you want
     to check several sites on the same machine or if you don't want to
     run Linklint in your public html directory.

     Other Local Site Options

     -host hostname
     By default Linklint assumes all links on your site that start with
     http:// are remote links to other sites. If you have absolute
     links to your own site, give Linklint your hostname and links
     starting with http://hostname will be treated as local files. If
     you specify -host hostname:port, only http links to this hostname
     and port will be treated as local files.

     -net
     The -net flag tells Linklint to check all remote links after the
     site has been checked. See Remote Url Checking for details.

     -case
     Makes sure that the filename (upper/lower) case used links inside
     of html tags matches the case used by the file system. This is for
     Windows only and is very handy if you are porting a site to a Unix
     host.

     -orphan
     Checks all directories that contain files used on the site for
     unused (orphan) files.

     -index file
     Uses file as the default index file instead of the default list
     used by Linklint. You can specify more than one file but each one
     must be preceeded by -index on the command line. If a default
     index file is not found, Linklint uses a listing of the entire
     directory. See the Default File section for details.

     -map /a=[/b]
     Subsitutes leading /a with /b. For server-side image maps or to
     simulate Server Redirection.

Remote Site Checking

     If you have a complicated site that uses lots of CGI or Server
     Redirection, you should use remote site checking. Even though a
     remote site check reads pages via your http server, you will get
     the best performance if you do your checking on the machine that
     is hosting the site.

     linklint -http -host www.site.com /@
     The -http flag tells Linklint to check html files on the site
     www.site.com via a remote http connection. You must specify /@ to
     check the entire site. See Which Files to Check for details.

     Other Remote Site Options

     -net
     The -net flag tells Linklint to check all remote links after the
     site has been checked. See Remote Url Checking for details.

     -host hostname:port
     If you include :port at the end of your hostname, Linklint uses
     this port for the remote site check.

     -password realm user:password
     Uses user and password as authorization to enter password
     protected realm. Realms are named areas of a site that share a
     common set of usernames and passwords. If passwords are needed to
     check your site, Linklint will tell you which realms need
     passwords in warning messages. Enclose the realm in double quotes
     if it contains spaces. If no password is given for a specific
     realm, Linklint will try using the password for the "DEFAULT"
     realm if it was provided.

     -timeout t
     Times out after t seconds (default 15) when getting files via
     http. Once data is received, an additional t seconds is allowed.
     The timeout is disabled on Windows machines since the Windows port
     of Perl does not support the alarm() function.

     -delay d
     Delays d seconds between requests (default 0). If you want to
     remote check in the background you can set delay to a large
     number, and Linklint will spend most of its time sleeping.

     -local linkset
     Gets files that match linkset locally. The default -local linkset
     is @.map (which matches any link ending in .map). This allows
     Linklint to follow links through server-side image maps. The
     default is ignored if you specify your own -local expressions.

     -map /a=[/b]
     Subsitutes leading /a with /b. For server-side image maps or to
     simulate Server Redirection.

     -root dir
     Tells Linklint to look for local files in the dir directory. Used
     in conjunction with -local and for checking server-side image map
     .map files.

Which Files to Check

     You specify which html files to site check with one or more
     linksets. A linkset uses two wildcard characters @ and #. The @
     character matches any string of characters, and the # character
     matches any string of characters except "/". If you specify more
     than one linkset, files matching any of the linksets will be
     checked. Html files that don't match any of the linksets will be
     skipped. Linklink will see if they exist but won't check any of
     their links. Examples:

                          the entire site  /@
              the homepage only (default)  /
         files in the root directory only  /#
             . . . and one directory down  /#/#
          files in the sub directory only  /sub/#
     files in the sub directory and below  /sub/@
                           specific files  /file1 /file2 ...
                  specific subdirectories  /sub1/@ /sub2/@ ...

     Other File Selection Options

     -skip skipset
     Skips html files that match skipset. Linklink will make sure these
     files exist but won't add any of their links to the list of files
     to check. Multiple skipsets are allowed, but each must be preceded
     with -skip on the command line. Skipsets use the same wildcard
     characters as linksets.

     -ignore ignoreset
     Ignores files matching ignoreset. Linklint does't even check to
     see if these files exist. Multiple ignoresets are allowed, but
     each must be preceded with -ignore on the command line. Ignoresets
     use the same wildcard characters as linksets.

     -limit n
     Limits checking to n html files (default 500). All html files
     after the first n are skipped.

Remote Url Checking

     A remote url check is used to see if a remote url exists (or has
     been recently modified). Links in remote urls are not checked nor
     does Linklint look for named anchors in remote urls. If you put
     any "http://" links on the command line, in a @commandfile or in a
     @@httpfile, all site checking will be disabled and only the http
     links specified will be checked. There are several ways to specify
     which remote urls to check:

     linklint http://somehost/file.html
     Checks to see if /file.html exists on somehost. Multiple urls can
     be entered on the command line, in an @commandfile, or in an
     @@htpfile. Every url to be checked must begin with http://.

     linklint @@httpfile
     Checks all the remote http urls found in httpfile. Anything
     starting with http:// is considered to be a url. If the file looks
     like a remoteX.txt file generated by Linklint then all failed urls
     will be cross referenced.

     linklint /@ -net
     The -net flag tells Linklint to check all of the remote http links
     it has found after checking your site (either locally or
     remotely).

     linklint -doc linkdoc @@
     Assuming you have already done a site check and used "-doc
     linkdoc" to put all of your output files in the linkdoc directory,
     Linklint will check all the remote links that were found on your
     site and cross reference all failed urls without doing a site
     check. You can use the -netmod or -netset flags to enable the
     status-cache.

     Other Remote Url Options

     -timeout t
     Times out after t seconds (default 15) when getting files via
     http. Once data is received, an additional t seconds is allowed.
     The timeout is disabled on Windows machines since the Windows port
     of Perl does not support the alarm() function.

     -delay d
     Delays d seconds between requests to the same host (default 0).
     This is a friendly thing to do especially if you are checking many
     links on the same host.

     -redirect
     Checks for <meta> redirects in the headers of remote urls that are
     html files. If a redirect is found it is followed. This feature is
     disabled if the status cache is used.

     -proxy hostname[:port]
     Sends all remote url http requests through the proxy server
     hostname and the optional port. This allows you to check remote
     urls from within a firewall that has an http proxy server. Some
     error messages (relating to host errors) may not be available
     through a proxy server.

     Status Cache Options

     These flag make use of the status cache file linklint.url that is
     kept in your HOME or LINKLINT directory.

     -netmod
     Operates just like -net but makes use of the status cache. Newly
     checked urls will be entered in the cache. Linklint will tell you
     which (previously cached) urls have been modified since the last
     -netset.

     -netset
     Like -netmod but also resets the last modified status in the cache
     for all urls that checked ok. If you always use -netset, modified
     urls will be reported just once.

     -retry
     Only checks urls that have a host fail status in the cache.
     Sometimes a url fails because its host is temporarily down. This
     flag enables you to recheck just those links. An easy way to
     recheck all the cached urls with host failures is linklint @@
     -retry. use linklint @@linkdoc/remoteX.txt -retry if you want
     failed urls to be cross referenced.

     -flush
     Removes all urls from the cache that are not currently being
     checked. The -retry flag has no effect on which urls are flushed.

     -checksum
     Ensures that every url that has been modified is reported as such.
     This flag can make the remote checking take longer. Many of the
     pages that require a checksum are dynamically generated and will
     always be reported as modified.

     -cache directory
     Reads and writes the linklint.url cache file in this directory.
     The default directory is set by your LINKLINT or HOME environment
     variables.

Output Options

     No output files are generated by default, only progress and a
     brief summary of the results are printed to the screen. You can
     produce complete documentation (split up into separate files) in a
     -doc directory or put selected output in a single -out file or by
     redirecting the standard output to a file. See the Output File
     Specification section for a detailed description of all output
     files.

     Multi File Output

     linklint -doc linkdoc
     Sends all output to the linkdoc directory. The output is divided
     into separate .txt and .html files. Complete documentation is
     always produced regardless of the single file flags.

     The file linklint.txt contains an index to all the other files;
     linklint.html is an html version of the index. The index files for
     remote url checking are urlindex.txt and urlindex.html.

     Single File Output

     linklint -error > linklint.out
     Lists all errors to linklint.out. Progress and summary information
     will not be included. You can get cross referenced lists with the
     -xref flag or lists sorted by the files containing errors with the
     -forward flag.

     linklint -error -out linklint.out
     Lists all errors and a brief summary to linklint.out You can get
     cross referenced lists, etc., as in the example above.

     -out file  sends list output and summary information to file
     -list      lists all found files, links, directories etc.
     -error     lists missing files and other errors
     -warn      lists all warnings
     -xref      adds cross references to the lists
     -forward   sorts lists by referering file

     Other Output Options

     -quiet   disables printing progress to the screen
     -silent  disables printing summarys to the screen

     -textonly
     Prevents any html files from being created in the -doc directory.

     -htmlonly
     Erases redundent text files in the -doc directory after they have
     been used to create the html output files. The files remote.txt
     and remoteX.txt are not erased since they can be used by Linklint
     to recheck remote urls.

     -docbase base
     Overrides the default base expression used for directing a browser
     to the resources listed in the output html files. The base is
     prepended to local links in the output html files. This only
     affects the links in html output files, it has no effect on what
     is displayed in these files.

     If you are remote checking a site, the default base is http://host
     which steers your browser back to the server hosting your site.

     If you are checking a site locally, the default base is
     file:///driveletter|root for Windows machines and file://root for
     Unix. Here root is the absolute path to the -root directory used
     in the site check. These bases should allow you to browse the
     resources that you checked without using an http server.

     Ordinarily this flag would only be used during a local site check
     to set the base to http://host.

Debug Flags

     -db1  debugs command line input and linkset expressions

     -db2  prints the name of every file that gets checked (not just html
           files)
     -db3  debugs html parser, prints out tags and resulting links
     -db4  not used
     -db5  not used

     -db6  details last-modified status for remote urls (requires -netset or
           -netmod)
     -db7  prints brief debug information while checking remote urls
     -db8  prints all http headers while checking remote urls
     -db9  generates random http errors

_____________________________________________________________________

Linklint - Instructions for large sites

     This page contains detailed instructions for configuring Linklint
     to check a large web site in a worst case scenerio. Some of the
     sections here may not be applicable to your site. These
     instructions are intended only as suggestions to help you quickly
     get started checking links.

General Guidelines

        * Read all the documentation.
        * Run Linklint on the machine that is serving your site even if
          you are checking the site "remotely" with the -http flag.
          This has two benefits: Linklint will run faster, and it will
          be able to follow links in server-side image maps.
        * Use the -doc option to create full documentation of
          Linklint's results.
        * Always run Linklint from the same directory. Keep all of your
          command files and -doc directories in this directory.
        * If at all possible, create your -doc directories in a
          location where you can view the results in a browser. This
          will let you take advantage of the Linklint.html file which
          contains links to all the output files.
        * Use the -http flag to check your pages through your http
          server. This will automatically take care of pages generated
          by CGI and any server redirections that may occur.

Create a Command File

     Before checking your site, take the time to put some information
     about your site in a command file. This will avoid a lot of
     retyping (and possible typos) later on. It often makes sense to
     name the command file after your host name. The command file
     should contain the following:

     # general command file for hostname
     -host www.hostname.com
     -root /absolute/path/to/your/htmlrootdirectory
     -doc linkdoc
     -http

     Resist the temptation to include any linksets in this command
     file. The reason will become clear when you start tracking down
     broken links.

     You can check your home page with linklint @hostname. You can
     check your entire site with linklint @hostname /@.

Split the Site into Sections (optional)

     If you have a very large site (thousands of pages), it might make
     sense to split the site up into several sections and check each
     section separately. One way to do this is to check all the files
     in the root directory and then check files in each subdirectory.

     Create a command file named root for checking the root directory:

     # root directory command file
     @hostname
     -doc rootdoc
     /#

     For each subdirectory (or group of subdirectories) create a
     command file name subdir:

     # command file for subdir
     @hostname
     -doc subdirdoc
     /subdir/@

     Now you can check just your root directory with linklint @root and
     each subdirectory with linklint @subdir and the results will be
     kept in separate output directories.

Check your Site

     You are now ready to start checking your site. Run Linklint with
     the appropriate command file. Examples:

     linklint @hostname /@  check the entire site using command file
                            hostname.

     linklint @root         check the root directory using command file
                            root.

     linklint @subdir       check subdir and below using command file
                            subdir.
     Most likely there will be some warnings and errors. There might
     even be some hints in the summary. Review the results that were
     created in the -doc directory.

Add Passwords

     If you get warning messages that say need password for "realm",
     you will have to provide Linklint with a username and password for
     each password protected realm. Add these lines to your hostname
     file:

     -password "realm1" username1:password1
     -password "realm2" username2:password2

     The realms are double quoted in the warning messages. You will
     have to use double quotes in the command file if the realm
     contains any space characters. You can also use the realm
     "DEFAULT" to provide a default username and password. The default
     will be tried only if a password for the specific realm was not
     given. Once you have made these changes to your command file,
     check the site again to make sure that you entered all the
     information correctly. You will get warning messages for invalid
     username/password combinations.

     Note: The HTTP protocol uses a named realm to identify a set of
     pages that share a common set of username/password combinations.
     This system was created so that visitors only need to be prompted
     for their username and password once (per session) in order to
     browse any number of pages in a given realm. Realms are often used
     to protect all the files under a particular subdirectory, but they
     can be used in other configurations.

Add Server-Side Image Maps

     If your site makes use of server-side images maps, you may have to
     add a -map option to your command file so Linklint knows how to
     find your .map files. See Server-Side Image Maps for a detailed
     explanation. You may have to add one of the following lines to
     your hostname file:

     -map /cgi-bin/imagemap
     -map /cgi-bin/imagemap.exe
     -map /cgi-bin/htimage

     You will also need to have the -root directory specified so
     Linklint knows where to look for map files locally on your
     machine.

Tracking Down Errors

     Sometimes the error messages generated by Linklint do not provide
     sufficient information for figuring out why an error was reported.
     In these cases it can be useful to look at the html tags that
     caused the errors. One way to see these tags is to use the -db3
     flag. This flag causes all html tags that contain links to be
     printed out followed by the fully expanded links.

     Here is one strategy for tracking down errors:

       1. Look in the errorF.txt or errorX.txt file to find the file
          that caused the error.
       2. Run linklint @hostname /errorfile.html -db3 -doc dbdoc
          This will cause all the tags containing links in
          /errorfile.html to be printed out in dbdoc/log.txt.
       3. Examine the dbdoc/log.txt file to see the html tags found by
          Linklint and the links that were extracted from these tags.

     If you use this technique frequently, you can avoid repeated
     typing by making a debug command file:

     # debug command file
     @hostname
     -db3
     -doc dbdoc

     You can use this file to debug an html page with the command:
     linklint @debug /errorfile.html.

Server Redirection

     One of the worst causes of confusion in debugging broken links is
     server redirection. Some http servers are programmed to deliver a
     different page than the one a visitor asks to see.

     The most benign form of redirection is when the server program
     sends back a moved status code (301 or 302), telling the browser
     that the page requested has moved, along with a new url. Linklint
     follows these links and reports all moved urls in the file
     mapped.txt.

     Sometimes a server is programmed to serve up the contents of a
     page that is different from the page requested without giving any
     hints to the browser (or to Linklint) that a switch has been made.
     Take a simple example where fileA.html is mapped to fileB.html.
     Linklint will tell you fileA.html is missing whenever fileB.html
     is missing even if fileA.html exists!

     Since the server is not providing any clues that this switch has
     been made, there is nothing Linklint can do to alleviate the
     situation. I can only suggest that you minimize your use of this
     type of server redirection and familiarize yourself with which
     links on your site have been mapped this way.

_____________________________________________________________________

Linklint - Specifications

     This page explains in more detail how Linklint performs site
     checks and also provides a detailed description of every output
     file created by Linklint.

Creating Seeds for a Site Check

     A linkset (entered on the command line) specifies a set of links
     to check. For each linkset a seed is created for starting
     Linklint's search of your site. If the linkset contains no
     wildcard characters (@ and #), it must be a single link and the
     complete linkset becomes a seed file. If the linkset contains
     wildcard characters, the seed is the longest string of
     non-wildcard characters starting with the leading "/" and ending
     with the last "/" before a wildcard. For example, if you specify
     /@ to check your entire site, Linklint will start with one seed
     file "/" which is the default file for your root directory
     (sometimes called your home page).

Site Check Recursion

     Linklint tries to find all of the pages and files in a site using
     recursion. Each seed is checked and if it is an html file it is
     parsed creating a new list of files to check. These files are
     checked creating new lists of files to check and so on. This
     process continues until one of the mechanisms to stop recursion
     kicks in.

     The primary method used to stop recursion is to only check local
     links. A link is considered local if either: it resolves to a file
     reference without a scheme or host (i.e. /something), or it
     resolves to http://hostname/. . . and -host hostname was
     specified.

     The second method for halting recursion is the use of specific
     linksets. Only html pages that match one or more of the linksets
     you specify will be checked for more links. Html pages which don't
     match any of the linksets will be skipped, which means they are
     checked to see if they exist but none of the links inside the file
     are added to the list of files to check. You can also specifically
     -skip sets of html files or -limit the total number of html files
     checked.

Parsing Html Files

     These are the rules Linklint uses to extract links from html
     files.

     Any tags inclosed inside of comments tags: <!-- . . . -->
     or script tags: <script> . . . </script> are ignored.

     The <base href=URL> tag will cause Linklint to set the base
     scheme, host, path, and file to the appropriate parts of URL for
     the remainder of the file. I've tried to emulate the behavior of
     the Netscape Navigator 3.0 browser. In general missing elements
     from the front part of a url are filled in from the base
     specification.

     Links are extracted from the following tags:

     <a       href=LINK name=NAME>
     <applet  codebase=BASE code=LINK>
     <area    href=LINK>
     <bgsound src=LINK>
     <body    background=LINK>
     <embed   src=LINK>
     <form    action=LINK>
     <frame   src=LINK>
     <img     src=LINK lowsrc=LINK dynsrc=LINK usemap=NAME>
     <input   src=LINK>
     <map     name=NAME>
     <meta    http-equiv=refresh content="... href=LINK">
     <script  src=LINK>

     Tag and attribute names are case insensitive. A LINK can be bare
     or enclosed in single or double quotes. The characters < and > are
     allowed inside of a tag only if they are enclosed in single or
     double quotes. Arbitrary whitespace is allowed around the = sign
     and between a tag's name and its attributes.

     Tags and/or attributes that do not match any of the above criteria
     are ignored.

     All the links found on an html page are checked. Non-html links
     are checked only for existence. If a link is to an html file, it
     will also get parsed subject to the rules of recursion.

Resolving Links

     In order to be able to follow links properly and to ensure that
     links get checked only once, all links are made absolute before
     they are checked. I have tried to use the same rules as a browser
     for making links absolute. You can use the -db3 flag to see how
     links get resolved. This flag causes every tag from an html file
     that contains a link to get printed out in the log file followed
     by the fully expanded link.

     If a -host is specified, links starting with "http://host" have
     this text removed, creating a local link. Thus all local links
     will start with "/" followed by a full path from the server root
     to the file to be checked.

Default Index Files

     Http servers treat a link to a directory followed by a "/" as a
     default file. The server will look for a (server specific) default
     file in the directory and serve that up if it exists. Otherwise
     the server will generate a listing of all of the files and
     subdirectories in the directory.

     Linklint emulates this behavior in local site checks by searching
     for its own list of default files: home.html, index.html,
     index.shtml, index.htm, index.cgi, wwwhome.html, and welcome.html.
     If none of these are found, all the files and subdirectories in
     the directory are checked. You can change the set of default files
     Linklint looks for with the -index filename option which will
     replace the built-in set with the file(s) you specify. On the
     command line each default file must be preceded with the -index
     flag. If all of the default files are in lowercase, the search is
     case insensitive. If any of the files has an uppercase letter, the
     search is case sensitive.

What Linklint Won't Check

     Linklint will not be able to track down links that require
     specific visitor form input. For example, a search engine site
     uses form input from visitors to generate new html pages. These
     pages would not be checked by Linklint. Likewise, if you have
     written your own CGI program that uses the IsMap attribute to
     create new links depending on where a visitor clicks on an image,
     Linklint will not be able to find these links.

Server-side Image Maps

     Linklint can check all links that are used in both client-side and
     server-side image maps. Client-side image maps are handled
     automatically since Linklint parses the <area href=LINK> tag in
     html files.

     Server-side image maps are a little bit tricky. Some servers have
     the imagemap CGI software built-in so links ending in .map are
     treated as map files and automatically sent to the image map
     program for processing. Linklint mimics this behavior. Any link
     ending in .map is parsed as if it were a map file. In addition,
     all .map links are checked locally even if the -http flag is used
     since map files are generally not accessible directly via http.

     Some servers require server-side image map links to contains the
     path of the CGI image map program followed by the path to the map
     file as in:

     <a href=/cgi-bin/imagemap/dir/info.map>.

     Here /cgi-bin/imagemap is the location of the image map CGI
     program and /dir/info.map is the location of the map file.
     Linklint can resolve these links and read the map file (locally
     only, even if -http is used). However, you must provide the path
     from your server root directory to your image map program using
     the -map option. Three common image map specifications are:

        * -map /cgi-bin/imagemap
        * -map /cgi-bin/imagemap.exe
        * -map cgi-bin/htimage

     For example, if you set "-map /cgi-bin/imagemap", the link
     /cgi-bin/imagemap/dir/info.map will be transformed to
     /dir/info.map which will be read in locally and parsed as a map
     file. You need to be sure to set -root properly for Linklint to be
     able to find the map file.

Output Files

     If a -doc directory is specified, all output files are written in
     that directory. The directory will be created if it does not
     already exist. There are two sets of files that are created, one
     is for site checks and the other is for remote url checks.

     Even though new files are written only as needed, all previously
     written files from each set are erased before new files from the
     set are written. Each set is independent of the other. The
     site-check files will be erased only if you do another site check.
     The url-check files will be erased only if you check remote urls
     again.

     New! Many of the output files now come in html and text versions.
     The html versions look like the text versions but contain
     hyperlinks to the resources they refer to. Files that come in both
     versions are listed below without an extension. If you run
     Linklint on its own output files, you will often find broken
     links. This is one of life's little ironies. If you find that
     Linklint is creating some totally bogus links, please email me at
     bowlin@sirius.com and let me know.

     Some of the output files are part of a family. Members of the
     family are related using the simple mnemonic of a trail X meaning
     cross referenced and a trailing F meaning forward referenced. For
     example: error lists all missing files, errorX lists the missing
     files and all html files that reference them, and errorF lists all
     html files that contain links to missing files along with the
     names of the missing files.

Site-Check Output Files

     During local site checking, local links ending in "/" are kept
     as-is to maintain consistency with remote site results. However,
     if a default index file was found, it is listed below the link in
     square brackets. If a directory listing is used because no default
     file was found, this information is listed in the brackets.

     Any link that Linklint knows has been redirected (either by the
     http server or with the -map option), gets an extra line in the
     output files showing the orignal link it was mapped from in
     parentheses. See the Server Redirection section for more details.

     Site-Check Summary Files

     linklint
     an index to all site-check files created. This list differs from
     the summary list in two ways. First, it contains entries for every
     file written including cross referenced lists and forward
     referenced lists that are missing in the summary. Second, it lacks
     the detailed divisions by file type and external link schema that
     exist in the summary.

     summary.txt
     summary of site-check results, similar to what gets printed to the
     screen. Every non-empty data family (listed below) will cause a
     line to be printed in the summary. In addition, external links are
     listed by the following schema: http, https, ftp, javascript,
     mailto, gopher, file, news, view-source, about, unknown. Found and
     missing files are listed by file type:

               cgi  starting with "/cgi-bin" or containing "?" or .cgi or
                    .pl
     default index  ending with "/"
              html  ending with .htm .html or .shtml
               map  ending with .map

             image  ending with .gif .jpg .jpeg .tif .tiff .pic .pict .hdf
                    .ras .xbm
              text  ending with .txt
             audio  ending with .au .snd .wav .aif .aiff .midi .mid
             video  ending with .mpg .mpeg .avi .qt .mov
         shockwave  ending with .dcr
            applet  ending with .class
             other  all other files

     These distinctions sort files (mostly) by extension, they are not
     true indications of the tag the link was found inside, nor of the
     MIME format returned by your server.

     log.txt
     log of site-check progress, similar to what gets printed to the
     screen but also includes extra output created when -db flags are
     used.

     Site-Check Data Files

     action, actionX
     a list of all ignored actions. Any link found inside a <form
     action=LINK> tag is listed here, but it is not checked since
     normally extra input from the form is required.

     anchor, anchorX
     a list of all named anchors found. The anchorX file lists all
     files that use each named anchor. If a named anchor is not
     referenced by any of the files checked by Linklint, it will have
     no cross references. Named maps are also included in this list.

     case, caseX, caseF
     If -case was used during a local site check on a Windows machine,
     all files that have references that do not match the (upper/lower)
     case of the file are listed here. This is handy if you are
     developing a site on a Windows machine that you are planning to
     port to a Unix server.

     dir.txt
     a list of all the directories that contain files used by the site.
     Only created during local site checking.

     error, errorX, errorF
     a list of all missing files. A file is listed as missing if:

       1. it is referenced by a file checked by Linklint, and
       2. it is a local file, and
       3. it does not match any -ignore expression, and
       4. Linklint could not find the file locally, or an error occured
          when Linklint tried to get the file via http.

     See the Parsing Html section for details.

     errorA, errorAX
     a list of missing named anchors. A named anchor is missing if:

       1. it is referenced by a file checked by Linklint, and
       2. it is located inside of a local file, and
       3. the file it is in is not -ignored or -skipped, and
       4. Linklint could not find the file, or the file was found but
          the named anchor does not exist.

     errorM, errorMX
     a list of missing named client-side image maps. The rules for
     inclusion in this list are the same as those for missing named
     anchors.

     file, fileX, fileF
     a list all files found on the site. file is a list of all files
     found sorted by file type; fileX is a cross referenced version,
     showing a sublist of all the html files that reference each file
     in the list; fileF lists each html file and a sublist of all of
     the links it references. These lists are meant to show file
     dependencies so multiple links to the same file result in a single
     listing. Likewise, a named anchor causes the file containing the
     anchor to be listed, but the actual named anchors are listed
     separately.

     httpfail
     a list of all the http errors that occured while trying to remote
     check a site.

     httpok
     a list of all the files that were obtained without error while
     remote checking a site.

     ignore, ignoreX
     a list of all ignored files.

     imgmap, imgmapX
     a list of named image maps for client-side image maps, taken from
     tags <img usemap=NAME> and <map name=NAME>.

     mapped
     a list of all the redirected files that were found while checking
     a site either locally or remotely.

     Some servers automatically change the name of a link. For example
     a link to http://host/subdir will get automatically mapped to
     http://host/subdir if subdir is a directory. Many other mappings
     are possible. Linklint will follow these mappings and treat the
     resulting file as the actual link (just like a browser would).

     This is a potential cause for confusion. If your index.html file
     has a link to A.html and this gets mapped to B.html, Linklint will
     tell you that index.html has a link to A.html and that it has a
     link to B.html, but only B.txt will be listed as a found file.

     See the Server Redirection section for more details.

     orphan
     If the -orphan flag was used during a local site check, all of the
     unused files and subdirectories in each directory that contain
     files used by the site, are listed here sorted by directory. If an
     orphan html file contains a meta refresh tag redirecting the
     visitor to a different file, this new file is listed under its
     parent preceded by " =>". This method of redirection is often used
     to steer visitors to the current version of a file without
     requiring them to change their bookmarks.

     remote, remoteX
     a list of all references that are not to local files. The remoteX
     file lists which html files referer to these resources.

     skipped, skipX
     a list of all files that were skipped by Linklint. These are
     generally html files which were found to exist but were not
     checked further because:

       1. they did not match any of the linksets specified, or
       2. they did match one of the -skip expressions, or
       3. more than -limit files had already been checked.

     warn, warnX, warnF
     a list of all warnings that were generated during the site check.
     Warnings include: unexpected I/O errors, html errors such as
     unterminated comments, missing index files (during local site
     checks), space characters inside of links, the use of "\" inside
     of links, files that are not world readable, mappings that cause
     infinite loops, and meta refresh tags that redirect to relative
     urls.

     For remote site checking warnings are also generated for: files
     disallowed by robots.txt, files mapped to a different server,
     files that require a username and password (and none was
     provided), an invalid username and password, and files mapped to
     non-http schemes.

Url-Check Output Files

     Url-Check Summary Files

     urlindex
     an index to all url-check files created. This list differs from
     the summary list in two ways. First, it contains entries for every
     file written including: host failures, cross referenced lists, and
     forward referenced lists. Second, it lacks the detailed divisions
     by failure type that exist in the summary.

     urlsum.txt
     summary of url-check results, similar to what gets printed to the
     screen. The summary list includes an entry for every type of
     warning or failure.

     urllog.txt
     log of url-check progress, similar to what gets printed to the
     screen but also includes extra output created when -db flags are
     used.

     Url-Check Data Files

     urlfail, urlfailX, urlfailF
     a list of urls that failed due to one of the following errors:

        * could not find ip address
        * could not connect to host
        * all timeout errors
        * had no content (204)
        * bad request (400)
        * access forbidden (403)
        * not found (404)
        * internal server error (500)
        * service not implemented on server (501)
        * server temporarily overloaded (502)
        * gateway timeout (503)

     urlhost.txt
     a list of all hosts that had failures during the url check. This
     includes:

        * could not find ip address
        * could not connect to host
        * could not open socket
        * malformed status line
        * timeout errors
        * server overloaded (502)
        * gateway timeout (503)

     Urls that fail due to host failures can be retried with the -retry
     flag if the status-cache was enabled.

     urlmod
     a list of all urls that have changed since the last time they were
     checked with the -netset flag. This list is only generated if
     -netmod or -netset are specified.

     urlmoved
     a list of urls that were reported as redirected by their server.
     Often this redirection involves nothing more than adding a
     trailing "/" to a directory name. Sometimes it can be a precursor
     to a site changing location permanently. Some servers report that
     the url has been moved temporarily, others will say that the url
     has been moved permanently. A far as I can tell there is no real
     distinction between "temporary" and "permanent", they seem to be
     used interchangeably.

     urlok
     a list of all urls that were found with no errors. If the -db6
     flag is used and the status-cache is enabled, these entries are
     expanded to include the following extra information:

        * ok (200)
        * ok not modified (304)
        * ok last-modified date unchanged
        * ok did not compute checksum
        * ok checksum matched

     urlskip
     a list of urls that were not checked. This is most often caused by
     the lack of password authorization but could also be due to to an
     exceptional condition such as an infinite redirect loop or an
     unknown internal Linklint error.

     urlwarn, urlwarnX, urlwarnF
     a list of warning messages generated while Linklint was doing a
     url-check. The most common warning tells you the name of a realm
     which requires a username and password.

                                       Copyright 1997 James B. Bowlin
