X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Usermode%2FApplications%2Fls_src%2Fmain.c;h=297f5f9249595c7e64b6f3c260eb7aac7b3b504e;hb=466eda7c917791866a29c253c6c22197faf41bf7;hp=fc99a4052bf173bd24f88bc8d60008a72dd73980;hpb=e8a85694d2dfc768dcd68826b31f8711d257fb51;p=tpg%2Facess2.git diff --git a/Usermode/Applications/ls_src/main.c b/Usermode/Applications/ls_src/main.c index fc99a405..297f5f92 100644 --- a/Usermode/Applications/ls_src/main.c +++ b/Usermode/Applications/ls_src/main.c @@ -60,7 +60,7 @@ int main(int argc, char *argv[]) // Check that it is a directory finfo(fd, &info, 0); if( !(info.flags & FILEFLAG_DIRECTORY) ) { - fprintf(stderr, "'%s' is a directory\n", gsDirectory); + fprintf(stderr, "'%s' is not a directory\n", gsDirectory); close(fd); return EXIT_FAILURE; } @@ -75,7 +75,7 @@ int main(int argc, char *argv[]) } // Traverse Directory - while( (tmp = readdir(fd, buf)) ) + while( (tmp = readdir(fd, buf)) > 0 ) { // Error check if(tmp < 0) { @@ -167,8 +167,6 @@ void ParseArguments(int argc, char *argv[]) // Apply Defaults if(!gsDirectory) gsDirectory = "."; - - printf("gsDirectory = '%s'\n", gsDirectory); } /** @@ -262,6 +260,9 @@ void DisplayFile(char *Filename) if(acl.perms & 1) perms |= 0004; // R if(acl.perms & 2) perms |= 0002; // W if(acl.perms & 8) perms |= 0001; // X + + // Close file + close(fd); } free(path); // We're finished with it @@ -280,26 +281,33 @@ void DisplayFile(char *Filename) if(perms & 0002) permStr[8] = 'w'; if(perms & 0001) permStr[9] = 'x'; printf("%s %4i %4i ", permStr, owner, group); - if(gbViewHumanReadable) { + if(gbViewHumanReadable && type != FTYPE_DIR) { if(size < 2048) { // < 2 KiB - printf("%8lli B ", size); + printf("%4i B ", size); } else if(size < 2048*1024) { // < 2 MiB - printf("%8lli KiB ", size>>10); + printf("%4i KiB ", size>>10); } else if(size < (uint64_t)2048*1024*1024) { // < 2 GiB - printf("%8lli MiB ", size>>20); + printf("%4i MiB ", size>>20); } else if(size < (uint64_t)2048*1024*1024*1024) { // < 2 TiB - printf("%8lli GiB ", size>>30); + printf("%4i GiB ", size>>30); } else { // Greater than 2 TiB - printf("%8i TiB ", size>>40); + printf("%4i TiB ", size>>40); } } else { printf("%8i ", size); } } - printf("%s\n", Filename); + switch(type) + { + case FTYPE_DIR: printf("\x1B[32m"); break; // Green + case FTYPE_SYMLINK: printf("\x1B[34m"); break; // Blue + case FTYPE_NORMAL: break; + } + printf("%s%s\n", Filename, (type==FTYPE_DIR?"/":"")); + printf("\x1B[00m"); // Reset }