DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T m

⟦d2033cf35⟧ TextFile

    Length: 1772 (0x6ec)
    Types: TextFile
    Names: »mkwlist.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Battlestar/mkwlist.c« 

TextFile

#ifndef lint
static char sccsid[] = "@(#)mkwlist.c	1.1 11/18/84";
#endif

#include <stdio.h>

FILE *from, *to;
int line = 1;
int c;
char *unctrl();

main(argc, argv)
	int argc;
	char **argv;
{
	register i, j;

	if (argc != 2) {
		printf("Usage: %s filename\n", argv[0]);
		exit();
	}
	if ((from = fopen(argv[1], "r")) == 0) {
		perror(argv[1]);
		exit(1);
	}
	if ((to = fopen("wlist.c", "w")) == 0) {
		perror("wlist.c");
		exit(1);
        }
	fprintf(to, "#include \"externs.h\"\n\n");
	fprintf(to, "struct wlist wlist[] = {\n");
	while ((c = getc(from)) != '\n' && c != EOF)
		;
	if (c == '\n')
		c = getc(from);
	while (c != EOF) {
		for (; c == ' ' || c == '\t' || c == '\n'; c = getc(from))
			if (c == '\n')
				line++;
		if (c == EOF)
			break;
		fprintf(to, "\t{ \"");
		for (; c != ' ' && c != '\t' && c != '\n' && c != EOF; c = getc(from))
			putc(c, to);
		putc('"', to);
		if (c == EOF)
			error("Format error (character '%s').", unctrl(c));
		for (i = 0; i < 2 && (j = getnum()) >= 0; i++)
			fprintf(to, ", %d", j);
		fprintf(to, " },\n");
		if (j < 0)
			error("Format error (character '%s').", unctrl(c));
	}
	fprintf(to, "\t0\n};\n");
	fclose(from);
	fclose(to);
	exit(0);
}

getnum()
{
	register i = 0;

	for (; c == '\n' || c == '\t' || c == ' '; c = getc(from))
		if (c == '\n')
			line++;
	for (; c >= '0' && c <= '9'; c = getc(from))
		i = i * 10 + c - '0';
	return c == EOF ? -1 : i;
}

error(fmt, a, b, c, d)
{
	printf("line %d: ", line);
	printf(fmt, a, b, c, d);
	exit(1);
}

char *
unctrl(c)
	register c;
{
	char buf[5];

	if (c == EOF)
		return "EOF";
	c = (unsigned char) c;
	if (c < ' ')
		return sprintf(buf, "^%c", c + '@');
	if (c < 0x7f)
		return sprintf(buf, "%c", c);
	if (c == 0x7f)
		return "^?";
	return sprintf(buf, "\\%03o", c);
}