home *** CD-ROM | disk | FTP | other *** search
/ Shareware 1 2 the Maxx / sw_1.zip / sw_1 / OS2 / BEAV132X.ZIP / SPAWN.C < prev    next >
C/C++ Source or Header  |  1992-01-06  |  2KB  |  77 lines

  1. /*
  2. *    MS-DOS spawn command.com
  3. */
  4. #include        "def.h"
  5.  
  6. #ifdef OS2
  7. #define MSDOS  1
  8. #endif
  9.  
  10. extern    char    MSG_shell[];
  11. extern    char    MSG_def_shell[];
  12. extern    char    MSG_pmpt[];
  13. extern    char    MSG_pt[];
  14. extern    char    MSG_pme[];
  15. extern    char    MSG_null[];
  16.  
  17. /* #include     <dos.h> */
  18. #ifdef MSDOS
  19. #include        "process.h"
  20. #endif
  21. char   *cspec = NULL;           /* Command string.      */
  22. char   *pspec = NULL;
  23.  
  24. /*
  25. * Create a subjob with a copy
  26. * of the command intrepreter in it. When the
  27. * command interpreter exits, mark the screen as
  28. * garbage so that you do a full repaint.
  29. */
  30. bool spawncli (f, n, k)
  31. int f, n, k;
  32. {
  33. #ifdef MSDOS
  34.  
  35.     char   *getenv ();
  36. #ifndef OS2
  37.     char    old_prompt[NCOL];
  38.     char    prompt_line[NCOL];
  39. #endif
  40.  
  41.     ttcolor (CTEXT);            /* Normal color.        */
  42.     ttmove (nrow - 1, 0);       /* Last line.           */
  43.     ttflush ();
  44.     ttcooked ();
  45. #ifndef OS2
  46. #ifndef IBM
  47.     strcpy (prompt_line, MSG_pmpt);
  48.     pspec = getenv (MSG_pt);
  49.     strcpy (old_prompt, pspec);
  50.     strcat (prompt_line, pspec);
  51.     if (strlen (prompt_line - strlen (MSG_pme)) >= 64)
  52.     /* VERY rude, but setenv not found */
  53.     {
  54.         if (putenv (MSG_pmpt) == -1)
  55.             exit (1);
  56.     }
  57.     else
  58.         if (putenv (prompt_line) == -1)
  59.             exit (1);
  60.  
  61. #endif
  62. #endif
  63.     if (!cspec && !(cspec = getenv (MSG_shell)))/* jam */
  64.         cspec = MSG_def_shell;
  65.     spawnl (P_WAIT, cspec, MSG_null, NULL);
  66. #ifndef OS2
  67.     putenv (MSG_pme);
  68.     if (putenv (old_prompt) == -1)
  69.         exit (1);
  70. #endif
  71.     ttraw ();
  72.     sgarbf = TRUE;
  73. #endif
  74.     return (TRUE);
  75. }
  76.  
  77.