xref: /csrg-svn/usr.bin/f77/libU77/mkvers.c (revision 12001)
1*12001Sdlw char id_mkvers[] = "@(#)mkvers.c	1.2";
210560Sdlw /*
310560Sdlw  * extract sccs id strings from source files
410560Sdlw  * first arg is lib name.
510560Sdlw  * Put them in Version.c
610560Sdlw  */
710560Sdlw 
810560Sdlw #include	<stdio.h>
910560Sdlw 
1010560Sdlw #define SCCS_ID		"@(#)"
1110560Sdlw #define VERSION		"Version.c"
1210560Sdlw 
1310560Sdlw main(argc, argv)
1410560Sdlw int argc; char **argv;
1510560Sdlw {
1610560Sdlw 	char buf[256];
1710560Sdlw 	char *s, *e;
1810560Sdlw 	char *index(), *ctime();
1910560Sdlw 	long t;
2010560Sdlw 	FILE *V, *fdopen();
2110560Sdlw 
2210560Sdlw 	V = stdout; /* fdopen(creat(VERSION, 0644), "w"); */
2310560Sdlw 	if (!V)
2410560Sdlw 	{
2510560Sdlw 		perror("mkvers");
2610560Sdlw 		exit(1);
2710560Sdlw 	}
28*12001Sdlw 	if (argc > 1 && argv[1][0] != '.')
29*12001Sdlw 	{
30*12001Sdlw 		fprintf(V, "char *");
31*12001Sdlw 		for (s = argv[1]; *s && *s != '.'; s++)
32*12001Sdlw 			fputc(*s, V);
33*12001Sdlw 		fprintf(V, "_id[] = {\n");
34*12001Sdlw 	}
35*12001Sdlw 	else
36*12001Sdlw 		fprintf(V, "char *sccs_id[] = {\n");
3710560Sdlw 	if (argc-- > 1)
3810560Sdlw 	{
3910560Sdlw 		time(&t);
4010560Sdlw 		s = ctime(&t) + 4;
4110560Sdlw 		s[20] = '\0';
4210560Sdlw 		fprintf(V, "\t\"%s%s\t%s\",\n", SCCS_ID, *++argv, s);
4310560Sdlw 	}
4410560Sdlw 	while (--argc)
4510560Sdlw 	{
4610560Sdlw 		if (freopen(*++argv, "r", stdin) == NULL)
4710560Sdlw 		{
4810560Sdlw 			perror(*argv);
4910560Sdlw 			continue;
5010560Sdlw 		}
5110560Sdlw 		while(gets(buf))
5210560Sdlw 		{
5310560Sdlw 			s = buf;
5410560Sdlw 			while(s = index(s, '@'))
5510560Sdlw 				if (strncmp(s, SCCS_ID, 4) == 0)
5610560Sdlw 					break;
5710560Sdlw 			if (s)
5810560Sdlw 			{
5910560Sdlw 				e = index(s, '"');
6010560Sdlw 				if (e)
6110560Sdlw 					*e = '\0';
6210560Sdlw 				fprintf(V, "\t\"%s\",\n", s);
6310560Sdlw 				break;
6410560Sdlw 			}
6510560Sdlw 		}
6610560Sdlw 		if (feof(stdin))
6710560Sdlw 			fprintf(stderr, "%s: no sccs id string\n", *argv);
6810560Sdlw 	}
6910560Sdlw 	fprintf(V, "};\n");
7010560Sdlw 	fclose(V);
7110560Sdlw 	fflush(stdout);
7210560Sdlw 	fflush(stderr);
7310560Sdlw }
74