X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Finit_src%2Fmain.c;h=e9c3ef9166a21b703e755375af8a2c6102d6bc71;hb=41f95269c94e847647f0e986b4999a29ef07025e;hp=ac1e84892bb8e06a474cb39ed9c13191ca912601;hpb=470e38ce75ff3e33390c78690faaa84f833b1cf3;p=tpg%2Facess2.git diff --git a/Usermode/Applications/init_src/main.c b/Usermode/Applications/init_src/main.c index ac1e8489..e9c3ef91 100644 --- a/Usermode/Applications/init_src/main.c +++ b/Usermode/Applications/init_src/main.c @@ -27,7 +27,7 @@ void RespawnProgam(tInitProgram *Program); int AddSerialTerminal(const char *DevPathSegment, const char *ModeStr, char **Command); int AddDaemon(char *StdoutPath, char *StderrPath, char **Command); - int SpawnCommand(int c_stdin, int c_stdout, int c_stderr, char **ArgV); + int SpawnCommand(int c_stdin, int c_stdout, int c_stderr, char **ArgV, const char **EnvP); int SpawnKTerm(tInitProgram *Program); int SpawnSTerm(tInitProgram *Program); int SpawnDaemon(tInitProgram *Program); @@ -57,7 +57,9 @@ int main(int argc, char *argv[]) #if 1 for( ;; ) { - int pid = SpawnCommand(0, 1, 1, (char *[]){DEFAULT_SHELL, NULL}); + char *args[] = {DEFAULT_SHELL, NULL}; + const char *env[] = {"TERM=screen", NULL}; + int pid = SpawnCommand(0, 1, 1, args, env); // TODO: Detect errors _SysWaitTID(pid, NULL); } @@ -409,7 +411,7 @@ int AddDaemon(char *StdoutPath, char *StderrPath, char **Command) return 0; } -int SpawnCommand(int c_stdin, int c_stdout, int c_stderr, char **ArgV) +int SpawnCommand(int c_stdin, int c_stdout, int c_stderr, char **ArgV, const char **EnvP) { int handles[] = {c_stdin, c_stdout, c_stderr}; @@ -428,7 +430,7 @@ int SpawnCommand(int c_stdin, int c_stdout, int c_stderr, char **ArgV) return 1; } - int rv = _SysSpawn(ArgV[0], (const char **)ArgV, NULL, 3, handles, NULL); + int rv = _SysSpawn(ArgV[0], (const char **)ArgV, EnvP, 3, handles, NULL); _SysClose(c_stdin); if( c_stdout != c_stdin ) @@ -442,6 +444,7 @@ int SpawnCommand(int c_stdin, int c_stdout, int c_stderr, char **ArgV) int SpawnKTerm(tInitProgram *Program) { const char fmt[] = "/Devices/pts/vt%i"; + const char *env[] = {"TERM=screen", NULL}; char path[sizeof(fmt)]; snprintf(path, sizeof(path), fmt, Program->TypeInfo.KTerm.ID); @@ -449,7 +452,9 @@ int SpawnKTerm(tInitProgram *Program) int in = _SysOpen(path, OPENFLAG_READ); int out = _SysOpen(path, OPENFLAG_WRITE); - return SpawnCommand(in, out, out, Program->Command); + _SysDebug("Spawning virtual terminal '%s' with term '%s'", + path, Program->Command[0]); + return SpawnCommand(in, out, out, Program->Command, env); } int SpawnSTerm(tInitProgram *Program) @@ -472,7 +477,9 @@ int SpawnSTerm(tInitProgram *Program) _SysIOCtl(in, SERIAL_IOCTL_GETSETFORMAT, &Program->TypeInfo.STerm.FormatBits); #endif - return SpawnCommand(in, out, out, Program->Command); + _SysDebug("Spawning serial terminal '%s' with term '%s'", + Program->TypeInfo.STerm.Path, Program->Command[0]); + return SpawnCommand(in, out, out, Program->Command, NULL); } int SpawnDaemon(tInitProgram *Program) @@ -494,17 +501,15 @@ int SpawnDaemon(tInitProgram *Program) char buffer[101]; size_t len = snprintf(buffer, 100, "[%lli] init spawning ", _SysTimestamp()); _SysWrite(out, buffer, len); - char ch = '\''; for( int i = 0; Program->Command[i]; i ++ ) { - _SysWrite(out, &ch, 1); + _SysWrite(out, "'", 1); _SysWrite(out, Program->Command[i], strlen(Program->Command[i])); - _SysWrite(out, &ch, 1); + _SysWrite(out, "'", 1); } - ch = '\n'; - _SysWrite(out, &ch, 1); + _SysWrite(out, "\n", 1); } - return SpawnCommand(in, out, err, Program->Command); + return SpawnCommand(in, out, err, Program->Command, NULL); }