X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Usermode%2FApplications%2FCLIShell_src%2Fmain.c;h=8cea364895ee0b68101e38b3ad4601c0e751b37f;hb=a9d679cbdef00d900fc37c57782759f49ec98cd5;hp=28007e12027ff90b9b9a5564a3d1c81c728188cb;hpb=479d0634670b58da044bc58149662adba0ad1d0b;p=tpg%2Facess2.git diff --git a/Usermode/Applications/CLIShell_src/main.c b/Usermode/Applications/CLIShell_src/main.c index 28007e12..8cea3648 100644 --- a/Usermode/Applications/CLIShell_src/main.c +++ b/Usermode/Applications/CLIShell_src/main.c @@ -8,6 +8,7 @@ #include #include "header.h" #include +#include #define _stdin 0 #define _stdout 1 @@ -31,11 +32,11 @@ struct { {"help", Command_Help}, {"clear", Command_Clear}, {"cd", Command_Cd}, {"dir", Command_Dir} }; -static char *cDEFAULT_PATH[] = {"/Acess/Bin"}; +static char *cDEFAULT_PATH[] = {"/Acess/Bin","/Acess/SBin"}; #define BUILTIN_COUNT (sizeof(cBUILTINS)/sizeof(cBUILTINS[0])) // ==== LOCAL VARIABLES ==== - int giNumPathDirs = 1; + int giNumPathDirs = 2; char **gasPathDirs = cDEFAULT_PATH; char **gasEnvironment; char gsCommandBuffer[1024]; @@ -55,7 +56,7 @@ int main(int argc, char *argv[], char **envp) gasEnvironment = envp; - Command_Clear(0, NULL); +// Command_Clear(0, NULL); { char *tmp = getenv("CWD"); @@ -75,10 +76,15 @@ int main(int argc, char *argv[], char **envp) if(saArgs[0]) free(saArgs[0]); printf("%s$ ", gsCurrentDirectory); + fflush(stdout); // Read Command line sCommandStr = Readline( readline_state ); printf("\n"); + if( !sCommandStr ) { + perror("Readline"); + return 1; + } // Parse Command Line into arguments iArgCount = Parse_Args(sCommandStr, saArgs); @@ -299,27 +305,23 @@ void Command_Cd(int argc, char **argv) */ void Command_Dir(int argc, char **argv) { - int dp, fp, dirLen; + int dp, fp; char modeStr[11] = "RWXrwxRWX "; - char tmpPath[1024]; - char *fileName; + char fileName[256]; t_sysFInfo info; t_sysACL acl; + + // -- Generate and open directory -- // Generate Directory Path + char tmpPath[1024]; if(argc > 1) - dirLen = GeneratePath(argv[1], gsCurrentDirectory, tmpPath); + GeneratePath(argv[1], gsCurrentDirectory, tmpPath); else - { strcpy(tmpPath, gsCurrentDirectory); - } - dirLen = strlen(tmpPath); - // Open Directory dp = _SysOpen(tmpPath, OPENFLAG_READ); - // Check if file opened - if(dp == -1) - { + if(dp == -1) { printf("Unable to open directory `%s', File cannot be found\n", tmpPath); return; } @@ -338,15 +340,7 @@ void Command_Dir(int argc, char **argv) return; } - // Append Shash for file paths - if(tmpPath[dirLen-1] != '/') - { - tmpPath[dirLen++] = '/'; - tmpPath[dirLen] = '\0'; - } - - fileName = (char*)(tmpPath+dirLen); - // Read Directory Content + // -- Read Directory Contents -- while( (fp = _SysReadDir(dp, fileName)) ) { if(fp < 0) @@ -356,7 +350,7 @@ void Command_Dir(int argc, char **argv) break; } // Open File - fp = _SysOpen(tmpPath, 0); + fp = _SysOpenChild(dp, fileName, 0); if(fp == -1) continue; // Get File Stats _SysFInfo(fp, &info, 0);