home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-386-Vol-2of3.iso / c / csh4.zip / FEXECV.C < prev    next >
C/C++ Source or Header  |  1985-09-05  |  1KB  |  58 lines

  1. #ifdef DEBUG
  2. #ifndef FILE
  3. #include <stdio.h>
  4. #endif
  5. #include <ctype.h>
  6. #include <debug.h>
  7. #endif
  8.  
  9.  
  10. /* Copyright (C) 1983, 1984 by Manx Software Systems */
  11. /* modified by kent williams to employ environment managed in env.c */
  12. extern int env_paragraph;
  13.  
  14. fexecv(path, argv)
  15. char *path, **argv;
  16. {
  17.     register char *cp, *xp;
  18.     int i;
  19.     char buffer[258];
  20.     char fcb1[16], fcb2[16];
  21.  
  22.     cp = buffer+1;
  23.     i = 1;
  24.     if (*argv) {
  25.         ++argv;            /* skip arg0, used for unix (tm) compatibility */
  26.         while (xp = *argv++) {
  27.             if (i == 1)
  28.                 fcbinit(xp, fcb1);
  29.             else if (i == 2)
  30.                 fcbinit(xp, fcb2);
  31.             while (*xp) {
  32.                 if (cp >= buffer+256)
  33.                     goto done;
  34.                 *cp++ = *xp++;
  35.             }
  36.             *cp++ = ' ';
  37.             ++i;
  38.         }
  39.     }
  40. done:
  41.     buffer[0] = cp - (buffer+2);
  42.     /* terminate string */
  43.     buffer[buffer[0]+1] = 0;
  44. #ifdef DEBUG
  45.         fprintf(stderr,"\nbuffer[0] = %d\n",buffer[0]);
  46.         for (i = 1; buffer[i] ; i++)
  47.         {
  48.             if (isprint(buffer[i]))
  49.                 putchar(buffer[i]);
  50.             else
  51.                 fprintf("buffer[%d] = %d\n",i,buffer[i]);
  52.         }
  53.         crlf();
  54. #endif
  55.     return fexec(path, env_paragraph, buffer, fcb1, fcb2);
  56. }
  57.  
  58.