📄 genshell.c
字号:
/* -*- buffer-read-only: t -*- vi: set ro: * * DO NOT EDIT THIS FILE (genshell.c) * * It has been AutoGen-ed Saturday May 5, 2007 at 12:02:35 PM PDT * From the definitions genshell.def * and the template file options * * Generated from AutoOpts 29:0:4 templates. *//* * This file was produced by an AutoOpts template. AutoOpts is a * copyrighted work. This source file is not encumbered by AutoOpts * licensing, but is provided under the licensing terms chosen by the * genshellopt author or copyright holder. AutoOpts is licensed under * the terms of the LGPL. The redistributable library (``libopts'') is * licensed under the terms of either the LGPL or, at the users discretion, * the BSD license. See the AutoOpts and/or libopts sources for details. * * This source file is copyrighted and licensed under the following terms: * * genshellopt copyright 1999-2007 Bruce Korb - all rights reserved * * genshellopt is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * genshellopt is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with genshellopt. If not, write to: * The Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor * Boston, MA 02110-1301, USA. */#include <limits.h>#define OPTION_CODE_COMPILE 1#include "genshell.h"#ifdef __cplusplusextern "C" {#endiftSCC zCopyright[] = "genshellopt copyright (c) 1999-2007 Bruce Korb, all rights reserved";tSCC zCopyrightNotice[] = "genshellopt is free software; you can redistribute it and/or\n\modify it under the terms of the GNU Lesser General Public\n\License as published by the Free Software Foundation; either\n\version 2.1 of the License, or (at your option) any later version.\n\n\genshellopt is distributed in the hope that it will be useful,\n\but WITHOUT ANY WARRANTY; without even the implied warranty of\n\MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n\Lesser General Public License for more details.\n\n\You should have received a copy of the GNU Lesser General Public\n\License along with genshellopt. If not, write to:\n\\tThe Free Software Foundation, Inc.,\n\\t51 Franklin Street, Fifth Floor\n\\tBoston, MA 02110-1301, USA.";extern tUsageProc genshelloptUsage;#ifndef NULL# define NULL 0#endif#ifndef EXIT_SUCCESS# define EXIT_SUCCESS 0#endif#ifndef EXIT_FAILURE# define EXIT_FAILURE 1#endif/* * Script option description: */tSCC zScriptText[] = "Output Script File";tSCC zScript_NAME[] = "SCRIPT";tSCC zScript_Name[] = "script";#define SCRIPT_FLAGS (OPTST_DISABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))/* * Shell option description: */tSCC zShellText[] = "Shell name (follows \"#!\" magic)";tSCC zShell_NAME[] = "SHELL";tSCC zNotShell_Name[] = "no-shell";tSCC zNotShell_Pfx[] = "no";#define zShell_Name (zNotShell_Name + 3)#define SHELL_FLAGS (OPTST_INITENABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))/* * Help/More_Help/Version option descriptions: */tSCC zHelpText[] = "Display usage information and exit";tSCC zHelp_Name[] = "help";tSCC zMore_HelpText[] = "Extended usage information passed thru pager";tSCC zMore_Help_Name[] = "more-help";tSCC zVersionText[] = "Output version information and exit";tSCC zVersion_Name[] = "version";/* * Declare option callback procedures */extern tOptProc optionPagedUsage, optionPrintVersion;static tOptProc doUsageOpt;/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Define the Genshellopt Option Descriptions. */static tOptDesc optDesc[ OPTION_CT ] = { { /* entry idx, value */ 0, VALUE_OPT_SCRIPT, /* equiv idx, value */ 0, VALUE_OPT_SCRIPT, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ SCRIPT_FLAGS, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, /* must/cannot opts */ NULL, NULL, /* option proc */ NULL, /* desc, NAME, name */ zScriptText, zScript_NAME, zScript_Name, /* disablement strs */ NULL, NULL }, { /* entry idx, value */ 1, VALUE_OPT_SHELL, /* equiv idx, value */ 1, VALUE_OPT_SHELL, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ SHELL_FLAGS, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, /* must/cannot opts */ NULL, NULL, /* option proc */ NULL, /* desc, NAME, name */ zShellText, zShell_NAME, zShell_Name, /* disablement strs */ zNotShell_Name, zNotShell_Pfx },#ifdef NO_OPTIONAL_OPT_ARGS# define VERSION_OPT_FLAGS OPTST_IMM | OPTST_NO_INIT#else# define VERSION_OPT_FLAGS OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \ OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT#endif { /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION, /* equiv idx value */ NO_EQUIVALENT, 0, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ VERSION_OPT_FLAGS, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, /* must/cannot opts */ NULL, NULL, /* option proc */ optionPrintVersion, /* desc, NAME, name */ zVersionText, NULL, zVersion_Name, /* disablement strs */ NULL, NULL },#undef VERSION_OPT_FLAGS { /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP, /* equiv idx value */ NO_EQUIVALENT, 0, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, /* must/cannot opts */ NULL, NULL, /* option proc */ doUsageOpt, /* desc, NAME, name */ zHelpText, NULL, zHelp_Name, /* disablement strs */ NULL, NULL }, { /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP, /* equiv idx value */ NO_EQUIVALENT, 0, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0, /* last opt argumnt */ { NULL }, /* arg list/cookie */ NULL, /* must/cannot opts */ NULL, NULL, /* option proc */ optionPagedUsage, /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name, /* disablement strs */ NULL, NULL }};/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Define the Genshellopt Option Environment */tSCC zPROGNAME[] = "GENSHELLOPT";tSCC zUsageTitle[] ="genshellopt - Generate Shell Option Processing Script - Ver. 1\n\USAGE: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n";#define zRcName NULL#define apzHomeList NULLtSCC zBugsAddr[] = "autogen-users@lists.sourceforge.net";tSCC zExplain[] = "\n\Note that `shell' is only useful if the output file does not already\n\exist. If it does, then the shell name and optional first argument\n\will be extracted from the script file.\n";tSCC zDetail[] = "\n\If the script file already exists and contains Automated Option Processing\n\text, the second line of the file through the ending tag will be replaced\n\by the newly generated text. The first `#!' line will be regenerated.\n";tSCC zFullVersion[] = GENSHELLOPT_FULL_VERSION;/* extracted from optcode.tpl near line 408 */#if defined(ENABLE_NLS)# define OPTPROC_BASE OPTPROC_TRANSLATE static tOptionXlateProc translate_option_strings;#else# define OPTPROC_BASE OPTPROC_NONE# define translate_option_strings NULL#endif /* ENABLE_NLS */tOptions genshelloptOptions = { OPTIONS_STRUCT_VERSION, 0, NULL, /* original argc + argv */ ( OPTPROC_BASE + OPTPROC_ERRSTOP + OPTPROC_SHORTOPT + OPTPROC_LONGOPT + OPTPROC_NO_REQ_OPT + OPTPROC_NEGATIONS + OPTPROC_NO_ARGS ), 0, NULL, /* current option index, current option */ NULL, NULL, zPROGNAME, zRcName, zCopyright, zCopyrightNotice, zFullVersion, apzHomeList, zUsageTitle, zExplain, zDetail, optDesc, zBugsAddr, /* address to send bugs to */ NULL, NULL, /* extensions/saved state */ genshelloptUsage, /* usage procedure */ translate_option_strings, /* translation procedure */ /* * Indexes to special options */ { INDEX_OPT_MORE_HELP, 0 /* no option state saving */, NO_EQUIVALENT /* index of '-#' option */, NO_EQUIVALENT /* index of default opt */ }, 5 /* full option count */, 2 /* user option count */};/* * Create the static procedure(s) declared above. */static voiddoUsageOpt( tOptions* pOptions, tOptDesc* pOptDesc ){ USAGE( EXIT_SUCCESS );}/* extracted from optcode.tpl near line 514 */#if ENABLE_NLS#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <autoopts/usage-txt.h>static char* AO_gettext( char const* pz );static void coerce_it(void** s);static char*AO_gettext( char const* pz ){ char* pzRes; if (pz == NULL) return NULL; pzRes = _(pz); if (pzRes == pz) return pzRes; pzRes = strdup( pzRes ); if (pzRes == NULL) { fputs( _("No memory for duping translated strings\n"), stderr ); exit( EXIT_FAILURE ); } return pzRes;}static void coerce_it(void** s) { *s = AO_gettext(*s); }#define COERSION(_f) \ coerce_it((void*)&(genshelloptOptions._f))/* * This invokes the translation code (e.g. gettext(3)). */static voidtranslate_option_strings( void ){ /* * Guard against re-translation. It won't work. The strings will have * been changed by the first pass through this code. One shot only. */ if (option_usage_text.field_ct == 0) return; /* * Do the translations. The first pointer follows the field count field. * The field count field is the size of a pointer. */ { char** ppz = (char**)(void*)&(option_usage_text); int ix = option_usage_text.field_ct; do { ppz++; *ppz = AO_gettext(*ppz); } while (--ix > 0); } option_usage_text.field_ct = 0; { tOptDesc* pOD = genshelloptOptions.pOptDesc; int ix = genshelloptOptions.optCt; for (;;) { pOD->pzText = AO_gettext(pOD->pzText); pOD->pz_NAME = AO_gettext(pOD->pz_NAME); pOD->pz_Name = AO_gettext(pOD->pz_Name); pOD->pz_DisableName = AO_gettext(pOD->pz_DisableName); pOD->pz_DisablePfx = AO_gettext(pOD->pz_DisablePfx); if (--ix <= 0) break; pOD++; } } COERSION(pzCopyright); COERSION(pzCopyNotice); COERSION(pzFullVersion); COERSION(pzUsageTitle); COERSION(pzExplain); COERSION(pzDetail);}#endif /* ENABLE_NLS */#ifdef __cplusplus}#endif/* genshell.c ends here */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -