1
0
Files
irix-657m-src/stand/arcs/lib/libsc/cmd/dir_cmd.c
2022-09-29 17:59:04 +03:00

60 lines
1.1 KiB
C

/*
* dir_cmd.c - print a directory listing
*
* $Revision: 1.5 $
*/
#include <arcs/errno.h>
#include <arcs/io.h>
#include <arcs/dirent.h>
#include <libsc.h>
dir(int argc, char *argv[])
{
LONG i, rc, done = 0, count = 10, retval;
DIRECTORYENTRY *bufptr, *buf;
ULONG fid;
if (argc < 2)
return -1;
if ((buf=(DIRECTORYENTRY *)malloc(sizeof(DIRECTORYENTRY) * count)) == NULL){
printf("Unable to malloc buffer\n");
return -1;
}
argv++;
if (Open(*argv, OpenReadOnly, &fid) != ESUCCESS) {
printf("\nError Opening File %s", *argv);
return -1;
}
printf("\nDIRECTORY\n");
while (!done) {
retval = GetDirEntry(fid, buf, count, &rc);
switch (retval) {
case ESUCCESS:
bufptr = buf;
for (i = 0; i < rc; i++) {
printf("Attribute %x ", bufptr->FileAttribute);
printf("FileName Length %d ", bufptr->FileNameLength);
printf("Filename %s \n", bufptr->FileName);
bufptr++;
}
break;
case ENOTDIR:
done = 1;
break;
case EBADF:
printf("\nError Reading Directory\n");
done = 1;
}
}
Close(fid);
free(buf);
return 0;
}