-
Notifications
You must be signed in to change notification settings - Fork 1
/
makevers.c
102 lines (94 loc) · 2.1 KB
/
makevers.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*
* Change the version number of rogue
*
* The version must be in the file in the format of:
*
* " * @(#)filename\tVERSION\t ..."
*
* Where VERSION is a 3 character string, i.e., "8.2"
*
* Super-Rogue
* Copyright (C) 1984 Robert D. Kindelberger
* All rights reserved.
*
* See the file LICENSE.TXT for full copyright and licensing information.
*/
#include <stdio.h>
#include <time.h>
long clock;
struct tm *tp;
char who[100];
char *strrchr(), *strchr(), *fgets();
main(argc, argv)
int argc;
char **argv;
{
register int i;
register char *ptr;
char ts[30];
FILE *fp;
strcpy(who, argv[0]);
if (argc < 3) {
fprintf(stderr,"Usage: %s VERSION c_files\n", who);
exit(1);
}
if (strlen(argv[1]) != 3) {
fprintf(stderr,"%s: VERSION must be length 3\n", who);
exit(1);
}
time(&clock);
tp = localtime(&clock);
sprintf(ts,"%2d/%2d/%2d",tp->tm_mon + 1,tp->tm_mday,tp->tm_year);
for (i = 2; i < argc; i++) {
ptr = strrchr(argv[i], '.');
/*
* make sure that files end in ".c" or ".h"
*/
if (ptr != NULL) {
++ptr;
if (*ptr == 'c' || *ptr == 'h')
updvers(argv[1], argv[i]);
}
}
/*
* now install new "version.c" file
*/
fp = fopen("vers.c", "w");
if (fp == NULL) {
fprintf(stderr,"%s: cant write version.c file\n",who);
exit(1);
}
fprintf(fp, "/*\n * version number.\n */\n");
fprintf(fp, "char version[] = ");
fprintf(fp, "%c@(#)vers.c\t%3s\t(rdk)\t%s%c;\n", '"',
argv[1], ts, '"');
fprintf(fp, "char *release = \"%s (%s)\";\n", argv[1],ts);
fclose(fp);
exit(0);
}
#define LINESIZ 132
updvers(vers, fname)
char *fname;
char *vers;
{
register FILE *fp;
register char *ptr, *c;
char line[LINESIZ];
if ((fp = fopen(fname, "r+")) == NULL) {
fprintf(stderr,"%s: Not able to update %s\n", who, fname);
return;
}
while ((c = fgets(line, LINESIZ, fp)) != NULL) {
if (line[1] == '*' && line[3] == '@' && line[5] == '#') {
ptr = strchr(line, '\t');
if (ptr != NULL) {
fseek(fp, -strlen(line), 1);
sprintf(ptr, "\t%3s\t(rdk)\t%2d/%2d/%2d\n", vers,
tp->tm_mon + 1, tp->tm_mday, tp->tm_year);
fprintf(fp, "%s", line);
break;
}
}
}
fclose(fp);
}