xref: /csrg-svn/usr.bin/f77/libI77/mkvers.c (revision 21019)
1*21019Slibs char id_mkvers[] = "@(#)mkvers.c	1.2";
2*21019Slibs /*
3*21019Slibs  * extract sccs id strings from source files
4*21019Slibs  * first arg is lib name.
5*21019Slibs  * Put them in Version.c
6*21019Slibs  */
7*21019Slibs 
8*21019Slibs #include	<stdio.h>
9*21019Slibs 
10*21019Slibs #define SCCS_ID		"@(#)"
11*21019Slibs #define VERSION		"Version.c"
12*21019Slibs 
13*21019Slibs main(argc, argv)
14*21019Slibs int argc; char **argv;
15*21019Slibs {
16*21019Slibs 	char buf[256];
17*21019Slibs 	char *s, *e;
18*21019Slibs 	char *index(), *ctime();
19*21019Slibs 	long t;
20*21019Slibs 	FILE *V, *fdopen();
21*21019Slibs 
22*21019Slibs 	V = stdout; /* fdopen(creat(VERSION, 0644), "w"); */
23*21019Slibs 	if (!V)
24*21019Slibs 	{
25*21019Slibs 		perror("mkvers");
26*21019Slibs 		exit(1);
27*21019Slibs 	}
28*21019Slibs 	if (argc > 1 && argv[1][0] != '.')
29*21019Slibs 	{
30*21019Slibs 		fprintf(V, "char *");
31*21019Slibs 		for (s = argv[1]; *s && *s != '.'; s++)
32*21019Slibs 			fputc(*s, V);
33*21019Slibs 		fprintf(V, "_id[] = {\n");
34*21019Slibs 	}
35*21019Slibs 	else
36*21019Slibs 		fprintf(V, "char *sccs_id[] = {\n");
37*21019Slibs 	if (argc-- > 1)
38*21019Slibs 	{
39*21019Slibs 		time(&t);
40*21019Slibs 		s = ctime(&t) + 4;
41*21019Slibs 		s[20] = '\0';
42*21019Slibs 		fprintf(V, "\t\"%s%s\t%s\",\n", SCCS_ID, *++argv, s);
43*21019Slibs 	}
44*21019Slibs 	while (--argc)
45*21019Slibs 	{
46*21019Slibs 		if (freopen(*++argv, "r", stdin) == NULL)
47*21019Slibs 		{
48*21019Slibs 			perror(*argv);
49*21019Slibs 			continue;
50*21019Slibs 		}
51*21019Slibs 		while(gets(buf))
52*21019Slibs 		{
53*21019Slibs 			s = buf;
54*21019Slibs 			while(s = index(s, '@'))
55*21019Slibs 				if (strncmp(s, SCCS_ID, 4) == 0)
56*21019Slibs 					break;
57*21019Slibs 			if (s)
58*21019Slibs 			{
59*21019Slibs 				e = index(s, '"');
60*21019Slibs 				if (e)
61*21019Slibs 					*e = '\0';
62*21019Slibs 				fprintf(V, "\t\"%s\",\n", s);
63*21019Slibs 				break;
64*21019Slibs 			}
65*21019Slibs 		}
66*21019Slibs 		if (feof(stdin))
67*21019Slibs 			fprintf(stderr, "%s: no sccs id string\n", *argv);
68*21019Slibs 	}
69*21019Slibs 	fprintf(V, "};\n");
70*21019Slibs 	fclose(V);
71*21019Slibs 	fflush(stdout);
72*21019Slibs 	fflush(stderr);
73*21019Slibs }
74