home *** CD-ROM | disk | FTP | other *** search
- /* sys.c -- system dependent modules
-
- Copyright (c) 1984 by JMI Software Consultants, Inc.
- */
- #include "upd.h"
-
-
- /* add an object file to an object library
- */
- BOOL arch(obj, lib)
- TEXT *obj, *lib;
- {
- IMPORT BITS errors;
- EXFUNC TEXT *namcpy(), *strcpy();
- TEXT name[128], new[128];
- BOOL success;
-
- *namcpy(name, obj) = NULLCH;
- *namcpy(new, lib) = NULLCH;
- success = !spawnlp(0, "LIB", "LIB", new, "-+", name, ";", NULL);
- if (!success)
- errors |= BADARCH;
- return (success);
- }
-
- /* translate BASIC program into C
- */
- BOOL b2c(bname)
- TEXT *bname;
- {
- EXFUNC TEXT *namcpy(), *strcpy();
- IMPORT BITS errors;
- IMPORT TEXT *flags, *tran_pgms[];
- TEXT cname[128];
- BOOL success;
-
- strcpy(namcpy(cname, bname), ".c");
- success = !spawnlp(0, tran_pgms[0], tran_pgms[0], flags, bname, cname, NULL);
- if (!success)
- errors |= BADCOMP;
- return (success);
- }
-
- /* compile file using the indicated mode
- */
- BOOL cc(name, mode)
- TEXT *name;
- INT mode;
- {
- IMPORT TEXT *c1_flag[];
- IMPORT BITS errors;
- BOOL success;
-
- success = !spawnlp(0, "MSC","MSC", c1_flag[mode], name, ";", NULL);
- if (!success)
- errors |= BADCOMP;
- return (success);
- }
-
- /* determine if a file exists
- */
- BOOL exists(s)
- TEXT *s;
- {
- INT fd;
-
- if (!s)
- return (YES);
- if (0 <= (fd = open(s, 2)))
- close(fd);
- return (0 <= fd);
- }
-
- /* rebuild BASTOC translator
- */
- BOOL ld(mode)
- INT mode;
- {
- IMPORT TEXT *tran_pgms[], *tran_libs[], *lib_libs[], *c_libs[], *tran_objs[];
- IMPORT BITS errors;
- EXFUNC TEXT *namcpy(), *strcpy();
- TEXT cmd[128], *s;
- BOOL success;
-
- s = cmd;
- s = namcpy(s, tran_objs[mode]);
- *s++ = ',';
- s = namcpy(s, tran_pgms[mode]);
- s = strcpy(s, ",nul,");
- s = namcpy(s, tran_libs[mode]);
- *s++ = ' ';
- s = namcpy(s, lib_libs[mode]);
- *s++ = ' ';
- s = namcpy(s, c_libs[mode]);
- *s++ = NULLCH;
- success = !spawnlp(0, "LINK", "LINK", cmd, NULL);
- if (!success)
- errors |= BADLINK;
- return (success);
- }
-
- /* o2x.c -- link files to produce executable program
- */
-
- VOID o2x(ac, av)
- INT ac;
- TEXT **av;
- {
- IMPORT TEXT *lib_libs[], *c_libs[], xeq[];
- IMPORT BITS errors;
- IMPORT INT mode;
- EXFUNC TEXT *namcpy();
- TEXT cmd[128], *s, *p, **aav;
- BOOL success;
- INT aac, l;
-
- p = cmd;
- aac = ac;
- aav = av;
- while (--ac)
- if (**++av != '-' && **av != '+' && **av)
- {
- if (!xeq[0])
- *namcpy(xeq, *av) = NULLCH;
- l = strlen(*av);
- s = *av + l - 2;
- if (!strcmp(s, ".b") || !strcmp(s, ".c") || !strcmp(s-2, ".obj") || !strcmp(s-2, ".bas"))
- {
- p = namcpy(p, *av);
- *p++ = '+';
- }
- }
- ac = aac;
- av = aav;
- *(p - 1) = ',';
- p = namcpy(p, xeq);
- p = namcpy(p, ",nul,");
- ac = aac;
- av = aav;
- while (--ac)
- if (**++av != '-' && **av != '+' && **av)
- {
- l = strlen(*av);
- s = *av +l - 2;
- if (strcmp(s, ".b") && strcmp(s, ".c") && strcmp(s-2, ".obj") && strcmp(s-2, ".bas"))
- {
- p = namcpy(p, *av);
- *p++ = ' ';
- }
- }
- p = namcpy(p, lib_libs[mode]);
- *p++ = ' ';
- p = namcpy(p, c_libs[mode]);
- *p = NULLCH;
- success = !spawnlp(0, "LINK", "LINK", cmd, NULL);
- if (!success)
- errors |= BADLINK;
- return (success);
- }