Annotation of early-roguelike/srogue/makevers.c, Revision 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