<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Tue, 17 Dec 1985 01:19:21 GMT
From   : Pete Holzmann <pete%octopus.uucp@BRL.ARPA>
Subject: SUMMARY: The REAL answer to CP/M Directory Trashing Bug

Thanks to all who responded to my request for help! Several had good clues
that led me to the correct answer.

Original problem: STAT shows two identically-named files in a directory.
       DIR and other directory commands don't. How did it happen? How to
       fix?

Suggestions:
       1. Don't trust STAT. (*WRONG* STAT was correct. DIR was wrong!)
       2. There may be invisible garbage characters in one filename.
               (*WRONG, In this case* but that can happen, I know...)
       3. Maybe STAT sees a 2-extent file as 2 files? (*WRONG*)
       4. A file is in the current user and in the public (user 0) area.
               (*WRONG* - That isn't a problem on Molecular, nor on any
                       CP/M I know of, other than maybe OSM)
       5. There are 2 files. The CREATE call doesn't check for existing
               files first. (*RIGHT*... But see below!)

SUMMARY:

       It is up to the programmer to delete any existing file before using
       the CP/M CREATE call. CREATE always makes a new directory entry.

       HOWEVER, in MP/M, no previous delete is needed- the CREATE call returns
       an error if the file already exists!

       It appears that CB-80 assumes you will run programs under MP/M, so it
       doesn't bother with the delete. On the Molecular, you can run in either
       CP/M mode or MP/M mode.  In our case, it turned out that one user had
       the MP/M flag turned off, so they were the unknown source of duplicate
       filenames.

       NOTE that duplicate filenames are an unexpected thing in xP/M, and
       different programs treat them differently. For example:
               STAT - sees both files
               DIR  - sees one file
               D    - sees one file, adding size of both files to get 1 size
               PIP  - tacks one on to the end of the other (PIP will recombine
                       the files automatically... maybe it collects all of
                       the extents before moving anything?)
               OPEN call - usually gets the first directory entry in the
                       system.

MORAL: Watch your CREATES and <C,M>P/M's!



-- 
  OOO   __| ___      Peter Holzmann, Octopus Enterprises
 OOOOOOO___/ _______ USPS: 19611 La Mar Court, Cupertino, CA 95014
  OOOOO \___/        UUCP: {hplabs!hpdsd,pyramid}!octopus!pete
___| \_____          Phone: 408/996-7746
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>