Mercurial > hg > early-roguelike
comparison srogue/makevers.c @ 36:2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
author | elwin |
---|---|
date | Thu, 25 Nov 2010 12:21:41 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
35:05018c63a721 | 36:2128c7dc8a40 |
---|---|
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 } |