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