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