This is IncVersion.m in view mode; [Download] [Up]
/* Copyright 1993 Jeremy Slade. All rights reserved. */ /* Project: Locus File: IncVersion.m Description: This is a short program that reads the version data contained in a NXStringTable format file, and generates an header file from this data, that is then imported by VersionInfo.m, defining the project version information at compile time. Original Author: Jeremy Slade Revision History: Created V.101 JGS Fri Apr 3 23:53:16 GMT-0700 1992 */ #import <libc.h> #import <objc/NXStringTable.h> #import <stdio.h> #import <streams/streams.h> #define INPUT_FILE "VersionInfo.data" #define OUTPUT_FILE "VersionInfo.data.h" void main ( int argc, char *argv[] ) { id table; NXStream *stream; int ReleaseType, MajorVersion, MinorVersion, Revision, VersionNum; char buf[40]; unsigned t; // Create an NXStringTable from the input file if ( !(table = [[NXStringTable alloc] init]) || !( [table readFromFile:INPUT_FILE]) ) { printf ( "IncVersion: error: unable to read input file %s\n", INPUT_FILE ); exit ( -1 ); } // Open a stream to create the output file if ( !(stream = NXOpenMemory ( NULL, 0, NX_WRITEONLY )) ) { printf ( "IncVersion: error: unable to create ouput stream\n" ); exit ( -1 ); } // Output compile time time ( &t ); strcpy ( buf, ctime ( &t ) ); buf[strlen(buf)-1] = '\0'; // Remove \n at end of buf NXPrintf ( stream, "\n#define V_CompileTime \"Compiled at: %s\"\n\n", buf ); // Get version data from strings in table ReleaseType = atoi ( [table valueForStringKey:"V_ReleaseType"] ); MajorVersion = atoi ( [table valueForStringKey:"V_MajorVersion"] ); MinorVersion = atoi ( [table valueForStringKey:"V_MinorVersion"] ); // Get Revision number, increment it, and write out the input file Revision = atoi ( [table valueForStringKey:"V_Revision"] ); Revision++; sprintf ( buf, "%d", Revision ); [table insertKey:"V_Revision" value:buf]; if ( ![table writeToFile:INPUT_FILE] ) { printf ( "IncVersion: error: unable to save input file %s\n", INPUT_FILE ); // Non-fatal error -- keep going } // Compute VersionNum -- add all values together VersionNum = Revision; VersionNum += MinorVersion * 100; VersionNum += MajorVersion * 1000; VersionNum += ReleaseType * 10000; // Output the rest of the data NXPrintf ( stream, "#define V_VersionNum %d\n", VersionNum ); NXPrintf ( stream, "#define V_ReleaseType %d\n", ReleaseType ); NXPrintf ( stream, "#define V_MajorVersion %d\n", MajorVersion ); NXPrintf ( stream, "#define V_MinorVersion %d\n", MinorVersion ); NXPrintf ( stream, "#define V_Revision %d\n", Revision ); NXPrintf ( stream, "\n\n" ); // Save output file if ( NXSaveToFile ( stream, OUTPUT_FILE ) != 0 ) { printf ( "IncVersion: error: unable to create output file %s\n", OUTPUT_FILE ); exit ( -1 ); } NXCloseMemory ( stream, NX_FREEBUFFER ); exit ( 0 ); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.