Hi!

______________O\_/_________________________________\_/O______________
struct config Config = {
  0,
  NUMBUFF,
  NFILES,
  0,
  NFCBS,
  0,
  "command.com",
  " /P /E:256\r\n",
[...]
STATIC struct table commands[] = {
  {"COMMAND", 1, InitPgm},
  {"SHELL", 1, InitPgm},
[...]
STATIC VOID InitPgm(BYTE * pLine)
{
  static char init[NAMEMAX];
  static char inittail[NAMEMAX];

  Config.cfgInit = init;
  Config.cfgInitTail = inittail;
_____________________________________________________________________
              O/~\                                 /~\O

- InitPgm() used both for (undocumented) command "COMMAND" and for "SHELL".
  This is valid only if "COMMAND" is duplication for "SHELL", but then this
  statement is useless.

- init[] and inittail[] used without BSS_INIT(). Bug?

     I may suggest next patch:

______________O\_/_________________________________\_/O______________
diff -ruNp old/config.c new/config.c
--- old/config.c        2004-04-14 16:04:04.000000000 +0000
+++ new/config.c        2004-04-22 11:01:06.000000000 +0000
@@ -125,6 +125,9 @@ static UBYTE ErrorAlreadyPrinted[128] BS
 char master_env[128] BSS_INIT({0});
 static char *envp = master_env;

+static char init[NAMEMAX] = "command.com";
+static char inittail[NAMEMAX] = " /P /E:256\r\n";
+
 struct config Config = {
   0,
   NUMBUFF,
@@ -132,8 +135,8 @@ struct config Config = {
   0,
   NFCBS,
   0,
-  "command.com",
-  " /P /E:256\r\n",
+  init,
+  inittail,
   NLAST,
   0,
   NSTACKS,
@@ -1237,12 +1240,6 @@ STATIC VOID InitPgmHigh(BYTE * pLine)

 STATIC VOID InitPgm(BYTE * pLine)
 {
-  static char init[NAMEMAX];
-  static char inittail[NAMEMAX];
-
-  Config.cfgInit = init;
-  Config.cfgInitTail = inittail;
-
   /* Get the string argument that represents the new init pgm     */
   pLine = GetStringArg(pLine, Config.cfgInit);

_____________________________________________________________________
              O/~\                                 /~\O

But I don't understand why from 2033 cfgInit and cfgInitTail was converted
from arrays to pointers. I see only only one reason: cfgInit used as pointer
to Cmd.ctBuffer in main.c:kernel(). But who prevents to declare cfgInit as
array of [NAMEMAX*2] and remove completely Cmd and .cfgInitTail?

PS: Bart, if you wish, I may remove cfgInitTail for you.
PPS: Bart, you don't answer, why you not move VDISK_BOOT_SECTOR from
inithma.c:InstallVDISK() into kernel.asm and not remove InstallVDISK()?




-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel

Reply via email to