xref: /csrg-svn/usr.bin/f77/libU77/mkvers.c (revision 23041)
110560Sdlw /*
2*23041Skre  * Copyright (c) 1980 Regents of the University of California.
3*23041Skre  * All rights reserved.  The Berkeley software License Agreement
4*23041Skre  * specifies the terms and conditions for redistribution.
5*23041Skre  */
6*23041Skre 
7*23041Skre char id_mkvers[] = "@(#)mkvers.c	5.1 06/07/85";
8*23041Skre /*
910560Sdlw  * extract sccs id strings from source files
1010560Sdlw  * first arg is lib name.
1110560Sdlw  * Put them in Version.c
1210560Sdlw  */
1310560Sdlw 
1410560Sdlw #include	<stdio.h>
1510560Sdlw 
1610560Sdlw #define SCCS_ID		"@(#)"
1710560Sdlw #define VERSION		"Version.c"
1810560Sdlw 
1910560Sdlw main(argc, argv)
2010560Sdlw int argc; char **argv;
2110560Sdlw {
2210560Sdlw 	char buf[256];
2310560Sdlw 	char *s, *e;
2410560Sdlw 	char *index(), *ctime();
2510560Sdlw 	long t;
2610560Sdlw 	FILE *V, *fdopen();
2710560Sdlw 
2810560Sdlw 	V = stdout; /* fdopen(creat(VERSION, 0644), "w"); */
2910560Sdlw 	if (!V)
3010560Sdlw 	{
3110560Sdlw 		perror("mkvers");
3210560Sdlw 		exit(1);
3310560Sdlw 	}
3412001Sdlw 	if (argc > 1 && argv[1][0] != '.')
3512001Sdlw 	{
3612001Sdlw 		fprintf(V, "char *");
3712001Sdlw 		for (s = argv[1]; *s && *s != '.'; s++)
3812001Sdlw 			fputc(*s, V);
3912001Sdlw 		fprintf(V, "_id[] = {\n");
4012001Sdlw 	}
4112001Sdlw 	else
4212001Sdlw 		fprintf(V, "char *sccs_id[] = {\n");
4310560Sdlw 	if (argc-- > 1)
4410560Sdlw 	{
4510560Sdlw 		time(&t);
4610560Sdlw 		s = ctime(&t) + 4;
4710560Sdlw 		s[20] = '\0';
4810560Sdlw 		fprintf(V, "\t\"%s%s\t%s\",\n", SCCS_ID, *++argv, s);
4910560Sdlw 	}
5010560Sdlw 	while (--argc)
5110560Sdlw 	{
5210560Sdlw 		if (freopen(*++argv, "r", stdin) == NULL)
5310560Sdlw 		{
5410560Sdlw 			perror(*argv);
5510560Sdlw 			continue;
5610560Sdlw 		}
5710560Sdlw 		while(gets(buf))
5810560Sdlw 		{
5910560Sdlw 			s = buf;
6010560Sdlw 			while(s = index(s, '@'))
6110560Sdlw 				if (strncmp(s, SCCS_ID, 4) == 0)
6210560Sdlw 					break;
6310560Sdlw 			if (s)
6410560Sdlw 			{
6510560Sdlw 				e = index(s, '"');
6610560Sdlw 				if (e)
6710560Sdlw 					*e = '\0';
6810560Sdlw 				fprintf(V, "\t\"%s\",\n", s);
6910560Sdlw 				break;
7010560Sdlw 			}
7110560Sdlw 		}
7210560Sdlw 		if (feof(stdin))
7310560Sdlw 			fprintf(stderr, "%s: no sccs id string\n", *argv);
7410560Sdlw 	}
7510560Sdlw 	fprintf(V, "};\n");
7610560Sdlw 	fclose(V);
7710560Sdlw 	fflush(stdout);
7810560Sdlw 	fflush(stderr);
7910560Sdlw }
80