]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
Add options processing to ntpsnmpd.
authorHarlan Stenn <stenn@ntp.org>
Tue, 16 Sep 2008 07:34:05 +0000 (03:34 -0400)
committerHarlan Stenn <stenn@ntp.org>
Tue, 16 Sep 2008 07:34:05 +0000 (03:34 -0400)
bk: 48cf616dvkSDWW2z4RA_xdtNwhshPQ

.point-changed-filelist
ChangeLog
ntpsnmpd/Makefile.am
ntpsnmpd/ntpsnmpd-opts.c [new file with mode: 0644]
ntpsnmpd/ntpsnmpd-opts.def [new file with mode: 0644]
ntpsnmpd/ntpsnmpd-opts.h [new file with mode: 0644]
ntpsnmpd/ntpsnmpd-opts.menu [new file with mode: 0644]
ntpsnmpd/ntpsnmpd-opts.texi [new file with mode: 0644]
ntpsnmpd/ntpsnmpd.1 [new file with mode: 0644]
ntpsnmpd/ntpsnmpd.c

index 254814b397b5a2d312af1affab801b799232f5c1..575faf5bb7c011ca9a663520b17cb460b4deafc8 100644 (file)
@@ -11,6 +11,10 @@ ntpq/ntpq-opts.c
 ntpq/ntpq-opts.h
 ntpq/ntpq-opts.texi
 ntpq/ntpq.1
+ntpsnmpd/ntpsnmpd-opts.c
+ntpsnmpd/ntpsnmpd-opts.h
+ntpsnmpd/ntpsnmpd-opts.texi
+ntpsnmpd/ntpsnmpd.1
 packageinfo.sh
 sntp/sntp-opts.c
 sntp/sntp-opts.h
index 736b904d51b2a759beb7741acc84caa0597e9299..68fd31546dbbfe97c8566422a52fa209bc530b14 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,4 @@
+* Add options processing to ntpsnmpd.
 * [Bug 1062] Check net-snmp headers before deciding to build ntpsnmpd.
 * Clean up the libntpq.a build.
 * Regenerate ntp_parser.[ch] from ntp_parser.y
index 4e80357221fa786951a46811137e4b9927286b1e..d3681e093d9008333498907e9b7234e297b58e7d 100644 (file)
@@ -1,9 +1,32 @@
 AUTOMAKE_OPTIONS= 
 
 sbin_PROGRAMS= ntpsnmpd
-ntpsnmpd_SOURCES= ntpsnmpd.c ntpSnmpSubagentObject.c
+ntpsnmpd_SOURCES= ntpsnmpd.c ntpSnmpSubagentObject.c   \
+                       ntpsnmpd-opts.c ntpsnmpd-opts.h
 noinst_HEADERS=        ntpSnmpSubagentObject.h
 # HMS: we probably want a version.o file here, too.
-LDADD=         ../ntpq/libntpq.a ../libntp/libntp.a @SNMP_LIBS@
-AM_CPPFLAGS=   -I$(top_srcdir)/ntpq -I$(top_srcdir)/include @SNMP_CPPFLAGS@
+LDADD=         ../ntpq/libntpq.a ../libntp/libntp.a @SNMP_LIBS@        \
+               $(LIBOPTS_LDADD)
+AM_CPPFLAGS=   -I$(top_srcdir)/ntpq -I$(top_srcdir)/include @SNMP_CPPFLAGS@ \
+               $(LIBOPTS_CFLAGS)
 AM_CFLAGS=     @SNMP_CFLAGS@
