Annotation of 41BSD/cmd/vpr/railmag.c, revision 1.1.1.1

1.1       root        1: #
                      2: /*
                      3:  * tell vcat which fonts are loaded on the "typesetter"
                      4:  */
                      5: #define MAGIC_NUMBER 0436
                      6: #define RAILMAG_FILE "/usr/lib/vfont/railmag"
                      7: 
                      8: char *concat();
                      9: int rmfd;
                     10: char *rm[4];
                     11: char tbuf[256];
                     12: 
                     13: main(argc, argv)
                     14:        int argc;
                     15:        char *argv[];
                     16:        {
                     17:        register int fnum;
                     18:        char cbuf[4][50];
                     19: 
                     20:        readrm();
                     21:        if(argc <= 1)
                     22:                {
                     23:                printrm();
                     24:                exit(0);
                     25:                }
                     26:        while(--argc)
                     27:                {
                     28:                argv++;
                     29:                fnum = argv[0][0]-'0';
                     30:                if(fnum < 1 || fnum > 4)
                     31:                        error("Invalid font number");
                     32:                checkfont(argv[1]);
                     33:                if(argv[1][0] == '/')
                     34:                        rm[fnum-1] = argv[1];
                     35:                   else
                     36:                        rm[fnum-1] = concat(cbuf[fnum-1], "/usr/lib/vfont/", argv[1]);
                     37:                argv++; argc--;
                     38:                }
                     39:        writerm();
                     40:        }
                     41: 
                     42: 
                     43: error(str)
                     44:        char *str;
                     45:        {
                     46: 
                     47:        write(2, "Railmag: ", 9);
                     48:        write(2, str, strlen(str));
                     49:        write(2, "\n", 1);
                     50:        exit();
                     51:        }
                     52: 
                     53: 
                     54: checkfont(file)
                     55:        char *file;
                     56:        {
                     57:        register int fd;
                     58:        char cbuf[80];
                     59:        char cbuf2[80];
                     60:        short word;
                     61: 
                     62:        if((fd = open(concat(cbuf, file, ".10"), 0)) < 0)
                     63:                if((fd = open(concat(cbuf2, "/usr/lib/vfont/", cbuf), 0)) < 0)
                     64:                        error("cant open font");
                     65:        if(read(fd, &word, 2) != 2)
                     66:                error("cant read font");
                     67:        if(word != MAGIC_NUMBER)
                     68:                error("font has no magic number");
                     69:        close(fd);
                     70:        }
                     71: 
                     72: readrm()
                     73:        {
                     74:        register int i;
                     75:        register char *cp;
                     76:        char c;
                     77: 
                     78:        if((rmfd = open(RAILMAG_FILE, 0)) < 0)
                     79:                error("No railmag file");
                     80:        cp = tbuf;
                     81:        for(i = 0; i < 4; i++)
                     82:                {
                     83:                rm[i] = cp;
                     84:                while(read(rmfd, &c, 1) == 1 && c != '\n')
                     85:                        *cp++ = c;
                     86:                *cp++ = '\0';
                     87:                }
                     88:        }
                     89: 
                     90: printrm()
                     91:        {
                     92:        register int i;
                     93: 
                     94:        for(i = 0; i < 4; i++)
                     95:                printf("%s on %d\n", rm[i], i+1);
                     96:        }
                     97: 
                     98: writerm()
                     99:        {
                    100:        register int i;
                    101:        register char *cp;
                    102: 
                    103:        unlink(RAILMAG_FILE);
                    104:        if((rmfd = creat(RAILMAG_FILE, 0644)) < 0)
                    105:                error("cant recreate railmag file");
                    106:        for(i = 0; i < 4; i++)
                    107:                {
                    108:                cp = rm[i];
                    109:                while(*cp != '\0')
                    110:                        write(rmfd, cp++, 1);
                    111:                write(rmfd, "\n", 1);
                    112:                }
                    113:        }
                    114: 
                    115: char *
                    116: concat(outbuf,in1,in2)
                    117:    char *outbuf,*in1,*in2;
                    118:        {
                    119:        char *save;
                    120: 
                    121:        save = outbuf;
                    122:        while(*in1)
                    123:                *outbuf++ = *in1++;
                    124:        while(*in2)
                    125:                *outbuf++ = *in2++;
                    126:                return(save);
                    127: }

unix.superglobalmegacorp.com

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