home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l200 / 6.ddi / TOOL / SYS.C < prev    next >
Encoding:
C/C++ Source or Header  |  1986-10-01  |  3.1 KB  |  160 lines

  1. /* sys.c -- system dependent modules
  2.  
  3.     Copyright (c) 1984 by JMI Software Consultants, Inc.
  4. */
  5. #include "upd.h"
  6.  
  7.  
  8. /* add an object file to an object library
  9. */
  10. BOOL arch(obj, lib)
  11.     TEXT *obj, *lib;
  12.     {
  13.     IMPORT BITS errors;
  14.     EXFUNC TEXT *namcpy(), *strcpy();
  15.     TEXT name[128], new[128];
  16.     BOOL success;
  17.  
  18.     *namcpy(name, obj) = NULLCH;
  19.     *namcpy(new, lib) = NULLCH;
  20.      success = !spawnlp(0, "LIB", "LIB", new, "-+", name, ";", NULL);
  21.     if (!success)
  22.         errors |= BADARCH;
  23.     return (success);
  24.     }
  25.  
  26. /* translate BASIC program into C
  27. */
  28. BOOL b2c(bname)
  29.     TEXT *bname;
  30.     {
  31.     EXFUNC TEXT *namcpy(), *strcpy();
  32.     IMPORT BITS errors;
  33.     IMPORT TEXT *flags, *tran_pgms[];
  34.     TEXT cname[128];
  35.     BOOL success;
  36.  
  37.     strcpy(namcpy(cname, bname), ".c");
  38.     success = !spawnlp(0, tran_pgms[0], tran_pgms[0], flags, bname, cname, NULL);
  39.     if (!success)
  40.         errors |= BADCOMP;
  41.     return (success);
  42.     }
  43.  
  44. /* compile file using the indicated mode
  45. */
  46. BOOL cc(name, mode)
  47.     TEXT *name;
  48.     INT mode;
  49.     {
  50.     IMPORT TEXT *c1_flag[];
  51.     IMPORT BITS errors;
  52.     BOOL success;
  53.  
  54.     success = !spawnlp(0, "MSC","MSC", c1_flag[mode], name, ";", NULL);
  55.     if (!success)
  56.         errors |= BADCOMP;
  57.     return (success);
  58.     }
  59.  
  60. /* determine if a file exists
  61. */
  62. BOOL exists(s)
  63.     TEXT *s;
  64.     {
  65.     INT fd;
  66.  
  67.     if (!s)
  68.         return (YES);
  69.     if (0 <= (fd = open(s, 2)))
  70.         close(fd);
  71.     return (0 <= fd);
  72.     }
  73.  
  74. /* rebuild BASTOC translator
  75. */
  76. BOOL ld(mode)
  77.     INT mode;
  78.     {
  79.     IMPORT TEXT *tran_pgms[], *tran_libs[], *lib_libs[], *c_libs[], *tran_objs[];
  80.     IMPORT BITS errors;
  81.     EXFUNC TEXT *namcpy(), *strcpy();
  82.     TEXT cmd[128], *s;
  83.     BOOL success;
  84.  
  85.     s = cmd;
  86.     s = namcpy(s, tran_objs[mode]);
  87.     *s++ = ',';
  88.     s = namcpy(s, tran_pgms[mode]);
  89.     s = strcpy(s, ",nul,");
  90.     s = namcpy(s, tran_libs[mode]);
  91.     *s++ = ' ';
  92.     s = namcpy(s, lib_libs[mode]);
  93.     *s++ = ' ';
  94.     s = namcpy(s, c_libs[mode]);
  95.     *s++ = NULLCH;
  96.     success = !spawnlp(0, "LINK", "LINK", cmd, NULL);
  97.     if (!success)
  98.         errors |= BADLINK;
  99.     return (success);
  100.     }
  101.  
  102. /* o2x.c -- link files to produce executable program
  103. */
  104.  
  105. VOID o2x(ac, av)
  106.     INT ac;
  107.     TEXT **av;
  108.     {
  109.     IMPORT TEXT *lib_libs[], *c_libs[], xeq[];
  110.     IMPORT BITS errors;
  111.     IMPORT INT mode;
  112.     EXFUNC TEXT *namcpy();
  113.     TEXT cmd[128], *s, *p, **aav;
  114.     BOOL success;
  115.     INT aac, l;
  116.  
  117.     p = cmd;
  118.     aac = ac;
  119.     aav = av;
  120.     while (--ac)
  121.         if (**++av != '-' && **av != '+' && **av)
  122.             {
  123.             if (!xeq[0])
  124.                 *namcpy(xeq, *av) = NULLCH;
  125.             l = strlen(*av);
  126.             s = *av + l - 2;
  127.             if (!strcmp(s, ".b") || !strcmp(s, ".c") || !strcmp(s-2, ".obj") || !strcmp(s-2, ".bas"))
  128.                 {
  129.                 p = namcpy(p, *av);
  130.                 *p++ = '+';
  131.                 }
  132.             }
  133.     ac = aac;
  134.     av = aav;
  135.     *(p - 1) = ',';
  136.     p = namcpy(p, xeq);
  137.     p = namcpy(p, ",nul,");
  138.     ac = aac;
  139.     av = aav;
  140.     while (--ac)
  141.         if (**++av != '-' && **av != '+' && **av)
  142.             {
  143.             l = strlen(*av);
  144.             s = *av +l - 2;
  145.             if (strcmp(s, ".b") && strcmp(s, ".c") && strcmp(s-2, ".obj") && strcmp(s-2, ".bas"))
  146.                 {
  147.                 p = namcpy(p, *av);
  148.                 *p++ = ' ';
  149.                 }
  150.             }
  151.     p = namcpy(p, lib_libs[mode]);
  152.     *p++ = ' ';
  153.     p = namcpy(p, c_libs[mode]);
  154.     *p = NULLCH;
  155.     success = !spawnlp(0, "LINK", "LINK", cmd, NULL);
  156.     if (!success)
  157.         errors |= BADLINK;
  158.     return (success);
  159.     }
  160.