Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

176 lines
5.4 KiB

2 years ago
/* "$Header: /cvsroot/VTK/VTK/Utilities/vtktiff/mkversion.c,v 1.1 2004/04/28 15:49:22 king Exp $ */
/*
* Copyright (c) 1995-1997 Sam Leffler
* Copyright (c) 1995-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* Generate a library version string for systems that
* do not have a shell (by default this is done with
* awk and echo from the Makefile).
*
* This was written by Peter Greenham for Acorn systems.
*
* Syntax: mkversion [-v version-file] [-a alpha-file] [<outfile>]
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static void
usage(void)
{
fprintf(stderr,
"usage: mkversion [-v version-file] [-a alpha-file]\n"
" [-r releasedate-file] [outfile]\n");
exit(-1);
}
static FILE*
openFile(char* filename)
{
FILE* fd = fopen(filename, "r");
if (fd == NULL) {
fprintf(stderr, "mkversion: %s: Could not open for reading.\n",
filename);
exit(-1);
}
return (fd);
}
int
main(int argc, char* argv[])
{
char* versionFile = "VERSION";
char* releaseDateFile = "RELEASE-DATE";
char* alphaFile = "dist/tiff.alpha";
char version[128];
char rawReleaseDate[128];
char tiffLibVersion[128];
char alpha[128];
FILE* fd;
char* cp;
argc--, argv++;
while (argc > 0 && argv[0][0] == '-') {
if (strcmp(argv[0], "-v") == 0) {
if (argc < 1)
usage();
argc--, argv++;
versionFile = argv[0];
} else if (strcmp(argv[0], "-a") == 0) {
if (argc < 1)
usage();
argc--, argv++;
alphaFile = argv[0];
} else if (strcmp(argv[0], "-r") == 0) {
if (argc < 1)
usage();
argc--, argv++;
releaseDateFile = argv[0];
} else
usage();
argc--, argv++;
}
/*
* Read the VERSION file.
*/
fd = openFile(versionFile);
if (fgets(version, sizeof (version)-1, fd) == NULL) {
fprintf(stderr, "mkversion: No version information in %s.\n",
versionFile);
exit(-1);
}
cp = strchr(version, '\n');
if (cp)
*cp = '\0';
fclose(fd);
fd = openFile(alphaFile);
if (fgets(alpha, sizeof (alpha)-1, fd) == NULL) {
fprintf(stderr, "mkversion: No alpha information in %s.\n", alphaFile);
exit(-1);
}
fclose(fd);
cp = strchr(alpha, ' '); /* skip to 3rd blank-separated field */
if (cp)
cp = strchr(cp+1, ' ');
if (cp) { /* append alpha to version */
char* tp;
for (tp = strchr(version, '\0'), cp++; (*tp = *cp) != 0; tp++, cp++)
;
if (tp[-1] == '\n')
tp[-1] = '\0';
} else {
fprintf(stderr, "mkversion: Malformed alpha information in %s.\n",
alphaFile);
exit(-1);
}
/*
* Read the RELEASE-DATE, and translate format to emit TIFFLIB_VERSION.
*/
fd = openFile(releaseDateFile);
if (fgets(rawReleaseDate, sizeof (version)-1, fd) == NULL) {
fprintf(stderr, "mkversion: No release date information in %s.\n",
releaseDateFile);
exit(-1);
}
fclose(fd);
sprintf( tiffLibVersion, "#define TIFFLIB_VERSION %4.4s%2.2s%2.2s",
rawReleaseDate+6,
rawReleaseDate+0,
rawReleaseDate+3 );
/*
* Emit the version.h file.
*/
if (argc > 0) {
fd = fopen(argv[0], "w");
if (fd == NULL) {
fprintf(stderr, "mkversion: %s: Could not open for writing.\n",
argv[0]);
exit(-1);
}
} else
fd = stdout;
fprintf(fd, "#define TIFFLIB_VERSION_STR \"LIBTIFF, Version %s\\n", version);
fprintf(fd, "Copyright (c) 1988-1996 Sam Leffler\\n");
fprintf(fd, "Copyright (c) 1991-1996 Silicon Graphics, Inc.\"\n");
fprintf( fd,
"/*\n"
" * This define can be used in code that requires\n"
" * compilation-related definitions specific to a\n"
" * version or versions of the library. Runtime\n"
" * version checking should be done based on the\n"
" * string returned by TIFFGetVersion.\n"
" */\n" );
fprintf(fd, "%s\n", tiffLibVersion );
if (fd != stdout)
fclose(fd);
return (0);
}