# 2.11BSD#431 - /usr/src/new/jove/macvert.c

##### Functions

    htonl             X
    htons             X
    int_fmt           X
    mac_io            X
    main              X
    ntohl             X
    ntohs             X
    output_new_definitionX
    pr_putc           X
    read_and_write_macrosX

##### Variables

    int_how           X
    mac_fd            X

##### Macros

    NEWWAY            X
    OLDWAY            X

       1: /***************************************************************************
       2:  * This program is Copyright (C) 1986, 1987, 1988 by Jonathan Payne.  JOVE *
       3:  * is provided to you without charge, and with no warranty.  You may give  *
       4:  * away copies of JOVE, including sources, provided that this notice is    *
       5:  * included in all the files.                                              *
       6:  ***************************************************************************/
       7:
       8: /* Macvert converts old style macro files to the new style.  The old
       9:    style macros were binary files, the new ones are text files suitable
      10:    for loading with the "source" command of JOVE. */
      11:
      12: #include <stdio.h>
      13:
      14: extern int  read(),
      15:         write();
      16:
      17: int mac_fd;
      18:
      19: mac_io(fcn, ptr, nbytes)
      20: int (*fcn)();
      21: char    *ptr;
      22: {
      23:     int nio;
      24:
      25:     if ((nio = (*fcn)(mac_fd, ptr, nbytes)) != nbytes)
      26:         fprintf(stderr, "[Macro %s error: %d got %d]",
      27:              (fcn == read) ? "read" : "write",
      28:              nbytes,
      29:              nio);
      30: }
      31:
      32: #define NEWWAY  1
      33: #define OLDWAY  0
      34:
      35: int int_how = NEWWAY;
      36:
      37: /* Formatting int's the old way or the new "improved" way? */
      38:
      39: #if vax || pdp11
      40: long htonl(x)
      41: register long x;
      42: {
      43:     return( (((x >>  0) & 0377) << 24) |
      44:         (((x >>  8) & 0377) << 16) |
      45:         (((x >> 16) & 0377) <<  8) |
      46:         (((x >> 24) & 0377) <<  0) );
      47: }
      48:
      49: short htons(x)
      50: register short x;
      51: {
      52:     return( (((x >>  0) & 0377) << 8) |
      53:         (((x >>  8) & 0377) << 0) );
      54: }
      55:
      56: long ntohl(x)
      57: register long x;
      58: {
      59:     return( (((x >>  0) & 0377) << 24) |
      60:         (((x >>  8) & 0377) << 16) |
      61:         (((x >> 16) & 0377) <<  8) |
      62:         (((x >> 24) & 0377) <<  0) );
      63: }
      64:
      65: short ntohs(x)
      66: register short x;
      67: {
      68:     return( (((x >>  0) & 0377) << 8) |
      69:         (((x >>  8) & 0377) << 0) );
      70: }
      71: #else
      72: long htonl(x)
      73: register long x;
      74: {
      75:     return(x);
      76: }
      77:
      78: short htons(x)
      79: register short x;
      80: {
      81:     return(x);
      82: }
      83:
      84: long ntohl(x)
      85: register long x;
      86: {
      87:     return(x);
      88: }
      89:
      90: short ntohs(x)
      91: register short x;
      92: {
      93:     return(x);
      94: }
      95: #endif
      96:
      97: int_fmt(i)
      98: {
      99:     if (int_how == NEWWAY)
     100:         return ntohl(i);
     101:     return i;
     102: }
     103:
     104: read_and_write_macros(filein)
     105: char    *filein;
     106: {
     107:     int namelen,
     108:         bodylen,
     109:         tmp;
     110:     char    macname[256],
     111:         macbuf[1024];
     112:
     113:     if ((mac_fd = open(filein, 0)) == -1)
     114:         fprintf(stderr, "Cannot open %s\n", filein);
     115:
     116:     while (read(mac_fd, (char *) &tmp, sizeof tmp) == (sizeof tmp)) {
     117: retry:      bodylen = int_fmt(tmp);
     118:         if (bodylen <= 0 || bodylen > 10000) {
     119:             if (int_how == NEWWAY) {
     120:                 int_how = OLDWAY;
     121:                 goto retry;
     122:             } else {
     123:                 fprintf(stderr, "I don't think \"%s\" is an old style JOVE macro file\n", filein);
     124:                 exit(1);
     125:             }
     126:         }
     127:         mac_io(read, (char *) &namelen, sizeof namelen);
     128:         namelen = int_fmt(namelen);
     129:         mac_io(read, macname, namelen);
     130:         mac_io(read, macbuf, bodylen);
     131:         output_new_definition(macname, macbuf, bodylen);
     132:     }
     133: }
     134:
     135: pr_putc(c)
     136: {
     137:     if (c == '\\' || c == '^')
     138:         putchar('\\');
     139:      else if (c < ' ' || c == '\177') {
     140:         putchar('^');
     141:         c = (c == '\177') ? '?' : (c + '@');
     142:     }
     143:     putchar(c);
     144: }
     145:
     146: output_new_definition(name, body, bodylen)
     147: char    *name,
     148:     *body;
     149: {
     150:     int i;
     151:
     152:     fprintf(stdout, "define-macro %s ", name);
     153:     for (i = 0; i < bodylen; i++)
     154:         pr_putc(body[i]);
     155:     putchar('\n');
     156: }
     157:
     158: main(argc, argv)
     159: char    *argv[];
     160: {
     161:     if (argc != 2) {
     162:         fprintf(stderr, "usage: macvert <old-style-macro-file>\n");
     163:         exit(1);
     164:     }
     165:
     166:     read_and_write_macros(argv[1]);
     167: }

#### Defined functions

htonl defined in line 72; never used
htons defined in line 78; never used
int_fmt defined in line 97; used 2 times

- in line 117, 128

mac_io defined in line 19; used 3 times

- in line 127-130(3)

main defined in line 158; never used
ntohl defined in line 84; used 1 times

- in line 100

ntohs defined in line 90; never used
output_new_definition defined in line 146; used 1 times

- in line 131

pr_putc defined in line 135; used 3 times

- in line 154
- in /usr/src/new/jove/externs.h line 511, 1117

read_and_write_macros defined in line 104; used 1 times

- in line 166

#### Defined variables

int_how defined in line 35; used 3 times

- in line 99, 119-120(2)

mac_fd defined in line 17; used 3 times

- in line 25, 113-116(2)

#### Defined macros

NEWWAY defined in line 32; used 3 times

- in line 35, 99, 119

OLDWAY defined in line 33; used 1 times

- in line 120

Last modified: 1988-03-15 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 811 |