# 2.11BSD#431 - /usr/src/ucb/PORT/pascal/utilities/pix.c

##### Functions

    dotted            X
    main              X
    onintr            X

##### Variables

    copyright         X
    name              X

##### Macros

    ERRS              X
    ETXTBSY           X

       1: /*
       2:  * Copyright (c) 1980 Regents of the University of California.
       3:  * All rights reserved.  The Berkeley software License Agreement
       4:  * specifies the terms and conditions for redistribution.
       5:  */
       6:
       7: #ifndef lint
       8: char copyright[] =
       9: "@(#) Copyright (c) 1980 Regents of the University of California.\n\
      10:  All rights reserved.\n";
      11: #endif not lint
      12:
      13: #ifndef lint
      14: static char sccsid[] = "@(#)pix.c	5.1 (Berkeley) 6/5/85";
      15: #endif not lint
      16:
      17: /*
      18:  * pix - pi then px
      19:  *
      20:  * Bill Joy UCB August 26, 1977
      21:  */
      22:
      23: #include "whoami.h"
      24: #include "objfmt.h"
      25: #include "config.h"
      26: #define ERRS    1
      27:
      28: char    *name;
      29:
      30: int onintr();
      31:
      32: #define ETXTBSY 26
      33:
      34: main(argc, argv)
      35:     int argc;
      36:     char *argv[];
      37: {
      38:     register char **av;
      39:     register int ac;
      40:     int i, io, pid, status;
      41:     extern errno;
      42:
      43:     do
      44:         io = open("/dev/null", 0);
      45:     while (io >= 0 && io < 3);
      46:     for (io = 3; io < 15; io++)
      47:         close(io);
      48:     if ((signal(2, 1) & 01) == 0)
      49:         signal(2, onintr);
      50:     for (ac = 1; ac < argc; ac++)
      51:         if (dotted(argv[ac], 'p')) {
      52:             ac++;
      53:             break;
      54:         }
      55:     name = "-o/tmp/pixaXXXXX" + 2;
      56:     mktemp(name);
      57:     for (;;) {
      58:         io = creat(name, 0400);
      59:         if (io > 0)
      60:             break;
      61:         if (name[8] == 'z') {
      62:             perror(name);
      63:             exit(1);
      64:         }
      65:         name[8]++;
      66:     }
      67:     pid = fork();
      68:     if (pid == -1) {
      69:         write(2, "No more processes\n", 18);
      70:         onintr();
      71:     }
      72:     if (pid == 0) {
      73:         if (io != 3) {
      74:             write(2, "Impossible error in pix\n", 24);
      75:             onintr();
      76:         }
      77:         argv[ac] = 0;
      78:         argv[0] = name - 2;
      79:         do
      80:             execv(pi_comp, argv);
      81:         while (errno == ETXTBSY);
      82:         write(2, "Can't find pi\n", 14);
      83:         onintr();
      84:     }
      85:     close(io);
      86:     do
      87:         i = wait(&status);
      88:     while (i != pid && i != -1);
      89:     if (i == -1 || (status & 0377))
      90:         onintr();
      91:     if (status != 0) {
      92:         if ((status >> 8) == ERRS)
      93:             write(2, "Execution suppressed due to compilation errors\n", 47);
      94:         onintr();
      95:     }
      96:     ac--;
      97:     argv[ac] = name;
      98:     ac--;
      99:     argv[ac] = "pix";
     100:     argv[argc] = 0;
     101:     do
     102:         execv(px_debug, &argv[ac]);
     103:     while (errno == ETXTBSY);
     104:     write(2, "Can't find px\n", 14);
     105:     onintr();
     106: }
     107:
     108: dotted(cp, ch)
     109:     char *cp, ch;
     110: {
     111:     register int i;
     112:
     113:     i = strlen(cp);
     114:     return (i > 1 && cp[i - 2] == '.' && cp[i - 1] == ch);
     115: }
     116:
     117: onintr()
     118: {
     119:
     120:     signal(2, 1);
     121:     unlink(name);
     122:     exit(1);
     123: }

#### Defined functions

dotted defined in line 108; used 1 times

- in line 51

main defined in line 34; never used
onintr defined in line 117; used 8 times

- in line 30, 49, 70-75(2), 83, 90-94(2), 105

#### Defined variables

copyright defined in line 8; never used
name defined in line 28; used 9 times

- in line 55-65(6), 78, 97, 121

sccsid defined in line 14; never used

#### Defined macros

ERRS defined in line 26; used 1 times

- in line 92

ETXTBSY defined in line 32; used 2 times

- in line 81, 103

Last modified: 1985-06-06 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1259 |