[BACK]Return to makevers.c CVS log [TXT][DIR] Up to [contributed] / early-roguelike / srogue

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