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
.gitignore - Hide all udi packages
[tpg/acess2.git]
/
Usermode
/
Applications
/
init_src
/
main.c
diff --git
a/Usermode/Applications/init_src/main.c
b/Usermode/Applications/init_src/main.c
index
1cdf98b
..
ac1e848
100644
(file)
--- a/
Usermode/Applications/init_src/main.c
+++ b/
Usermode/Applications/init_src/main.c
@@
-289,7
+289,7
@@
int ProcessInittab(const char *Path)
if(!command)
goto lineError;
if(!command)
goto lineError;
- int handles[] = {0, 1,
2
};
+ int handles[] = {0, 1,
1
};
int pid = _SysSpawn(command[0], (const char **)command, NULL, 3, handles, NULL);
int retstatus;
_SysWaitTID(pid, &retstatus);
int pid = _SysSpawn(command[0], (const char **)command, NULL, 3, handles, NULL);
int retstatus;
_SysWaitTID(pid, &retstatus);
@@
-387,7
+387,7
@@
int AddSerialTerminal(const char *DevPathSegment, const char *ModeStr, char **Co
modeword |= (sbit - '0') << 3;
// Create info
modeword |= (sbit - '0') << 3;
// Create info
- const char DEVPREFIX[] = "/Devices/";
+ const char DEVPREFIX[] = "/Devices/
pts/serial
";
int pathlen = sizeof(DEVPREFIX) + strlen(DevPathSegment);
tInitProgram *ent = AllocateProgram(Command, PT_STERM, sizeof(struct sSTerm)+pathlen);
ent->TypeInfo.STerm.FormatBits = modeword;
int pathlen = sizeof(DEVPREFIX) + strlen(DevPathSegment);
tInitProgram *ent = AllocateProgram(Command, PT_STERM, sizeof(struct sSTerm)+pathlen);
ent->TypeInfo.STerm.FormatBits = modeword;
@@
-413,6
+413,21
@@
int SpawnCommand(int c_stdin, int c_stdout, int c_stderr, char **ArgV)
{
int handles[] = {c_stdin, c_stdout, c_stderr};
{
int handles[] = {c_stdin, c_stdout, c_stderr};
+ _SysDebug("Spawning '%s'", ArgV[0]);
+
+ if( c_stdin < 0 ) {
+ _SysDebug("SpawnCommand: stdin is invalid");
+ return 1;
+ }
+ if( c_stdout < 0 ) {
+ _SysDebug("SpawnCommand: stdout is invalid");
+ return 1;
+ }
+ if( c_stderr < 0 ) {
+ _SysDebug("SpawnCommand: stderr is invalid");
+ return 1;
+ }
+
int rv = _SysSpawn(ArgV[0], (const char **)ArgV, NULL, 3, handles, NULL);
_SysClose(c_stdin);
int rv = _SysSpawn(ArgV[0], (const char **)ArgV, NULL, 3, handles, NULL);
_SysClose(c_stdin);
@@
-426,7
+441,7
@@
int SpawnCommand(int c_stdin, int c_stdout, int c_stderr, char **ArgV)
int SpawnKTerm(tInitProgram *Program)
{
int SpawnKTerm(tInitProgram *Program)
{
- const char fmt[] = "/Devices/
VTerm/
%i";
+ const char fmt[] = "/Devices/
pts/vt
%i";
char path[sizeof(fmt)];
snprintf(path, sizeof(path), fmt, Program->TypeInfo.KTerm.ID);
char path[sizeof(fmt)];
snprintf(path, sizeof(path), fmt, Program->TypeInfo.KTerm.ID);
@@
-466,7
+481,8
@@
int SpawnDaemon(tInitProgram *Program)
int out = _SysOpen(Program->TypeInfo.Daemon.StdoutPath, OPENFLAG_WRITE);
int err = _SysOpen(Program->TypeInfo.Daemon.StderrPath, OPENFLAG_WRITE);
int out = _SysOpen(Program->TypeInfo.Daemon.StdoutPath, OPENFLAG_WRITE);
int err = _SysOpen(Program->TypeInfo.Daemon.StderrPath, OPENFLAG_WRITE);
- if( in == -1 || out == -1 || err == -1 ) {
+ if( in < 0 || out < 0 || err < 0 ) {
+ perror("SpawnDaemon");
_SysClose(in);
_SysClose(out);
_SysClose(err);
_SysClose(in);
_SysClose(out);
_SysClose(err);
@@
-476,8
+492,17
@@
int SpawnDaemon(tInitProgram *Program)
// Log spawn header
{
char buffer[101];
// Log spawn header
{
char buffer[101];
- size_t len = snprintf(buffer, 100, "[%
i] init spawning '%s'\n", _SysTimestamp(), Program->Command
);
+ size_t len = snprintf(buffer, 100, "[%
lli] init spawning ", _SysTimestamp()
);
_SysWrite(out, buffer, len);
_SysWrite(out, buffer, len);
+ char ch = '\'';
+ for( int i = 0; Program->Command[i]; i ++ )
+ {
+ _SysWrite(out, &ch, 1);
+ _SysWrite(out, Program->Command[i], strlen(Program->Command[i]));
+ _SysWrite(out, &ch, 1);
+ }
+ ch = '\n';
+ _SysWrite(out, &ch, 1);
}
return SpawnCommand(in, out, err, Program->Command);
}
return SpawnCommand(in, out, err, Program->Command);
UCC
git Repository :: git.ucc.asn.au