+EXTRA_DIST=    ntpsnmpd-opts.def ntpsnmpd.1 ntpsnmpd-opts.texi ntpsnmpd-opts.menu
+BUILT_SOURCES= ntpsnmpd-opts.c ntpsnmpd-opts.h ntpsnmpd.1 ntpsnmpd-opts.texi ntpsnmpd-opts.menu
+man_MANS=      ntpsnmpd.1
+run_ag=                cd $(srcdir) && autogen -L ../include --writable
+std_def_list=  $(top_srcdir)/include/debug-opt.def             \
+               $(top_srcdir)/include/autogen-version.def       \
+               $(top_srcdir)/include/copyright.def             \
+               $(top_srcdir)/include/homerc.def                \
+               $(top_srcdir)/include/version.def
+
+$(srcdir)/ntpsnmpd-opts.h: $(srcdir)/ntpsnmpd-opts.c
+$(srcdir)/ntpsnmpd-opts.c: $(srcdir)/ntpsnmpd-opts.def $(std_def_list)
+       $(run_ag) ntpsnmpd-opts.def
+
+$(srcdir)/ntpsnmpd.1: $(srcdir)/ntpsnmpd-opts.def $(std_def_list)
+       $(run_ag) -Tagman1.tpl -bntpsnmpd ntpsnmpd-opts.def
+
+$(srcdir)/ntpsnmpd-opts.texi $(srcdir)/ntpsnmpd-opts.menu: $(srcdir)/ntpsnmpd-opts.def $(std_def_list)
+       $(run_ag) -Taginfo.tpl -DLEVEL=section ntpsnmpd-opts.def
+
diff --git a/ntpsnmpd/ntpsnmpd-opts.c b/ntpsnmpd/ntpsnmpd-opts.c
new file mode 100644 (file)
index 0000000..fa3edea
--- /dev/null
@@ -0,0 +1,398 @@
+/*  
+ *  EDIT THIS FILE WITH CAUTION  (ntpsnmpd-opts.c)
+ *  
+ *  It has been AutoGen-ed  Tuesday September 16, 2008 at 03:27:52 AM EDT
+ *  From the definitions    ntpsnmpd-opts.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
+ *  ntpsnmpd 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:
+ *
+ * ntpsnmpd copyright 1970-2008 David L. Mills and/or others - all rights reserved
+ *
+ * see html/copyright.html
+ */
+
+
+#include <limits.h>
+
+#define OPTION_CODE_COMPILE 1
+#include "ntpsnmpd-opts.h"
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+tSCC zCopyright[] =
+       "ntpsnmpd copyright (c) 1970-2008 David L. Mills and/or others, all rights reserved";
+tSCC zCopyrightNotice[] =
+       
+/* extracted from ../include/copyright.def near line 8 */
+"see html/copyright.html";
+extern tUsageProc optionUsage;
+
+#ifndef NULL
+#  define NULL 0
+#endif
+#ifndef EXIT_SUCCESS
+#  define  EXIT_SUCCESS 0
+#endif
+#ifndef EXIT_FAILURE
+#  define  EXIT_FAILURE 1
+#endif
+/*
+ *  Nofork option description:
+ */
+tSCC    zNoforkText[] =
+        "Do not fork";
+tSCC    zNofork_NAME[]             = "NOFORK";
+tSCC    zNofork_Name[]             = "nofork";
+#define NOFORK_FLAGS       (OPTST_DISABLED)
+
+/*
+ *  Syslog option description:
+ */
+tSCC    zSyslogText[] =
+        "Log to syslog()";
+tSCC    zSyslog_NAME[]             = "SYSLOG";
+tSCC    zSyslog_Name[]             = "syslog";
+#define SYSLOG_FLAGS       (OPTST_DISABLED)
+
+/*
+ *  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";
+
+/*
+ *  Save/Load_Opts option description:
+ */
+tSCC zSave_OptsText[]     = "Save the option state to a config file";
+tSCC zSave_Opts_Name[]    = "save-opts";
+
+tSCC zLoad_OptsText[]     = "Load options from a config file";
+tSCC zLoad_Opts_NAME[]    = "LOAD_OPTS";
+
+tSCC zNotLoad_Opts_Name[] = "no-load-opts";
+tSCC zNotLoad_Opts_Pfx[]  = "no";
+#define zLoad_Opts_Name   (zNotLoad_Opts_Name + 3)
+/*
+ *  Declare option callback procedures
+ */
+#if defined(TEST_NTPSNMPD_OPTS)
+/*
+ *  Under test, omit argument processing, or call optionStackArg,
+ *  if multiple copies are allowed.
+ */
+extern tOptProc
+    optionPagedUsage, optionVersionStderr;
+static tOptProc
+    doUsageOpt;
+
+#else /* NOT defined TEST_NTPSNMPD_OPTS */
+/*
+ *  When not under test, there are different procs to use
+ */
+extern tOptProc
+    optionPagedUsage, optionPrintVersion;
+static tOptProc
+    doUsageOpt;
+#endif /* defined(TEST_NTPSNMPD_OPTS) */
+#ifdef TEST_NTPSNMPD_OPTS
+# define DOVERPROC optionVersionStderr
+#else
+# define DOVERPROC optionPrintVersion
+#endif /* TEST_NTPSNMPD_OPTS */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ *  Define the Ntpsnmpd Option Descriptions.
+ */
+static tOptDesc optDesc[ OPTION_CT ] = {
+  {  /* entry idx, value */ 0, VALUE_OPT_NOFORK,
+     /* equiv idx, value */ 0, VALUE_OPT_NOFORK,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ NOFORK_FLAGS, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ zNoforkText, zNofork_NAME, zNofork_Name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ 1, VALUE_OPT_SYSLOG,
+     /* equiv idx, value */ 1, VALUE_OPT_SYSLOG,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ SYSLOG_FLAGS, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ zSyslogText, zSyslog_NAME, zSyslog_Name,
+     /* disablement strs */ NULL, NULL },
+
+#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      */ DOVERPROC,
+     /* 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 },
+
+  {  /* entry idx, value */ INDEX_OPT_SAVE_OPTS, VALUE_OPT_SAVE_OPTS,
+     /* equiv idx value  */ NO_EQUIVALENT, 0,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, 1, 0,
+     /* opt state flags  */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
+                          | OPTST_ARG_OPTIONAL | OPTST_NO_INIT, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL,  NULL,
+     /* option proc      */ NULL,
+     /* desc, NAME, name */ zSave_OptsText, NULL, zSave_Opts_Name,
+     /* disablement strs */ NULL, NULL },
+
+  {  /* entry idx, value */ INDEX_OPT_LOAD_OPTS, VALUE_OPT_LOAD_OPTS,
+     /* equiv idx value  */ NO_EQUIVALENT, 0,
+     /* equivalenced to  */ NO_EQUIVALENT,
+     /* min, max, act ct */ 0, NOLIMIT, 0,
+     /* opt state flags  */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) \
+                         | OPTST_DISABLE_IMM, 0,
+     /* last opt argumnt */ { NULL },
+     /* arg list/cookie  */ NULL,
+     /* must/cannot opts */ NULL, NULL,
+     /* option proc      */ optionLoadOpt,
+     /* desc, NAME, name */ zLoad_OptsText, zLoad_Opts_NAME, zLoad_Opts_Name,
+     /* disablement strs */ zNotLoad_Opts_Name, zNotLoad_Opts_Pfx }
+};
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ *  Define the Ntpsnmpd Option Environment
+ */
+tSCC   zPROGNAME[]   = "NTPSNMPD";
+tSCC   zUsageTitle[] =
+"ntpsnmpd - NTP SNMP MIB agent - Ver. 4.2.5p132\n\
+USAGE:  %s [ -<flag> | --<name> ]...\n";
+tSCC   zRcName[]     = ".ntprc";
+tSCC*  apzHomeList[] = {
+       "$HOME",
+       ".",
+       NULL };
+
+tSCC   zBugsAddr[]    = "http://bugs.ntp.org, bugs@ntp.org";
+#define zExplain NULL
+#define zDetail         NULL
+tSCC    zFullVersion[] = NTPSNMPD_FULL_VERSION;
+/* extracted from /usr/local/gnu/share/autogen/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 ntpsnmpdOptions = {
+    OPTIONS_STRUCT_VERSION,
+    0, NULL,                    /* original argc + argv    */
+    ( OPTPROC_BASE
+    + OPTPROC_ERRSTOP
+    + OPTPROC_SHORTOPT
+    + OPTPROC_LONGOPT
+    + OPTPROC_NO_REQ_OPT
+    + OPTPROC_ENVIRON
+    + OPTPROC_NO_ARGS
+    + OPTPROC_HAS_IMMED ),
+    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  */
+    optionUsage,       /* usage procedure */
+    translate_option_strings,   /* translation procedure */
+    /*
+     *  Indexes to special options
+     */
+    { INDEX_OPT_MORE_HELP,
+      INDEX_OPT_SAVE_OPTS,
+      NO_EQUIVALENT /* index of '-#' option */,
+      NO_EQUIVALENT /* index of default opt */
+    },
+    7 /* full option count */, 2 /* user option count */
+};
+
+/*
+ *  Create the static procedure(s) declared above.
+ */
+static void
+doUsageOpt(
+    tOptions*   pOptions,
+    tOptDesc*   pOptDesc )
+{
+    USAGE( EXIT_SUCCESS );
+}
+/* extracted from /usr/local/gnu/share/autogen/optmain.tpl near line 92 */
+
+#if defined(TEST_NTPSNMPD_OPTS) /* TEST MAIN PROCEDURE: */
+
+int
+main( int argc, char** argv )
+{
+    int res = EXIT_SUCCESS;
+    (void)optionProcess( &ntpsnmpdOptions, argc, argv );
+    {
+        void optionPutShell( tOptions* );
+        optionPutShell( &ntpsnmpdOptions );
+    }
+    return res;
+}
+#endif  /* defined TEST_NTPSNMPD_OPTS */
+/* extracted from /usr/local/gnu/share/autogen/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*)&(ntpsnmpdOptions._f))
+
+/*
+ *  This invokes the translation code (e.g. gettext(3)).
+ */
+static void
+translate_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 = ntpsnmpdOptions.pOptDesc;
+        int       ix  = ntpsnmpdOptions.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
+/* ntpsnmpd-opts.c ends here */
diff --git a/ntpsnmpd/ntpsnmpd-opts.def b/ntpsnmpd/ntpsnmpd-opts.def
new file mode 100644 (file)
index 0000000..04bb779
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*- Mode: Text -*- */
+
+autogen definitions options;
+
+#include copyright.def
+#include homerc.def
+#include autogen-version.def
+
+prog-name      = "ntpsnmpd";
+prog-title     = "NTP SNMP MIB agent";
+
+test-main;
+
+flag = {
+    name      = nofork;
+    value     = n;
+    descrip   = "Do not fork";
+    doc = <<-  _EndOfDoc_
+       _EndOfDoc_;
+};
+
+flag = {
+    name      = syslog;
+    value     = p;
+    descrip   = "Log to syslog()";
+    doc = <<-  _EndOfDoc_
+       _EndOfDoc_;
+};
diff --git a/ntpsnmpd/ntpsnmpd-opts.h b/ntpsnmpd/ntpsnmpd-opts.h
new file mode 100644 (file)
index 0000000..1cbc16b
--- /dev/null
@@ -0,0 +1,160 @@
+/*  
+ *  EDIT THIS FILE WITH CAUTION  (ntpsnmpd-opts.h)
+ *  
+ *  It has been AutoGen-ed  Tuesday September 16, 2008 at 03:27:52 AM EDT
+ *  From the definitions    ntpsnmpd-opts.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 header file is not encumbered by AutoOpts
+ *  licensing, but is provided under the licensing terms chosen by the
+ *  ntpsnmpd 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:
+ *
+ * ntpsnmpd copyright 1970-2008 David L. Mills and/or others - all rights reserved
+ *
+ * see html/copyright.html
+ */
+/*
+ *  This file contains the programmatic interface to the Automated
+ *  Options generated for the ntpsnmpd program.
+ *  These macros are documented in the AutoGen info file in the
+ *  "AutoOpts" chapter.  Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_NTPSNMPD_OPTS_H_GUARD
+#define AUTOOPTS_NTPSNMPD_OPTS_H_GUARD
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ *  Ensure that the library used for compiling this generated header is at
+ *  least as new as the version current when the header template was released
+ *  (not counting patch version increments).  Also ensure that the oldest
+ *  tolerable version is at least as old as what was current when the header
+ *  template was released.
+ */
+#define AO_TEMPLATE_VERSION 118784
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+  Choke Me.
+#endif
+
+/*
+ *  Enumeration of each option:
+ */
+typedef enum {
+        INDEX_OPT_NOFORK           =  0,
+        INDEX_OPT_SYSLOG           =  1,
+        INDEX_OPT_VERSION          = 2,
+        INDEX_OPT_HELP             = 3,
+        INDEX_OPT_MORE_HELP        = 4,
+        INDEX_OPT_SAVE_OPTS        = 5,
+        INDEX_OPT_LOAD_OPTS        = 6
+} teOptIndex;
+
+#define OPTION_CT    7
+#define NTPSNMPD_VERSION       "4.2.5p132"
+#define NTPSNMPD_FULL_VERSION  "ntpsnmpd - NTP SNMP MIB agent - Ver. 4.2.5p132"
+
+/*
+ *  Interface defines for all options.  Replace "n" with the UPPER_CASED
+ *  option name (as in the teOptIndex enumeration above).
+ *  e.g. HAVE_OPT( NOFORK )
+ */
+#define         DESC(n) (ntpsnmpdOptions.pOptDesc[INDEX_OPT_## n])
+#define     HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define      OPT_ARG(n) (DESC(n).optArg.argString)
+#define    STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define    COUNT_OPT(n) (DESC(n).optOccCt)
+#define    ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define  ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define  STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define    CLEAR_OPT(n) STMTS( \
+                DESC(n).fOptState &= OPTST_PERSISTENT_MASK;   \
+                if ( (DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+                    DESC(n).fOptState |= OPTST_DISABLED; \
+                DESC(n).optCookie = NULL )
+
+/*
+ *  Make sure there are no #define name conflicts with the option names
+ */
+#ifndef     NO_OPTION_NAME_WARNINGS
+# ifdef    NOFORK
+#  warning undefining NOFORK due to option name conflict
+#  undef   NOFORK
+# endif
+# ifdef    SYSLOG
+#  warning undefining SYSLOG due to option name conflict
+#  undef   SYSLOG
+# endif
+#else  /* NO_OPTION_NAME_WARNINGS */
+# undef NOFORK
+# undef SYSLOG
+#endif  /*  NO_OPTION_NAME_WARNINGS */
+
+/*
+ *  Interface defines for specific options.
+ */
+#define VALUE_OPT_NOFORK         'n'
+#define VALUE_OPT_SYSLOG         'p'
+
+#define VALUE_OPT_VERSION       INDEX_OPT_VERSION
+#define VALUE_OPT_HELP          '?'
+#define VALUE_OPT_MORE_HELP     '!'
+#define VALUE_OPT_SAVE_OPTS     '>'
+#define VALUE_OPT_LOAD_OPTS     '<'
+#define SET_OPT_SAVE_OPTS(a)   STMTS( \
+        DESC(SAVE_OPTS).fOptState &= OPTST_PERSISTENT_MASK; \
+        DESC(SAVE_OPTS).fOptState |= OPTST_SET; \
+        DESC(SAVE_OPTS).optArg.argString = (char const*)(a) )
+/*
+ *  Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR  STMTS( ntpsnmpdOptions.fOptSet &= ~OPTPROC_ERRSTOP )
+#define ERRSTOP_OPTERR  STMTS( ntpsnmpdOptions.fOptSet |= OPTPROC_ERRSTOP )
+#define RESTART_OPT(n)  STMTS( \
+                ntpsnmpdOptions.curOptIdx = (n); \
+                ntpsnmpdOptions.pzCurOpt  = NULL )
+#define START_OPT       RESTART_OPT(1)
+#define USAGE(c)        (*ntpsnmpdOptions.pUsageProc)( &ntpsnmpdOptions, c )
+/* extracted from /usr/local/gnu/share/autogen/opthead.tpl near line 360 */
+
+/* * * * * *
+ *
+ *  Declare the ntpsnmpd option descriptor.
+ */
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+extern tOptions   ntpsnmpdOptions;
+
+#ifndef _
+#  if ENABLE_NLS
+#    include <stdio.h>
+     static inline char* aoGetsText( char const* pz ) {
+         if (pz == NULL) return NULL;
+         return (char*)gettext( pz );
+     }
+#    define _(s)  aoGetsText(s)
+#  else  /* ENABLE_NLS */
+#    define _(s)  s
+#  endif /* ENABLE_NLS */
+#endif
+
+#ifdef  __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_NTPSNMPD_OPTS_H_GUARD */
+/* ntpsnmpd-opts.h ends here */
diff --git a/ntpsnmpd/ntpsnmpd-opts.menu b/ntpsnmpd/ntpsnmpd-opts.menu
new file mode 100644 (file)
index 0000000..886e80a
--- /dev/null
@@ -0,0 +1 @@
+* ntpsnmpd Invocation::            Invoking ntpsnmpd
diff --git a/ntpsnmpd/ntpsnmpd-opts.texi b/ntpsnmpd/ntpsnmpd-opts.texi
new file mode 100644 (file)
index 0000000..edbe226
--- /dev/null
@@ -0,0 +1,52 @@
+@node ntpsnmpd Invocation
+@section Invoking ntpsnmpd
+@pindex ntpsnmpd
+@cindex NTP SNMP MIB agent
+@ignore
+# 
+# EDIT THIS FILE WITH CAUTION  (ntpsnmpd-opts.texi)
+# 
+# It has been AutoGen-ed  Tuesday September 16, 2008 at 03:27:54 AM EDT
+# From the definitions    ntpsnmpd-opts.def
+# and the template file   aginfo.tpl
+@end ignore
+This program has no explanation.
+
+
+
+This section was generated by @strong{AutoGen},
+the aginfo template and the option descriptions for the @command{ntpsnmpd} program.  It documents the ntpsnmpd usage text and option meanings.
+
+This software is released under a specialized copyright license.
+
+@menu
+* ntpsnmpd usage::                  ntpsnmpd usage help (-?)
+* ntpsnmpd nofork::                 nofork option (-n)
+* ntpsnmpd syslog::                 syslog option (-p)
+@end menu
+
+@node ntpsnmpd usage
+@subsection ntpsnmpd usage help (-?)
+@cindex ntpsnmpd usage
+
+This is the automatically generated usage text for ntpsnmpd:
+
+@exampleindent 0
+@example
+ntpsnmpd is unavailable - no --help
+@end example
+@exampleindent 4
+
+@node ntpsnmpd nofork
+@subsection nofork option (-n)
+@cindex ntpsnmpd-nofork
+
+This is the ``do not fork'' option.
+
+
+@node ntpsnmpd syslog
+@subsection syslog option (-p)
+@cindex ntpsnmpd-syslog
+
+This is the ``log to syslog()'' option.
+
diff --git a/ntpsnmpd/ntpsnmpd.1 b/ntpsnmpd/ntpsnmpd.1
new file mode 100644 (file)
index 0000000..aa9351b
--- /dev/null
@@ -0,0 +1,77 @@
+.TH NTPSNMPD 1 2008-09-16 "( 4.2.5p132)" "Programmer's Manual"
+.\"  EDIT THIS FILE WITH CAUTION  (ntpsnmpd.1)
+.\"  
+.\"  It has been AutoGen-ed  Tuesday September 16, 2008 at 03:27:53 AM EDT
+.\"  From the definitions    ntpsnmpd-opts.def
+.\"  and the template file   agman1.tpl
+.\"
+.SH NAME
+ntpsnmpd \- NTP SNMP MIB agent
+.SH SYNOPSIS
+.B ntpsnmpd
+.\" Mixture of short (flag) options and long options
+.RB [ \-\fIflag\fP " [\fIvalue\fP]]... [" \--\fIopt-name\fP " [[=| ]\fIvalue\fP]]..."
+.PP
+All arguments must be options.
+.SH "DESCRIPTION"
+This manual page documents, briefly, the \fBntpsnmpd\fP command.
+Its description is not documented.
+.SH OPTIONS
+.TP
+.BR \-n ", " \--nofork
+Do not fork.
+.sp
+
+.TP
+.BR \-p ", " \--syslog
+Log to syslog().
+.sp
+
+.TP
+.BR \-? , " \--help"
+Display usage information and exit.
+.TP
+.BR \-! , " \--more-help"
+Extended usage information passed thru pager.
+.TP
+.BR \-> " [\fIrcfile\fP]," " \--save-opts" "[=\fIrcfile\fP]"
+Save the option state to \fIrcfile\fP.  The default is the \fIlast\fP
+configuration file listed in the \fBOPTION PRESETS\fP section, below.
+.TP
+.BR \-< " \fIrcfile\fP," " \--load-opts" "=\fIrcfile\fP," " \--no-load-opts"
+Load options from \fIrcfile\fP.
+The \fIno-load-opts\fP form will disable the loading
+of earlier RC/INI files.  \fI--no-load-opts\fP is handled early,
+out of order.
+.TP
+.BR \- " [{\fIv|c|n\fP}]," " \--version" "[=\fI{v|c|n}\fP]"
+Output version of program and exit.  The default mode is `v', a simple
+version.  The `c' mode will print copyright information and `n' will
+print the full copyright notice.
+.SH OPTION PRESETS
+Any option that is not marked as \fInot presettable\fP may be preset
+by loading values from configuration ("RC" or ".INI") file(s) and values from
+environment variables named:
+.nf
+  \fBNTPSNMPD_<option-name>\fP or \fBNTPSNMPD\fP
+.fi
+.aj
+The environmental presets take precedence (are processed later than)
+the configuration files.
+The \fIhomerc\fP files are "\fI$HOME\fP", and "\fI.\fP".
+If any of these are directories, then the file \fI.ntprc\fP
+is searched for within those directories.
+.SH AUTHOR
+David L. Mills and/or others
+.br
+Please send bug reports to:  http://bugs.ntp.org, bugs@ntp.org
+
+.PP
+.nf
+.na
+see html/copyright.html
+.fi
+.ad
+.PP
+This manual page was \fIAutoGen\fP-erated from the \fBntpsnmpd\fP
+option definitions.
index a21d4302705ea238195cb9941c32fddbd359ec6e..bfc326e9da04712ea1ea9f3845c8e1e3f1af2f8f 100644 (file)
  *
  ****************************************************************************/
 
-#include <net-snmp/net-snmp-config.h>
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <signal.h>
-#include <ntpSnmpSubagentObject.h>
 #include <sys/time.h>
-#include <libntpq.h>
+
 #ifdef SOLARIS /* needed with at least Solaris 8 */
 #include <siginfo.h>
 #endif
 
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <ntpSnmpSubagentObject.h>
+
+#include <libntpq.h>
+#include <ntpsnmpd-opts.h>
+
 static int keep_running;
 
 RETSIGTYPE
@@ -45,12 +49,24 @@ stop_server(int a) {
 int
 main (int argc, char **argv) {
   int background = 0; /* start as background process */
-  int syslog = 1; /* use syslog for logging */
+  int use_syslog = 1; /* use syslog for logging */
   char varvalue[1024];
        
 
+       {
+               int optct = optionProcess(&ntpsnmpdOptions, argc, argv);
+               argc -= optct;
+               argv += optct;
+       }
+
+       if (!HAVE_OPT(NOFORK))
+               background = 1;
+
+       if (!HAVE_OPT(SYSLOG))
+               use_syslog = 0;
+
   /* using the net-snmp syslog facility */
-  if (syslog)
+  if (use_syslog)
     snmp_enable_calllog();
   else
     snmp_enable_stderrlog();
@@ -59,7 +75,7 @@ main (int argc, char **argv) {
     netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1);
  
   /* go into background mode, if requested */
-  if (background && netsnmp_daemonize(1, !syslog))
+  if (background && netsnmp_daemonize(1, !use_syslog))
       exit(1);
 
   /* Now register with the master Agent X process */