Mercurial > hg > early-roguelike
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/srogue/makevers.c Thu Nov 25 12:21:41 2010 +0000 @@ -0,0 +1,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); +}