JRH4373@TAMVENUS.BITNET (07/30/87)
[Go ahead...eat my line!]
Reposted from JRH4373@TAMVENUS.BITNET
In a previous posting I typed the following:
>Time for another question. I am experiencing a bit of difficulty with the
>AmigaD*S function DeleteFile(). The documentation I have states that this
>function will delete a file or directory. The problem is, in an application
>I am writing, I am getting an object in use error when trying to delete any
>directory after having deleted all files in that directory. The files all
>delete fine, but when an attempt is then made to delete the directory, I get
>the error. Keep in mind that this is a directory that my program has recently
>created using mkdir() and no other processes are active. Upon exiting the
>program, the del command will not delete it either although I can cd to it.
>Only by rebooting the system will the harddisk mount clean up the directory
>to allow it to be deleted. I am sure I must be missing some trivial tidbit
>of knowledge concerning deleting files, but I have looked till I am blue in
>the face and have failed to find anything that solves this problem.
>Anyone out there have any idea what I am doing wrong?
A lot of you have responded to try UnLock. I neglected to mention that I
had already tried this. The exact sequence is this:
0. starting in the directory 'original_dir'
1. lock = CreateDir("temp")
2. unlock(lock)
3. chdir("temp")
4. lock = CreateDir("temp")
5. unlock(lock)
6. chdir("temp")
7. So now I am in 'original_dir/temp/temp'
8. chdir("original_dir/temp") /* go back to first created directory */
9. DeleteFile("temp") /* This works fine */
10. chdir("original_dir") /* I am now back at the original directory */
11. DeleteFile("temp") /* This DOES NOT WORK! Object in use error */
I have since tried relocking and then unlocking the directory immediately
before deleteing the directories. Same result.
BTW, the AmigaD*S manual is rather vague about the name of the
lock structure. In the RKM, in dosextens.h, I found a FileLock
structure and a comment indicating that this is what Lock(), etc
return. Why then, does lattice issue a 'pointers to different objects'
warning when I declare a variable lock as 'struct FileLock *' and then
use it like this: 'lock = CreateDir()'? Is FileLock the right name?
Do I have to declare CreatDir() as an extern and specify it's type or what?
I would like to thank those who have responded so far. It helps to know
someone is willing to help.
******************************************************************************
Joel << Hatchet >> Hall
jrh4373@tamvenus
I think therefore I am...an Amiga user.
Disclaimer: I would disclaim my existance, but if I didn't exist, I wouldn't
need to disclaim anything. So if I don't disclaim something, does that mean I
don't exist...