Annotation of embedaddon/ntp/sntp/libopts/version.c, revision 1.1

1.1     ! misho       1: 
        !             2: /*
        !             3:  * Time-stamp:      "2011-04-22 12:54:28 bkorb"
        !             4:  *
        !             5:  *  This module implements the default usage procedure for
        !             6:  *  Automated Options.  It may be overridden, of course.
        !             7:  */
        !             8: 
        !             9: /*
        !            10:  *  This file is part of AutoOpts, a companion to AutoGen.
        !            11:  *  AutoOpts is free software.
        !            12:  *  AutoOpts is Copyright (c) 1992-2011 by Bruce Korb - all rights reserved
        !            13:  *
        !            14:  *  AutoOpts is available under any one of two licenses.  The license
        !            15:  *  in use must be one of these two and the choice is under the control
        !            16:  *  of the user of the license.
        !            17:  *
        !            18:  *   The GNU Lesser General Public License, version 3 or later
        !            19:  *      See the files "COPYING.lgplv3" and "COPYING.gplv3"
        !            20:  *
        !            21:  *   The Modified Berkeley Software Distribution License
        !            22:  *      See the file "COPYING.mbsd"
        !            23:  *
        !            24:  *  These files have the following md5sums:
        !            25:  *
        !            26:  *  43b91e8ca915626ed3818ffb1b71248b pkg/libopts/COPYING.gplv3
        !            27:  *  06a1a2e4760c90ea5e1dad8dfaac4d39 pkg/libopts/COPYING.lgplv3
        !            28:  *  66a5cedaf62c4b2637025f049f9b826f pkg/libopts/COPYING.mbsd
        !            29:  */
        !            30: 
        !            31: /*=export_func  optionVersion
        !            32:  *
        !            33:  * what:     return the compiled AutoOpts version number
        !            34:  * ret_type: char const*
        !            35:  * ret_desc: the version string in constant memory
        !            36:  * doc:
        !            37:  *  Returns the full version string compiled into the library.
        !            38:  *  The returned string cannot be modified.
        !            39: =*/
        !            40: char const*
        !            41: optionVersion(void)
        !            42: {
        !            43:     static char const zVersion[] =
        !            44:         STR(AO_CURRENT.AO_REVISION);
        !            45: 
        !            46:     return zVersion;
        !            47: }
        !            48: 
        !            49: static void
        !            50: emit_simple_ver(tOptions * pOpts, FILE * fp)
        !            51: {
        !            52:     if (pOpts->pzFullVersion != NULL)
        !            53:         fputs(pOpts->pzFullVersion, fp);
        !            54: 
        !            55:     else if (pOpts->pzCopyright != NULL) {
        !            56:         char const * pe = strchr(pOpts->pzCopyright, '\n');
        !            57:         if (pe == NULL)
        !            58:             pe = pOpts->pzCopyright + strlen(pOpts->pzCopyright);
        !            59:         fwrite(pOpts->pzCopyright, 1, pe - pOpts->pzCopyright, fp);
        !            60:     }
        !            61: 
        !            62:     else {
        !            63:         char const * pe = strchr(pOpts->pzUsageTitle, '\n');
        !            64:         if (pe == NULL)
        !            65:             pe = pOpts->pzUsageTitle + strlen(pOpts->pzUsageTitle);
        !            66:         fwrite(pOpts->pzUsageTitle, 1, pe - pOpts->pzCopyright, fp);
        !            67:     }
        !            68:     fputc('\n', fp);
        !            69: }
        !            70: 
        !            71: static void
        !            72: emit_copy_ver(tOptions * pOpts, FILE * fp)
        !            73: {
        !            74:     if (pOpts->pzCopyright != NULL)
        !            75:         fputs(pOpts->pzCopyright, fp);
        !            76: 
        !            77:     else if (pOpts->pzFullVersion != NULL)
        !            78:         fputs(pOpts->pzFullVersion, fp);
        !            79: 
        !            80:     else {
        !            81:         char const * pe = strchr(pOpts->pzUsageTitle, '\n');
        !            82:         if (pe == NULL)
        !            83:             pe = pOpts->pzUsageTitle + strlen(pOpts->pzUsageTitle);
        !            84:         fwrite(pOpts->pzUsageTitle, 1, pe - pOpts->pzCopyright, fp);
        !            85:     }
        !            86: 
        !            87:     fputc('\n', fp);
        !            88: 
        !            89:     if (HAS_pzPkgDataDir(pOpts) && (pOpts->pzPackager != NULL))
        !            90:         fputs(pOpts->pzPackager, fp);
        !            91: 
        !            92:     else if (pOpts->pzBugAddr != NULL)
        !            93:         fprintf(fp, zPlsSendBugs, pOpts->pzBugAddr);
        !            94: }
        !            95: 
        !            96: static void
        !            97: emit_copy_note(tOptions * pOpts, FILE * fp)
        !            98: {
        !            99:     if (pOpts->pzCopyright != NULL) {
        !           100:         fputs(pOpts->pzCopyright, fp);
        !           101:         fputc('\n', fp);
        !           102:     }
        !           103: 
        !           104:     if (pOpts->pzCopyNotice != NULL) {
        !           105:         fputs(pOpts->pzCopyNotice, fp);
        !           106:         fputc('\n', fp);
        !           107:     }
        !           108: 
        !           109:     fprintf(fp, zAO_Ver, optionVersion());
        !           110: 
        !           111:     if (HAS_pzPkgDataDir(pOpts) && (pOpts->pzPackager != NULL))
        !           112:         fputs(pOpts->pzPackager, fp);
        !           113: 
        !           114:     else if (pOpts->pzBugAddr != NULL)
        !           115:         fprintf(fp, zPlsSendBugs, pOpts->pzBugAddr);
        !           116: }
        !           117: 
        !           118: static void
        !           119: print_ver(tOptions * pOpts, tOptDesc * pOD, FILE * fp)
        !           120: {
        !           121:     char ch;
        !           122: 
        !           123:     /*
        !           124:      *  IF the optional argument flag is off, or the argument
        !           125:      *  is not provided, then just print the version.
        !           126:      */
        !           127:     if (  ((pOD->fOptState & OPTST_ARG_OPTIONAL) == 0)
        !           128:        || (pOD->optArg.argString == NULL))
        !           129:          ch = 'v';
        !           130:     else ch = pOD->optArg.argString[0];
        !           131: 
        !           132:     switch (ch) {
        !           133:     case NUL: /* arg provided, but empty */
        !           134:     case 'v': case 'V': emit_simple_ver(pOpts, fp); break;
        !           135:     case 'c': case 'C': emit_copy_ver(pOpts, fp);   break;
        !           136:     case 'n': case 'N': emit_copy_note(pOpts, fp);  break;
        !           137: 
        !           138:     default:
        !           139:         fprintf(stderr, zBadVerArg, ch);
        !           140:         exit(EXIT_FAILURE);
        !           141:     }
        !           142: 
        !           143:     fflush(fp);
        !           144:     if (ferror(fp) != 0) {
        !           145:         fputs(zOutputFail, stderr);
        !           146:         exit(EXIT_FAILURE);
        !           147:     }
        !           148:     exit(EXIT_SUCCESS);
        !           149: }
        !           150: 
        !           151: /*=export_func  optionPrintVersion
        !           152:  * private:
        !           153:  *
        !           154:  * what:  Print the program version
        !           155:  * arg:   + tOptions* + pOpts    + program options descriptor +
        !           156:  * arg:   + tOptDesc* + pOptDesc + the descriptor for this arg +
        !           157:  *
        !           158:  * doc:
        !           159:  *  This routine will print the version to stdout.
        !           160: =*/
        !           161: void
        !           162: optionPrintVersion(tOptions * pOpts, tOptDesc * pOD)
        !           163: {
        !           164:     print_ver(pOpts, pOD, stdout);
        !           165: }
        !           166: 
        !           167: /*=export_func  optionVersionStderr
        !           168:  * private:
        !           169:  *
        !           170:  * what:  Print the program version to stderr
        !           171:  * arg:   + tOptions* + pOpts    + program options descriptor +
        !           172:  * arg:   + tOptDesc* + pOptDesc + the descriptor for this arg +
        !           173:  *
        !           174:  * doc:
        !           175:  *  This routine will print the version to stderr.
        !           176: =*/
        !           177: void
        !           178: optionVersionStderr(tOptions * pOpts, tOptDesc * pOD)
        !           179: {
        !           180:     print_ver(pOpts, pOD, stderr);
        !           181: }
        !           182: 
        !           183: /*
        !           184:  * Local Variables:
        !           185:  * mode: C
        !           186:  * c-file-style: "stroustrup"
        !           187:  * indent-tabs-mode: nil
        !           188:  * End:
        !           189:  * end of autoopts/version.c */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>