123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- /* $Id: version.c,v 4.12 2007/07/04 21:36:39 bkorb Exp $
- * Time-stamp: "2007-07-04 13:42:04 bkorb"
- *
- * This module implements the default usage procedure for
- * Automated Options. It may be overridden, of course.
- */
- static char const zAOV[] =
- "Automated Options version %s\n"
- "\tcopyright (c) 1999-2007 Bruce Korb - all rights reserved\n";
- /*
- * This file is part of AutoOpts, a companion to AutoGen.
- * AutoOpts is free software.
- * AutoOpts is copyright (c) 1992-2007 by Bruce Korb - all rights reserved
- *
- * AutoOpts is available under any one of two licenses. The license
- * in use must be one of these two and the choice is under the control
- * of the user of the license.
- *
- * The GNU Lesser General Public License, version 3 or later
- * See the files "COPYING.lgplv3" and "COPYING.gplv3"
- *
- * The Modified Berkeley Software Distribution License
- * See the file "COPYING.mbsd"
- *
- * These files have the following md5sums:
- *
- * 239588c55c22c60ffe159946a760a33e pkg/libopts/COPYING.gplv3
- * fa82ca978890795162346e661b47161a pkg/libopts/COPYING.lgplv3
- * 66a5cedaf62c4b2637025f049f9b826f pkg/libopts/COPYING.mbsd
- */
- /* = = = START-STATIC-FORWARD = = = */
- /* static forward declarations maintained by :mkfwd */
- static void
- printVersion( tOptions* pOpts, tOptDesc* pOD, FILE* fp );
- /* = = = END-STATIC-FORWARD = = = */
- /*=export_func optionVersion
- *
- * what: return the compiled AutoOpts version number
- * ret_type: char const*
- * ret_desc: the version string in constant memory
- * doc:
- * Returns the full version string compiled into the library.
- * The returned string cannot be modified.
- =*/
- char const*
- optionVersion( void )
- {
- static char const zVersion[] =
- STR( AO_CURRENT.AO_REVISION );
- return zVersion;
- }
- static void
- printVersion( tOptions* pOpts, tOptDesc* pOD, FILE* fp )
- {
- char swCh;
- /*
- * IF the optional argument flag is off, or the argument is not provided,
- * then just print the version.
- */
- if ( ((pOD->fOptState & OPTST_ARG_OPTIONAL) == 0)
- || (pOD->optArg.argString == NULL))
- swCh = 'v';
- else swCh = tolower(pOD->optArg.argString[0]);
- if (pOpts->pzFullVersion != NULL) {
- fputs( pOpts->pzFullVersion, fp );
- fputc( '\n', fp );
- } else {
- char const *pz = pOpts->pzUsageTitle;
- do { fputc(*pz, fp); } while (*(pz++) != '\n');
- }
- switch (swCh) {
- case NUL: /* arg provided, but empty */
- case 'v':
- break;
- case 'c':
- if (pOpts->pzCopyright != NULL) {
- fputs( pOpts->pzCopyright, fp );
- fputc( '\n', fp );
- }
- fprintf( fp, zAOV, optionVersion() );
- if (pOpts->pzBugAddr != NULL)
- fprintf( fp, zPlsSendBugs, pOpts->pzBugAddr );
- break;
- case 'n':
- if (pOpts->pzCopyright != NULL) {
- fputs( pOpts->pzCopyright, fp );
- fputc( '\n', fp );
- fputc( '\n', fp );
- }
- if (pOpts->pzCopyNotice != NULL) {
- fputs( pOpts->pzCopyNotice, fp );
- fputc( '\n', fp );
- }
- fprintf( fp, zAOV, optionVersion() );
- if (pOpts->pzBugAddr != NULL)
- fprintf( fp, zPlsSendBugs, pOpts->pzBugAddr );
- break;
- default:
- fprintf( stderr, zBadVerArg, swCh );
- exit( EXIT_FAILURE );
- }
- exit( EXIT_SUCCESS );
- }
- /*=export_func optionPrintVersion
- * private:
- *
- * what: Print the program version
- * arg: + tOptions* + pOpts + program options descriptor +
- * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
- *
- * doc:
- * This routine will print the version to stdout.
- =*/
- void
- optionPrintVersion( tOptions* pOpts, tOptDesc* pOD )
- {
- printVersion( pOpts, pOD, stdout );
- }
- /*=export_func optionVersionStderr
- * private:
- *
- * what: Print the program version to stderr
- * arg: + tOptions* + pOpts + program options descriptor +
- * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
- *
- * doc:
- * This routine will print the version to stderr.
- =*/
- void
- optionVersionStderr( tOptions* pOpts, tOptDesc* pOD )
- {
- printVersion( pOpts, pOD, stderr );
- }
- /*
- * Local Variables:
- * mode: C
- * c-file-style: "stroustrup"
- * indent-tabs-mode: nil
- * End:
- * end of autoopts/version.c */
|