xref: /csrg-svn/usr.bin/f77/libI77/mkvers.c (revision 23082)
121019Slibs /*
2*23082Skre  * Copyright (c) 1980 Regents of the University of California.
3*23082Skre  * All rights reserved.  The Berkeley software License Agreement
4*23082Skre  * specifies the terms and conditions for redistribution.
5*23082Skre  */
6*23082Skre 
7*23082Skre char id_mkvers[] = "@(#)mkvers.c	5.1 06/07/85";
8*23082Skre /*
921019Slibs  * extract sccs id strings from source files
1021019Slibs  * first arg is lib name.
1121019Slibs  * Put them in Version.c
1221019Slibs  */
1321019Slibs 
1421019Slibs #include	<stdio.h>
1521019Slibs 
1621019Slibs #define SCCS_ID		"@(#)"
1721019Slibs #define VERSION		"Version.c"
1821019Slibs 
1921019Slibs main(argc, argv)
2021019Slibs int argc; char **argv;
2121019Slibs {
2221019Slibs 	char buf[256];
2321019Slibs 	char *s, *e;
2421019Slibs 	char *index(), *ctime();
2521019Slibs 	long t;
2621019Slibs 	FILE *V, *fdopen();
2721019Slibs 
2821019Slibs 	V = stdout; /* fdopen(creat(VERSION, 0644), "w"); */
2921019Slibs 	if (!V)
3021019Slibs 	{
3121019Slibs 		perror("mkvers");
3221019Slibs 		exit(1);
3321019Slibs 	}
3421019Slibs 	if (argc > 1 && argv[1][0] != '.')
3521019Slibs 	{
3621019Slibs 		fprintf(V, "char *");
3721019Slibs 		for (s = argv[1]; *s && *s != '.'; s++)
3821019Slibs 			fputc(*s, V);
3921019Slibs 		fprintf(V, "_id[] = {\n");
4021019Slibs 	}
4121019Slibs 	else
4221019Slibs 		fprintf(V, "char *sccs_id[] = {\n");
4321019Slibs 	if (argc-- > 1)
4421019Slibs 	{
4521019Slibs 		time(&t);
4621019Slibs 		s = ctime(&t) + 4;
4721019Slibs 		s[20] = '\0';
4821019Slibs 		fprintf(V, "\t\"%s%s\t%s\",\n", SCCS_ID, *++argv, s);
4921019Slibs 	}
5021019Slibs 	while (--argc)
5121019Slibs 	{
5221019Slibs 		if (freopen(*++argv, "r", stdin) == NULL)
5321019Slibs 		{
5421019Slibs 			perror(*argv);
5521019Slibs 			continue;
5621019Slibs 		}
5721019Slibs 		while(gets(buf))
5821019Slibs 		{
5921019Slibs 			s = buf;
6021019Slibs 			while(s = index(s, '@'))
6121019Slibs 				if (strncmp(s, SCCS_ID, 4) == 0)
6221019Slibs 					break;
6321019Slibs 			if (s)
6421019Slibs 			{
6521019Slibs 				e = index(s, '"');
6621019Slibs 				if (e)
6721019Slibs 					*e = '\0';
6821019Slibs 				fprintf(V, "\t\"%s\",\n", s);
6921019Slibs 				break;
7021019Slibs 			}
7121019Slibs 		}
7221019Slibs 		if (feof(stdin))
7321019Slibs 			fprintf(stderr, "%s: no sccs id string\n", *argv);
7421019Slibs 	}
7521019Slibs 	fprintf(V, "};\n");
7621019Slibs 	fclose(V);
7721019Slibs 	fflush(stdout);
7821019Slibs 	fflush(stderr);
7921019Slibs }
80