ParseArguments(argc, argv);
// Open Directory
- fd = open(gsDirectory, OPENFLAG_READ|OPENFLAG_EXEC);
+ fd = _SysOpen(gsDirectory, OPENFLAG_READ|OPENFLAG_EXEC);
if(fd == -1) {
printf("Unable to open '%s' for reading\n", gsDirectory);
return EXIT_FAILURE;
}
// Check that it is a directory
- finfo(fd, &info, 0);
+ _SysFInfo(fd, &info, 0);
if( !(info.flags & FILEFLAG_DIRECTORY) ) {
fprintf(stderr, "'%s' is not a directory\n", gsDirectory);
- close(fd);
+ _SysClose(fd);
return EXIT_FAILURE;
}
}
// Traverse Directory
- while( (tmp = readdir(fd, buf)) )
+ while( (tmp = _SysReadDir(fd, buf)) > 0 )
{
// Error check
if(tmp < 0) {
- close(fd);
+ _SysClose(fd);
return EXIT_FAILURE;
}
space += 16;
gFileList = realloc(gFileList, space*sizeof(char*));
if(gFileList == NULL) {
- close(fd);
+ _SysClose(fd);
return EXIT_FAILURE;
}
}
DisplayFile( gFileList[i] );
}
- close(fd);
+ _SysClose(fd);
printf("\n");
return EXIT_SUCCESS;
// Human readable sizes
case 'h': gbViewHumanReadable = 1; continue;
default:
- fprintf(stderr, "%s: Unknown option '%c'\n", *str);
+ fprintf(stderr, "%s: Unknown option '%c'\n", argv[0], *str);
ShowUsage(argv[0]);
exit(EXIT_FAILURE);
}
strcpy(&path[dirLen+1], Filename);
// Get file type
- fd = open(path, 0);
+ fd = _SysOpen(path, 0);
if(fd == -1) {
fprintf(stderr, "Unable to open '%s'\n", path);
}
else {
// Get Info
- finfo(fd, &info, 0);
+ _SysFInfo(fd, &info, 0);
// Get Type
if(info.flags & FILEFLAG_DIRECTORY) {
type = FTYPE_DIR;
// Get Permissions
// - Owner
- acl.group = 0; acl.id = info.uid;
+ acl.object = info.uid;
_SysGetACL(fd, &acl);
if(acl.perms & 1) perms |= 0400; // R
if(acl.perms & 2) perms |= 0200; // W
if(acl.perms & 8) perms |= 0100; // X
// - Group
- acl.group = 1; acl.id = info.gid;
+ acl.object = info.gid | 0x80000000;
_SysGetACL(fd, &acl);
if(acl.perms & 1) perms |= 0040; // R
if(acl.perms & 2) perms |= 0020; // W
if(acl.perms & 8) perms |= 0010; // X
// - World
- acl.group = 1; acl.id = -1;
+ acl.object = 0xFFFFFFFF;
_SysGetACL(fd, &acl);
if(acl.perms & 1) perms |= 0004; // R
if(acl.perms & 2) perms |= 0002; // W
if(acl.perms & 8) perms |= 0001; // X
+
+ // Close file
+ _SysClose(fd);
}
free(path); // We're finished with it
printf("%s %4i %4i ", permStr, owner, group);
if(gbViewHumanReadable && type != FTYPE_DIR) {
if(size < 2048) { // < 2 KiB
- printf("%4i B ", size);
+ printf("%4lli B ", size);
}
else if(size < 2048*1024) { // < 2 MiB
- printf("%4i KiB ", size>>10);
+ printf("%4lli KiB ", size>>10);
}
else if(size < (uint64_t)2048*1024*1024) { // < 2 GiB
- printf("%4i MiB ", size>>20);
+ printf("%4lli MiB ", size>>20);
}
else if(size < (uint64_t)2048*1024*1024*1024) { // < 2 TiB
- printf("%4i GiB ", size>>30);
+ printf("%4lli GiB ", size>>30);
}
- else { // Greater than 2 TiB
- printf("%4i TiB ", size>>40);
+ else { // Greater than 2 TiB (if your files are larger than this, you are Doing It Wrong [TM])
+ printf("%4lli TiB ", size>>40);
}
} else {
- printf("%8i ", size);
+ printf("%8lli ", size);
}
}