dwl10@uts.amdahl.com (Dave Lowrey) (12/14/89)
I have run into a problem when running DME (v138) under SKsh. SKsh will hang up after using theDME 'execute' command. I have isolated it to a line of code that looks like this: proc->pr_ConsoleTask = (APTR)BTOCP(NilFH, struct FileHandle *)->fh_Port; The routine it is part of is: (from command.c) do_execute() { long oldlock = CurrentDir(Ep->dirlock); long NilFH = Open("null:", 1006); PROC *proc = (PROC *)FindTask(NULL); if (NilFH) { proc->pr_ConsoleTask = (APTR)BTOCP(NilFH, struct FileHandle *)->fh_Port; Execute(av[1], NilFH, NilFH); Close(NilFH); } else { title("NULL: device required for (execute)"); } CurrentDir(oldlock); } In Matt's doc, he says that the NULL: device was used, so that he could guarentee that 'execute' would work even if there wasn't a console window avaliable. Now, that weird line of code looks as if he is taking a pointer to the NULL: FileHandle's msg port and placing that poingter in the process' pointer to it's console task. In my book "->Task != ->MsgPort". Can anyone explain this to me? I wrote Matt, but received no response. To re-produce the problem: 1 - Start up SKsh 2 - DME 3 - Use the execute command to run some dos command 4 - Exit DME (You WILL (or should ) receive your SKsh prompt) 5 - Use the SKsh exit command to terminate SKsh 6 - SKsh, but not the system, will hang. Thanks in advance! -- "What is another word | Dave Lowrey | [The opinions expressed MAY be for 'Thesaurus'?" | Amdahl Corp. | those of the author and are not | Houston, Texas | necessarily those of his Steven Wright | amdahl!dwl10 | employer] (`nuff said!)