Linux-2.6.12-rc2

Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.

Let it rip!
diff --git a/drivers/zorro/gen-devlist.c b/drivers/zorro/gen-devlist.c
new file mode 100644
index 0000000..16fe206
--- /dev/null
+++ b/drivers/zorro/gen-devlist.c
@@ -0,0 +1,107 @@
+/*
+ *	Generate devlist.h from the Zorro ID file.
+ *
+ *	(c) 2000 Geert Uytterhoeven <geert@linux-m68k.org>
+ *
+ *	Based on the PCI version:
+ *
+ *	(c) 1999--2000 Martin Mares <mj@ucw.cz>
+ */
+
+#include <stdio.h>
+#include <string.h>
+
+#define MAX_NAME_SIZE 63
+
+static void
+pq(FILE *f, const char *c)
+{
+	while (*c) {
+		if (*c == '"')
+			fprintf(f, "\\\"");
+		else
+			fputc(*c, f);
+		c++;
+	}
+}
+
+int
+main(void)
+{
+	char line[1024], *c, *bra, manuf[8];
+	int manufs = 0;
+	int mode = 0;
+	int lino = 0;
+	int manuf_len = 0;
+	FILE *devf;
+
+	devf = fopen("devlist.h", "w");
+	if (!devf) {
+		fprintf(stderr, "Cannot create output file!\n");
+		return 1;
+	}
+
+	while (fgets(line, sizeof(line)-1, stdin)) {
+		lino++;
+		if ((c = strchr(line, '\n')))
+			*c = 0;
+		if (!line[0] || line[0] == '#')
+			continue;
+		if (line[0] == '\t') {
+			switch (mode) {
+			case 1:
+				if (strlen(line) > 5 && line[5] == ' ') {
+					c = line + 5;
+					while (*c == ' ')
+						*c++ = 0;
+					if (manuf_len + strlen(c) + 1 > MAX_NAME_SIZE) {
+						/* Too long, try cutting off long description */
+						bra = strchr(c, '[');
+						if (bra && bra > c && bra[-1] == ' ')
+							bra[-1] = 0;
+						if (manuf_len + strlen(c) + 1 > MAX_NAME_SIZE) {
+							fprintf(stderr, "Line %d: Product name too long\n", lino);
+							return 1;
+						}
+					}
+					fprintf(devf, "\tPRODUCT(%s,%s,\"", manuf, line+1);
+					pq(devf, c);
+					fputs("\")\n", devf);
+				} else goto err;
+				break;
+			default:
+				goto err;
+			}
+		} else if (strlen(line) > 4 && line[4] == ' ') {
+			c = line + 4;
+			while (*c == ' ')
+				*c++ = 0;
+			if (manufs)
+				fputs("ENDMANUF()\n\n", devf);
+			manufs++;
+			strcpy(manuf, line);
+			manuf_len = strlen(c);
+			if (manuf_len + 24 > MAX_NAME_SIZE) {
+				fprintf(stderr, "Line %d: manufacturer name too long\n", lino);
+				return 1;
+			}
+			fprintf(devf, "MANUF(%s,\"", manuf);
+			pq(devf, c);
+			fputs("\")\n", devf);
+			mode = 1;
+		} else {
+		err:
+			fprintf(stderr, "Line %d: Syntax error in mode %d: %s\n", lino, mode, line);
+			return 1;
+		}
+	}
+	fputs("ENDMANUF()\n\
+\n\
+#undef MANUF\n\
+#undef PRODUCT\n\
+#undef ENDMANUF\n", devf);
+
+	fclose(devf);
+
+	return 0;
+}