120200Sdist /*
220200Sdist * Copyright (c) 1983 Regents of the University of California.
333682Sbostic * All rights reserved.
433682Sbostic *
5*42804Sbostic * %sccs.include.redist.c%
620200Sdist */
720200Sdist
813945Ssam #ifndef lint
933682Sbostic char copyright[] =
1033682Sbostic "@(#) Copyright (c) 1983 Regents of the University of California.\n\
1133682Sbostic All rights reserved.\n";
1233682Sbostic #endif /* not lint */
1313945Ssam
1433682Sbostic #ifndef lint
15*42804Sbostic static char sccsid[] = "@(#)railmag.c 5.4 (Berkeley) 06/01/90";
1633682Sbostic #endif /* not lint */
1733682Sbostic
1812080Sralph /*
1912080Sralph * tell vcat which fonts are loaded on the "typesetter"
2012080Sralph */
2112080Sralph
2212080Sralph #define MAGIC_NUMBER 0436
2312080Sralph #define RAILMAG_FILE "/usr/lib/vfont/railmag"
2412080Sralph
2512080Sralph char *concat();
2612080Sralph int rmfd;
2712080Sralph char *rm[4];
2812080Sralph char tbuf[256];
2912080Sralph
main(argc,argv)3012080Sralph main(argc, argv)
3112080Sralph int argc;
3212080Sralph char *argv[];
3312080Sralph {
3412080Sralph register int fnum;
3512080Sralph char cbuf[4][50];
3612080Sralph
3712080Sralph readrm();
3812080Sralph if (argc <= 1) {
3912080Sralph printrm();
4012080Sralph exit(0);
4112080Sralph }
4212080Sralph while (--argc) {
4312080Sralph argv++;
4412080Sralph fnum = argv[0][0] - '0';
4512080Sralph if (fnum < 1 || fnum > 4)
4612080Sralph error("Invalid font number");
4712080Sralph checkfont(argv[1]);
4812080Sralph if (argv[1][0] == '/')
4912080Sralph rm[fnum-1] = argv[1];
5012080Sralph else
5112080Sralph rm[fnum-1] = concat(cbuf[fnum-1], "/usr/lib/vfont/", argv[1]);
5212080Sralph argv++; argc--;
5312080Sralph }
5412080Sralph writerm();
5512080Sralph }
5612080Sralph
error(str)5712080Sralph error(str)
5812080Sralph char *str;
5912080Sralph {
6012080Sralph write(2, "Railmag: ", 9);
6112080Sralph write(2, str, strlen(str));
6212080Sralph write(2, "\n", 1);
6312080Sralph exit();
6412080Sralph }
6512080Sralph
checkfont(file)6612080Sralph checkfont(file)
6712080Sralph char *file;
6812080Sralph {
6912080Sralph register int fd;
7012080Sralph char cbuf[80];
7112080Sralph char cbuf2[80];
7212080Sralph short word;
7312080Sralph
7412080Sralph if ((fd = open(concat(cbuf, file, ".10"), 0)) < 0)
7512080Sralph if ((fd = open(concat(cbuf2, "/usr/lib/vfont/", cbuf), 0)) < 0)
7612080Sralph error("cant open font");
7712080Sralph if (read(fd, &word, 2) != 2)
7812080Sralph error("cant read font");
7912080Sralph if (word != MAGIC_NUMBER)
8012080Sralph error("font has no magic number");
8112080Sralph close(fd);
8212080Sralph }
8312080Sralph
readrm()8412080Sralph readrm()
8512080Sralph {
8612080Sralph register int i;
8712080Sralph register char *cp;
8812080Sralph char c;
8912080Sralph
9012080Sralph if ((rmfd = open(RAILMAG_FILE, 0)) < 0)
9112080Sralph error("No railmag file");
9212080Sralph cp = tbuf;
9312080Sralph for (i = 0; i < 4; i++) {
9412080Sralph rm[i] = cp;
9512080Sralph while (read(rmfd, &c, 1) == 1 && c != '\n')
9612080Sralph *cp++ = c;
9712080Sralph *cp++ = '\0';
9812080Sralph }
9912080Sralph }
10012080Sralph
printrm()10112080Sralph printrm()
10212080Sralph {
10312080Sralph register int i;
10412080Sralph
10512080Sralph for (i = 0; i < 4; i++)
10612080Sralph printf("%s on %d\n", rm[i], i+1);
10712080Sralph }
10812080Sralph
writerm()10912080Sralph writerm()
11012080Sralph {
11112080Sralph register int i;
11212080Sralph register char *cp;
11312080Sralph
11412080Sralph unlink(RAILMAG_FILE);
11512080Sralph if ((rmfd = creat(RAILMAG_FILE, 0644)) < 0)
11612080Sralph error("cant recreate railmag file");
11712080Sralph for (i = 0; i < 4; i++) {
11812080Sralph cp = rm[i];
11912080Sralph while (*cp != '\0')
12012080Sralph write(rmfd, cp++, 1);
12112080Sralph write(rmfd, "\n", 1);
12212080Sralph }
12312080Sralph }
12412080Sralph
12512080Sralph char *
concat(outbuf,in1,in2)12612080Sralph concat(outbuf, in1, in2)
12712080Sralph register char *outbuf, *in1, *in2;
12812080Sralph {
12912080Sralph char *save;
13012080Sralph
13112080Sralph save = outbuf;
13212080Sralph while (*in1)
13312080Sralph *outbuf++ = *in1++;
13412080Sralph while (*in2)
13512080Sralph *outbuf++ = *in2++;
13612080Sralph return(save);
13712080Sralph }
138