#ParentDIR from CLI
6 messages in this thread
Mike, have you looked at the program called LD or LD4? This is a program
for for getting a directory. This program works without being given a
directory to start with. In this case, for the Lock() command, it uses a
name that is a null string. Here is a fragment of that program. Hope this
is what you are looking for.
main(argc,argv)
int argc;
char *argv[];
{
char *dirname; /* Selected AmigaDOS directory */
struct FileLock *dir; /* Locked AmigaDOS directory */
struct FileInfoBlock *fb; /* File Info from locked directory */
BOOL fail; /* Directory Access Failure */
UBYTE count; /* Line length count */
if (argc == 1)
dirname = "";
else if (argc == 2)
dirname = argv[1];
else {
printf("Usage: Ld [dirname]\n");
Exit();
}
fb = (struct FileInfoBlock *) AllocMem(sizeof(struct FileInfoBlock),0);
dir = Lock(dirname,ACCESS_READ);
fail = (dir == NULL) | !Examine(dir,fb);
if (fail) {
printf("Invalid directory '%s' requested\n",dirname);
FreeMem(fb,sizeof(struct FileInfoBlock));
Exit();
}
Happy new year, Kelly
Thanx, Kelly. I'm not certain what send a null string to Lock() gives you
back. I did "bro /key dir*" in DL10 on DL'ed a few listings, including LD.C.
Thanx again, and HNY. —Mike
Hi Mike,
What calling Lock with a null string gives is the FileInfoBlock pointer (or a
pointer to the block is what I mean), and this block will give the info
for the current directory. The name will be that of the current VOLUME if
the CD is to a drive and not a subdirectory. If CD is too a SubDirectory,
then the Name will be the proper name for the SubDirectory, but of course
the parent diectory to that subdirectory is not in the name field.
I couldn't remember what it was exactly you were looking for and that program
came to mind. If that is what you needed, thank Hazy, it is his program! I
didn't notice that until after I sent that to you, or I would have given him
the credit in my message.
So maybe you could tell me how one goes backwards to find the parent directory,
though this would be just for curiousity, since I AINT no programmer..
All the best, Kelly
Kelly: there is a DOS function called ParentDir() that gets the FileInfoBlock
for (what else?) the parent directory. What I haven;t determined is if the file
is in a drawer which is in a drawer (etc.), how does one get the intermediate
pathnames. Thanx! —Mike
Mike,
Glad to hear you got the info you needed on obtaining a CurrentDir lock.
As for ParentDir, a "drawer in a drawer" situation should be that the parent
of Volume:dir/subdir is Volume:dir, and the parent of Volume:dir is of course
Volume:
If it doesn't work like this, I would call it a bug.
Regards, Larry.
You are right (rereading the function description). ParentDir does give the
immediate parent, not the grandparent. You keep calling it until it returns a
zero, which means it found the root directory. —Mike