Take output filenames as arguments instead of hard-coding them.
diff --git a/Parser/pgenmain.c b/Parser/pgenmain.c
index 0c155de..32fb956 100644
--- a/Parser/pgenmain.c
+++ b/Parser/pgenmain.c
@@ -40,32 +40,37 @@
 {
 	grammar *g;
 	FILE *fp;
-	char *filename;
+	char *filename, *graminit_h, *graminit_c;
 	
 #ifdef THINK_C
 	filename = askfile();
+	graminit_h = askfile();
+	graminit_c = askfile();
 #else
-	if (argc != 2) {
-		fprintf(stderr, "usage: %s grammar\n", argv[0]);
+	if (argc != 4) {
+		fprintf(stderr,
+			"usage: %s grammar graminit.h graminit.c\n", argv[0]);
 		Py_Exit(2);
 	}
 	filename = argv[1];
+	graminit_h = argv[2];
+	graminit_c = argv[3];
 #endif
 	g = getgrammar(filename);
-	fp = fopen("graminit.c", "w");
+	fp = fopen(graminit_c, "w");
 	if (fp == NULL) {
-		perror("graminit.c");
+		perror(graminit_c);
 		Py_Exit(1);
 	}
-	printf("Writing graminit.c ...\n");
+	printf("Writing %s ...\n", graminit_c);
 	printgrammar(g, fp);
 	fclose(fp);
-	fp = fopen("graminit.h", "w");
+	fp = fopen(graminit_h, "w");
 	if (fp == NULL) {
-		perror("graminit.h");
+		perror(graminit_h);
 		Py_Exit(1);
 	}
-	printf("Writing graminit.h ...\n");
+	printf("Writing %s ...\n", graminit_h);
 	printnonterminals(g, fp);
 	fclose(fp);
 	Py_Exit(0);