Annotation of 43BSDTahoe/new/jove/macvert.c, revision 1.1

1.1     ! root        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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.