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

1.1     ! misho       1: /*   -*- buffer-read-only: t -*- vi: set ro:
        !             2:  *  
        !             3:  *  DO NOT EDIT THIS FILE   (genshell.c)
        !             4:  *  
        !             5:  *  It has been AutoGen-ed  April 29, 2011 at 03:43:59 PM by AutoGen 5.11.9
        !             6:  *  From the definitions    genshell.def
        !             7:  *  and the template file   options
        !             8:  *
        !             9:  * Generated from AutoOpts 35:0:10 templates.
        !            10:  *
        !            11:  *  AutoOpts is a copyrighted work.  This source file is not encumbered
        !            12:  *  by AutoOpts licensing, but is provided under the licensing terms chosen
        !            13:  *  by the genshellopt author or copyright holder.  AutoOpts is
        !            14:  *  licensed under the terms of the LGPL.  The redistributable library
        !            15:  *  (``libopts'') is licensed under the terms of either the LGPL or, at the
        !            16:  *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
        !            17:  *  for details.
        !            18:  *
        !            19:  * This source file is copyrighted and licensed under the following terms:
        !            20:  *
        !            21:  * genshellopt copyright (c) 1999-2011 Bruce Korb - all rights reserved
        !            22:  *
        !            23:  * genshellopt is free software: you can redistribute it and/or modify it
        !            24:  * under the terms of the GNU General Public License as published by the
        !            25:  * Free Software Foundation, either version 3 of the License, or
        !            26:  * (at your option) any later version.
        !            27:  * 
        !            28:  * genshellopt is distributed in the hope that it will be useful, but
        !            29:  * WITHOUT ANY WARRANTY; without even the implied warranty of
        !            30:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
        !            31:  * See the GNU General Public License for more details.
        !            32:  * 
        !            33:  * You should have received a copy of the GNU General Public License along
        !            34:  * with this program.  If not, see <http://www.gnu.org/licenses/>.
        !            35: 
        !            36:  */
        !            37: 
        !            38: #include <sys/types.h>
        !            39: 
        !            40: #include <limits.h>
        !            41: #include <stdio.h>
        !            42: #include <stdlib.h>
        !            43: 
        !            44: #define OPTION_CODE_COMPILE 1
        !            45: #include "genshell.h"
        !            46: 
        !            47: #ifdef  __cplusplus
        !            48: extern "C" {
        !            49: #endif
        !            50: extern FILE * option_usage_fp;
        !            51: 
        !            52: /* TRANSLATORS: choose the translation for option names wisely because you
        !            53:                 cannot ever change your mind. */
        !            54: static char const zCopyright[260] =
        !            55: "genshellopt 1\n\
        !            56: Copyright (C) 1999-2011 Bruce Korb, all rights reserved.\n\
        !            57: This is free software. It is licensed for use, modification and\n\
        !            58: redistribution under the terms of the\n\
        !            59: GNU General Public License, version 3 or later\n\
        !            60:     <http://gnu.org/licenses/gpl.html>\n";
        !            61: static char const zCopyrightNotice[611] =
        !            62: "genshellopt is free software: you can redistribute it and/or modify it\n\
        !            63: under the terms of the GNU General Public License as published by the\n\
        !            64: Free Software Foundation, either version 3 of the License, or (at your\n\
        !            65: option) any later version.\n\n\
        !            66: genshellopt is distributed in the hope that it will be useful, but WITHOUT\n\
        !            67: ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n\
        !            68: FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\n\
        !            69: for more details.\n\n\
        !            70: You should have received a copy of the GNU General Public License along\n\
        !            71: with this program.  If not, see <http://www.gnu.org/licenses/>.\n";
        !            72: 
        !            73: extern tUsageProc genshelloptUsage;
        !            74: 
        !            75: #ifndef NULL
        !            76: #  define NULL 0
        !            77: #endif
        !            78: 
        !            79: /*
        !            80:  *  Script option description:
        !            81:  */
        !            82: static char const zScriptText[] =
        !            83:         "Output Script File";
        !            84: static char const zScript_NAME[]             = "SCRIPT";
        !            85: static char const zScript_Name[]             = "script";
        !            86: #define SCRIPT_FLAGS       (OPTST_DISABLED \
        !            87:         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
        !            88: 
        !            89: /*
        !            90:  *  Shell option description:
        !            91:  */
        !            92: static char const zShellText[] =
        !            93:         "Shell name (follows \"#!\" magic)";
        !            94: static char const zShell_NAME[]              = "SHELL";
        !            95: static char const zNotShell_Name[]           = "no-shell";
        !            96: static char const zNotShell_Pfx[]            = "no";
        !            97: #define zShell_Name                  (zNotShell_Name + 3)
        !            98: #define SHELL_FLAGS       (OPTST_INITENABLED \
        !            99:         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
        !           100: 
        !           101: /*
        !           102:  *  Help/More_Help/Version option descriptions:
        !           103:  */
        !           104: static char const zHelpText[]          = "Display extended usage information and exit";
        !           105: static char const zHelp_Name[]         = "help";
        !           106: #ifdef HAVE_WORKING_FORK
        !           107: #define OPTST_MORE_HELP_FLAGS   (OPTST_IMM | OPTST_NO_INIT)
        !           108: static char const zMore_Help_Name[]    = "more-help";
        !           109: static char const zMore_HelpText[]     = "Extended usage information passed thru pager";
        !           110: #else
        !           111: #define OPTST_MORE_HELP_FLAGS   (OPTST_OMITTED | OPTST_NO_INIT)
        !           112: #define zMore_Help_Name   NULL
        !           113: #define zMore_HelpText    NULL
        !           114: #endif
        !           115: #ifdef NO_OPTIONAL_OPT_ARGS
        !           116: #  define OPTST_VERSION_FLAGS   OPTST_IMM | OPTST_NO_INIT
        !           117: #else
        !           118: #  define OPTST_VERSION_FLAGS   OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
        !           119:                                 OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT
        !           120: #endif
        !           121: 
        !           122: static char const zVersionText[]       = "Output version information and exit";
        !           123: static char const zVersion_Name[]      = "version";
        !           124: /*
        !           125:  *  Declare option callback procedures
        !           126:  */
        !           127: extern tOptProc
        !           128:     optionBooleanVal,    optionNestedVal,     optionNumericVal,
        !           129:     optionPagedUsage,    optionPrintVersion,  optionResetOpt,
        !           130:     optionStackArg,      optionTimeDate,      optionTimeVal,
        !           131:     optionUnstackArg,    optionVersionStderr;
        !           132: static tOptProc
        !           133:     doUsageOpt;
        !           134: 
        !           135: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        !           136:  *
        !           137:  *  Define the Genshellopt Option Descriptions.
        !           138:  */
        !           139: static tOptDesc optDesc[GENSHELL_OPTION_CT] = {
        !           140:   {  /* entry idx, value */ 0, VALUE_GENSHELL_OPT_SCRIPT,
        !           141:      /* equiv idx, value */ 0, VALUE_GENSHELL_OPT_SCRIPT,
        !           142:      /* equivalenced to  */ NO_EQUIVALENT,
        !           143:      /* min, max, act ct */ 0, 1, 0,
        !           144:      /* opt state flags  */ SCRIPT_FLAGS, 0,
        !           145:      /* last opt argumnt */ { NULL },
        !           146:      /* arg list/cookie  */ NULL,
        !           147:      /* must/cannot opts */ NULL, NULL,
        !           148:      /* option proc      */ NULL,
        !           149:      /* desc, NAME, name */ zScriptText, zScript_NAME, zScript_Name,
        !           150:      /* disablement strs */ NULL, NULL },
        !           151: 
        !           152:   {  /* entry idx, value */ 1, VALUE_GENSHELL_OPT_SHELL,
        !           153:      /* equiv idx, value */ 1, VALUE_GENSHELL_OPT_SHELL,
        !           154:      /* equivalenced to  */ NO_EQUIVALENT,
        !           155:      /* min, max, act ct */ 0, 1, 0,
        !           156:      /* opt state flags  */ SHELL_FLAGS, 0,
        !           157:      /* last opt argumnt */ { NULL },
        !           158:      /* arg list/cookie  */ NULL,
        !           159:      /* must/cannot opts */ NULL, NULL,
        !           160:      /* option proc      */ NULL,
        !           161:      /* desc, NAME, name */ zShellText, zShell_NAME, zShell_Name,
        !           162:      /* disablement strs */ zNotShell_Name, zNotShell_Pfx },
        !           163: 
        !           164:   {  /* entry idx, value */ INDEX_GENSHELL_OPT_VERSION, VALUE_GENSHELL_OPT_VERSION,
        !           165:      /* equiv idx value  */ NO_EQUIVALENT, 0,
        !           166:      /* equivalenced to  */ NO_EQUIVALENT,
        !           167:      /* min, max, act ct */ 0, 1, 0,
        !           168:      /* opt state flags  */ OPTST_VERSION_FLAGS, 0,
        !           169:      /* last opt argumnt */ { NULL },
        !           170:      /* arg list/cookie  */ NULL,
        !           171:      /* must/cannot opts */ NULL, NULL,
        !           172:      /* option proc      */ optionPrintVersion,
        !           173:      /* desc, NAME, name */ zVersionText, NULL, zVersion_Name,
        !           174:      /* disablement strs */ NULL, NULL },
        !           175: 
        !           176: 
        !           177: 
        !           178:   {  /* entry idx, value */ INDEX_GENSHELL_OPT_HELP, VALUE_GENSHELL_OPT_HELP,
        !           179:      /* equiv idx value  */ NO_EQUIVALENT, 0,
        !           180:      /* equivalenced to  */ NO_EQUIVALENT,
        !           181:      /* min, max, act ct */ 0, 1, 0,
        !           182:      /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, 0,
        !           183:      /* last opt argumnt */ { NULL },
        !           184:      /* arg list/cookie  */ NULL,
        !           185:      /* must/cannot opts */ NULL, NULL,
        !           186:      /* option proc      */ doUsageOpt,
        !           187:      /* desc, NAME, name */ zHelpText, NULL, zHelp_Name,
        !           188:      /* disablement strs */ NULL, NULL },
        !           189: 
        !           190:   {  /* entry idx, value */ INDEX_GENSHELL_OPT_MORE_HELP, VALUE_GENSHELL_OPT_MORE_HELP,
        !           191:      /* equiv idx value  */ NO_EQUIVALENT, 0,
        !           192:      /* equivalenced to  */ NO_EQUIVALENT,
        !           193:      /* min, max, act ct */ 0, 1, 0,
        !           194:      /* opt state flags  */ OPTST_MORE_HELP_FLAGS, 0,
        !           195:      /* last opt argumnt */ { NULL },
        !           196:      /* arg list/cookie  */ NULL,
        !           197:      /* must/cannot opts */ NULL,  NULL,
        !           198:      /* option proc      */ optionPagedUsage,
        !           199:      /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name,
        !           200:      /* disablement strs */ NULL, NULL }
        !           201: };
        !           202: 
        !           203: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        !           204:  *
        !           205:  *  Define the Genshellopt Option Environment
        !           206:  */
        !           207: static char const zPROGNAME[12] = "GENSHELLOPT";
        !           208: static char const zUsageTitle[121] =
        !           209: "genshellopt - Generate Shell Option Processing Script - Ver. 1\n\
        !           210: USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n";
        !           211: #define zRcName     NULL
        !           212: #define apzHomeList NULL
        !           213: 
        !           214: static char const zBugsAddr[36]    = "autogen-users@lists.sourceforge.net";
        !           215: static char const zExplain[] = "\n\
        !           216: Note that ``shell'' is only useful if the output file does not already\n\
        !           217: exist.  If it does, then the shell name and optional first argument will\n\
        !           218: be extracted from the script file.\n";
        !           219: static char const zDetail[237] = "\n\
        !           220: If the script file already exists and contains Automated Option Processing\n\
        !           221: text, the second line of the file through the ending tag will be replaced\n\
        !           222: by the newly generated text.  The first ``#!''  line will be regenerated.\n";
        !           223: static char const zFullVersion[] = GENSHELLOPT_FULL_VERSION;
        !           224: /* extracted from optcode.tlib near line 515 */
        !           225: 
        !           226: #if defined(ENABLE_NLS)
        !           227: # define OPTPROC_BASE OPTPROC_TRANSLATE
        !           228:   static tOptionXlateProc translate_option_strings;
        !           229: #else
        !           230: # define OPTPROC_BASE OPTPROC_NONE
        !           231: # define translate_option_strings NULL
        !           232: #endif /* ENABLE_NLS */
        !           233: 
        !           234: 
        !           235: #define genshellopt_full_usage NULL
        !           236: #define genshellopt_short_usage NULL
        !           237: #ifndef  PKGDATADIR
        !           238: # define PKGDATADIR ""
        !           239: #endif
        !           240: 
        !           241: #ifndef  WITH_PACKAGER
        !           242: # define genshellopt_packager_info NULL
        !           243: #else
        !           244: static char const genshellopt_packager_info[] =
        !           245:     "Packaged by " WITH_PACKAGER
        !           246: 
        !           247: # ifdef WITH_PACKAGER_VERSION
        !           248:         " ("WITH_PACKAGER_VERSION")"
        !           249: # endif
        !           250: 
        !           251: # ifdef WITH_PACKAGER_BUG_REPORTS
        !           252:     "\nReport genshellopt bugs to " WITH_PACKAGER_BUG_REPORTS
        !           253: # endif
        !           254:     "\n";
        !           255: #endif
        !           256: 
        !           257: tOptions genshelloptOptions = {
        !           258:     OPTIONS_STRUCT_VERSION,
        !           259:     0, NULL,                    /* original argc + argv    */
        !           260:     ( OPTPROC_BASE
        !           261:     + OPTPROC_ERRSTOP
        !           262:     + OPTPROC_SHORTOPT
        !           263:     + OPTPROC_LONGOPT
        !           264:     + OPTPROC_NO_REQ_OPT
        !           265:     + OPTPROC_NEGATIONS
        !           266:     + OPTPROC_NO_ARGS ),
        !           267:     0, NULL,                    /* current option index, current option */
        !           268:     NULL,         NULL,         zPROGNAME,
        !           269:     zRcName,      zCopyright,   zCopyrightNotice,
        !           270:     zFullVersion, apzHomeList,  zUsageTitle,
        !           271:     zExplain,     zDetail,      optDesc,
        !           272:     zBugsAddr,                  /* address to send bugs to */
        !           273:     NULL, NULL,                 /* extensions/saved state  */
        !           274:     genshelloptUsage, /* usage procedure */
        !           275:     translate_option_strings,   /* translation procedure */
        !           276:     /*
        !           277:      *  Indexes to special options
        !           278:      */
        !           279:     { INDEX_GENSHELL_OPT_MORE_HELP, /* more-help option index */
        !           280:       NO_EQUIVALENT, /* save option index */
        !           281:       NO_EQUIVALENT, /* '-#' option index */
        !           282:       NO_EQUIVALENT /* index of default opt */
        !           283:     },
        !           284:     5 /* full option count */, 2 /* user option count */,
        !           285:     genshellopt_full_usage, genshellopt_short_usage,
        !           286:     NULL, NULL,
        !           287:     PKGDATADIR, genshellopt_packager_info
        !           288: };
        !           289: 
        !           290: /*
        !           291:  *  Create the static procedure(s) declared above.
        !           292:  */
        !           293: static void
        !           294: doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc)
        !           295: {
        !           296:     (void)pOptions;
        !           297:     GENSHELL_USAGE(GENSHELLOPT_EXIT_SUCCESS);
        !           298: }
        !           299: /* extracted from optcode.tlib near line 666 */
        !           300: 
        !           301: #if ENABLE_NLS
        !           302: #include <stdio.h>
        !           303: #include <stdlib.h>
        !           304: #include <string.h>
        !           305: #include <unistd.h>
        !           306: #include <autoopts/usage-txt.h>
        !           307: 
        !           308: static char* AO_gettext(char const* pz);
        !           309: static void  coerce_it(void** s);
        !           310: 
        !           311: static char*
        !           312: AO_gettext(char const* pz)
        !           313: {
        !           314:     char* pzRes;
        !           315:     if (pz == NULL)
        !           316:         return NULL;
        !           317:     pzRes = _(pz);
        !           318:     if (pzRes == pz)
        !           319:         return pzRes;
        !           320:     pzRes = strdup(pzRes);
        !           321:     if (pzRes == NULL) {
        !           322:         fputs(_("No memory for duping translated strings\n"), stderr);
        !           323:         exit(GENSHELLOPT_EXIT_FAILURE);
        !           324:     }
        !           325:     return pzRes;
        !           326: }
        !           327: 
        !           328: static void coerce_it(void** s) { *s = AO_gettext(*s);
        !           329: }
        !           330: 
        !           331: /*
        !           332:  *  This invokes the translation code (e.g. gettext(3)).
        !           333:  */
        !           334: static void
        !           335: translate_option_strings(void)
        !           336: {
        !           337:     tOptions * const pOpt = &genshelloptOptions;
        !           338: 
        !           339:     /*
        !           340:      *  Guard against re-translation.  It won't work.  The strings will have
        !           341:      *  been changed by the first pass through this code.  One shot only.
        !           342:      */
        !           343:     if (option_usage_text.field_ct != 0) {
        !           344:         /*
        !           345:          *  Do the translations.  The first pointer follows the field count
        !           346:          *  field.  The field count field is the size of a pointer.
        !           347:          */
        !           348:         tOptDesc * pOD = pOpt->pOptDesc;
        !           349:         char **    ppz = (char**)(void*)&(option_usage_text);
        !           350:         int        ix  = option_usage_text.field_ct;
        !           351: 
        !           352:         do {
        !           353:             ppz++;
        !           354:             *ppz = AO_gettext(*ppz);
        !           355:         } while (--ix > 0);
        !           356: 
        !           357:         coerce_it((void*)&(pOpt->pzCopyright));
        !           358:         coerce_it((void*)&(pOpt->pzCopyNotice));
        !           359:         coerce_it((void*)&(pOpt->pzFullVersion));
        !           360:         coerce_it((void*)&(pOpt->pzUsageTitle));
        !           361:         coerce_it((void*)&(pOpt->pzExplain));
        !           362:         coerce_it((void*)&(pOpt->pzDetail));
        !           363:         coerce_it((void*)&(pOpt->pzPackager));
        !           364:         option_usage_text.field_ct = 0;
        !           365: 
        !           366:         for (ix = pOpt->optCt; ix > 0; ix--, pOD++)
        !           367:             coerce_it((void*)&(pOD->pzText));
        !           368:     }
        !           369: 
        !           370:     if ((pOpt->fOptSet & OPTPROC_NXLAT_OPT_CFG) == 0) {
        !           371:         tOptDesc * pOD = pOpt->pOptDesc;
        !           372:         int        ix;
        !           373: 
        !           374:         for (ix = pOpt->optCt; ix > 0; ix--, pOD++) {
        !           375:             coerce_it((void*)&(pOD->pz_Name));
        !           376:             coerce_it((void*)&(pOD->pz_DisableName));
        !           377:             coerce_it((void*)&(pOD->pz_DisablePfx));
        !           378:         }
        !           379:         /* prevent re-translation */
        !           380:         genshelloptOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | OPTPROC_NXLAT_OPT;
        !           381:     }
        !           382: }
        !           383: 
        !           384: #endif /* ENABLE_NLS */
        !           385: 
        !           386: #ifdef  __cplusplus
        !           387: }
        !           388: #endif
        !           389: /* genshell.c ends here */

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