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
Usermode/AxWin3 - Cleaning up and separating code
[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
3d96028
..
b3740f3
100644
(file)
--- a/
Usermode/Applications/init_src/main.c
+++ b/
Usermode/Applications/init_src/main.c
@@
-252,13
+252,12
@@
int ProcessInittab(const char *Path)
goto lineError;
}
AddKTerminal(id, command);
goto lineError;
}
AddKTerminal(id, command);
- free(command);
}
else if(strcmp(cmdbuf, "stty") == 0 ) {
// stty <devpath> [78][NOE][012][bB]<baud> <command...>
char path_seg[32+1];
char modespec[4+6+1];
}
else if(strcmp(cmdbuf, "stty") == 0 ) {
// stty <devpath> [78][NOE][012][bB]<baud> <command...>
char path_seg[32+1];
char modespec[4+6+1];
- if( fscanf(fp, "%32s %
6
s ", path_seg, modespec) != 2 ) {
+ if( fscanf(fp, "%32s %
10
s ", path_seg, modespec) != 2 ) {
goto lineError;
}
char **command = ReadCommand(fp);
goto lineError;
}
char **command = ReadCommand(fp);
@@
-271,8
+270,14
@@
int ProcessInittab(const char *Path)
// - Runs a daemon (respawning) that logs to the specified files
// - Will append a header whenever the daemon starts
char *stdout_path = ReadQuotedString(fp);
// - Runs a daemon (respawning) that logs to the specified files
// - Will append a header whenever the daemon starts
char *stdout_path = ReadQuotedString(fp);
+ if( !stdout_path )
+ goto lineError;
char *stderr_path = ReadQuotedString(fp);
char *stderr_path = ReadQuotedString(fp);
+ if( !stderr_path )
+ goto lineError;
char **command = ReadCommand(fp);
char **command = ReadCommand(fp);
+ if( !command )
+ goto lineError;
AddDaemon(stdout_path, stderr_path, command);
}
AddDaemon(stdout_path, stderr_path, command);
}
@@
-368,8
+373,9
@@
int AddSerialTerminal(const char *DevPathSegment, const char *ModeStr, char **Co
int baud;
// Parse mode string
int baud;
// Parse mode string
- if( sscanf(ModeStr, "%1[78]%1[NOE]%1[012]%*1[bB]%d", &dbit, &parity, &sbit, &baud) !=
5
) {
+ if( sscanf(ModeStr, "%1[78]%1[NOE]%1[012]%*1[bB]%d", &dbit, &parity, &sbit, &baud) !=
4
) {
// Oops?
// Oops?
+ _SysDebug("Serial mode string is invalid ('%s')", ModeStr);
return -1;
}
return -1;
}
@@
-420,7
+426,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%ic
";
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);
@@
-436,6
+442,11
@@
int SpawnSTerm(tInitProgram *Program)
int in = _SysOpen(Program->TypeInfo.STerm.Path, OPENFLAG_READ);
int out = _SysOpen(Program->TypeInfo.STerm.Path, OPENFLAG_WRITE);
int in = _SysOpen(Program->TypeInfo.STerm.Path, OPENFLAG_READ);
int out = _SysOpen(Program->TypeInfo.STerm.Path, OPENFLAG_WRITE);
+ if(in == -1 || out == -1 ) {
+ _SysDebug("Unable to open serial port '%s'", Program->TypeInfo.STerm.Path);
+ return -1;
+ }
+
#if 0
if( _SysIOCtl(in, 0, NULL) != DRV_TYPE_SERIAL )
{
#if 0
if( _SysIOCtl(in, 0, NULL) != DRV_TYPE_SERIAL )
{
@@
-462,6
+473,13
@@
int SpawnDaemon(tInitProgram *Program)
return -2;
}
return -2;
}
+ // Log spawn header
+ {
+ char buffer[101];
+ size_t len = snprintf(buffer, 100, "[%i] init spawning '%s'\n", _SysTimestamp(), Program->Command);
+ _SysWrite(out, buffer, len);
+ }
+
return SpawnCommand(in, out, err, Program->Command);
}
return SpawnCommand(in, out, err, Program->Command);
}
UCC
git Repository :: git.ucc.asn.au