From 7e0f021a9aec35fd8e6725e87e3313b101d26f5e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 27 Jan 2008 11:37:44 +0100 Subject: Initial import (2.0.2-6) --- reference/C/CONTRIB/SNIP/shel2dos.c | 50 +++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100755 reference/C/CONTRIB/SNIP/shel2dos.c (limited to 'reference/C/CONTRIB/SNIP/shel2dos.c') diff --git a/reference/C/CONTRIB/SNIP/shel2dos.c b/reference/C/CONTRIB/SNIP/shel2dos.c new file mode 100755 index 0000000..78c7f9a --- /dev/null +++ b/reference/C/CONTRIB/SNIP/shel2dos.c @@ -0,0 +1,50 @@ +/* +** SHEL2DOS.C - Shell to DOS from a running program +** +** Original Copyright 1989-1991 by Bob Stout as part of +** the MicroFirm Function Library (MFL) +** +** This subset version is hereby donated to the public domain. +*/ + +#include +#include +#include +#include + +int shell_to_DOS(void) +{ + char *comspec, prompt[256], *oldprompt; + int retval; + + comspec = getenv("COMSPEC"); + if(comspec == NULL) + comspec = "COMMAND.COM"; /* Better than nothing... */ + + sprintf(prompt, "PROMPT=[Type EXIT to return to program]\r\n%s", + oldprompt = getenv("PROMPT")); + putenv(prompt); + + retval = spawnlp(0, comspec, comspec, NULL); + + sprintf(prompt, "PROMPT=%s", oldprompt); + putenv(prompt); + + return retval; +} + +#ifdef TEST + +#include + +void main(void) +{ + int retval = shell_to_DOS(); + + printf("shell_to_DOS() returned %d\n", retval); + + retval = shell_to_DOS(); + printf("shell_to_DOS() returned %d\n", retval); +} + +#endif -- cgit v1.2.3-54-g00ecf