git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added "Free Me" Flag to VFS_ReadDir
[tpg/acess2.git]
/
Usermode
/
Applications
/
CLIShell_src
/
main.c
diff --git
a/Usermode/Applications/CLIShell_src/main.c
b/Usermode/Applications/CLIShell_src/main.c
index
8786262
..
aa1d9ab
100644
(file)
--- a/
Usermode/Applications/CLIShell_src/main.c
+++ b/
Usermode/Applications/CLIShell_src/main.c
@@
-31,7
+31,7
@@
struct {
\r
// ==== LOCAL VARIABLES ====
\r
char gsCommandBuffer[1024];
\r
\r
// ==== LOCAL VARIABLES ====
\r
char gsCommandBuffer[1024];
\r
-char *gsCurrentDirectory =
"/"
;
\r
+char *gsCurrentDirectory =
NULL
;
\r
char gsTmpBuffer[1024];
\r
char **gasCommandHistory;
\r
int giLastCommand = 0;
\r
char gsTmpBuffer[1024];
\r
char **gasCommandHistory;
\r
int giLastCommand = 0;
\r
@@
-50,8
+50,19
@@
int main(int argc, char *argv[], char *envp[])
\r
//Command_Clear(0, NULL);
\r
\r
\r
//Command_Clear(0, NULL);
\r
\r
+ {
\r
+ char *tmp = getenv("CWD");
\r
+ if(tmp) {
\r
+ gsCurrentDirectory = malloc(strlen(tmp)+1);
\r
+ strcpy(gsCurrentDirectory, tmp);
\r
+ } else {
\r
+ gsCurrentDirectory = malloc(2);
\r
+ strcpy(gsCurrentDirectory, "/");
\r
+ }
\r
+ }
\r
+
\r
write(_stdout, 1, "\n");
\r
write(_stdout, 1, "\n");
\r
- write(_stdout,
36
, "Acess Shell Version 3\n");
\r
+ write(_stdout,
22
, "Acess Shell Version 3\n");
\r
write(_stdout, 2, "\n");
\r
for(;;)
\r
{
\r
write(_stdout, 2, "\n");
\r
for(;;)
\r
{
\r
@@
-59,6
+70,7
@@
int main(int argc, char *argv[], char *envp[])
if(saArgs[0]) free(saArgs);
\r
if(!bCached) free(sCommandStr);
\r
bCached = 0;
\r
if(saArgs[0]) free(saArgs);
\r
if(!bCached) free(sCommandStr);
\r
bCached = 0;
\r
+ write(_stdout, 1, "\n");
\r
write(_stdout, strlen(gsCurrentDirectory), gsCurrentDirectory);
\r
write(_stdout, 3, "$ ");
\r
\r
write(_stdout, strlen(gsCurrentDirectory), gsCurrentDirectory);
\r
write(_stdout, 3, "$ ");
\r
\r
@@
-324,6
+336,8
@@
void Command_Cd(int argc, char **argv)
return;
\r
}
\r
\r
return;
\r
}
\r
\r
+ free(gsCurrentDirectory);
\r
+ gsCurrentDirectory = malloc(strlen(tmpPath)+1);
\r
strcpy(gsCurrentDirectory, tmpPath);
\r
}
\r
\r
strcpy(gsCurrentDirectory, tmpPath);
\r
}
\r
\r
@@
-332,7
+346,7
@@
void Command_Cd(int argc, char **argv)
void Command_Dir(int argc, char **argv)
\r
{
\r
int dp, fp, dirLen;
\r
void Command_Dir(int argc, char **argv)
\r
{
\r
int dp, fp, dirLen;
\r
-
//char
modeStr[11] = "RWXrwxRWX ";
\r
+
char
modeStr[11] = "RWXrwxRWX ";
\r
char tmpPath[1024];
\r
char *fileName;
\r
t_sysFInfo info;
\r
char tmpPath[1024];
\r
char *fileName;
\r
t_sysFInfo info;
\r
@@
-397,10
+411,13
@@
void Command_Dir(int argc, char **argv)
if(fp == -1) continue;
\r
// Get File Stats
\r
finfo(fp, &info, 0);
\r
if(fp == -1) continue;
\r
// Get File Stats
\r
finfo(fp, &info, 0);
\r
- close(fp);
\r
\r
\r
- //Print Mode
\r
- //#if 0
\r
+ if(info.flags & FILEFLAG_DIRECTORY)
\r
+ write(_stdout, 1, "d");
\r
+ else
\r
+ write(_stdout, 1, "-");
\r
+
\r
+ // Print Mode
\r
acl.group = 0; acl.id = info.uid;
\r
_SysGetACL(fp, &acl);
\r
if(acl.perms & 1) modeStr[0] = 'r'; else modeStr[0] = '-';
\r
acl.group = 0; acl.id = info.uid;
\r
_SysGetACL(fp, &acl);
\r
if(acl.perms & 1) modeStr[0] = 'r'; else modeStr[0] = '-';
\r
@@
-417,15
+434,16
@@
void Command_Dir(int argc, char **argv)
if(acl.perms & 1) modeStr[7] = 'w'; else modeStr[7] = '-';
\r
if(acl.perms & 1) modeStr[8] = 'x'; else modeStr[8] = '-';
\r
write(_stdout, 10, modeStr);
\r
if(acl.perms & 1) modeStr[7] = 'w'; else modeStr[7] = '-';
\r
if(acl.perms & 1) modeStr[8] = 'x'; else modeStr[8] = '-';
\r
write(_stdout, 10, modeStr);
\r
- //#endif
\r
+ close(fp);
\r
\r
// Colour Code
\r
if(info.flags & FILEFLAG_DIRECTORY) // Directory: Green
\r
write(_stdout, 6, "\x1B[32m");
\r
\r
// Colour Code
\r
if(info.flags & FILEFLAG_DIRECTORY) // Directory: Green
\r
write(_stdout, 6, "\x1B[32m");
\r
-
els
e
\r
- write(_stdout, 6, "\x1B[37m"); // Default: White
\r
+
// Default: Whit
e
\r
+
\r
// Print Name
\r
write(_stdout, strlen(fileName), fileName);
\r
// Print Name
\r
write(_stdout, strlen(fileName), fileName);
\r
+
\r
// Print slash if applicable
\r
if(info.flags & FILEFLAG_DIRECTORY)
\r
write(_stdout, 1, "/");
\r
// Print slash if applicable
\r
if(info.flags & FILEFLAG_DIRECTORY)
\r
write(_stdout, 1, "/");
\r
@@
-433,10
+451,8
@@
void Command_Dir(int argc, char **argv)
// Revert Colour
\r
write(_stdout, 6, "\x1B[37m");
\r
\r
// Revert Colour
\r
write(_stdout, 6, "\x1B[37m");
\r
\r
- // Put Size
\r
- printf("\n", info.size);
\r
-
\r
- //write(_stdout, 1, "\n");
\r
+ // Newline!
\r
+ write(_stdout, 1, "\n");
\r
}
\r
// Close Directory
\r
close(dp);
\r
}
\r
// Close Directory
\r
close(dp);
\r
UCC
git Repository :: git.ucc.asn.au